docker 安装mysql完美教程 建议收藏

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 记录docker安装mysql步骤,并处理遇到的问题

记录docker安装mysql步骤,并处理遇到的问题


快速完成

直接复制粘贴跟着做即可快速完成,可以不用查看详细步骤


docker pull mysql:5.7

docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

cd /usr/local/mysql/conf

vim my.cnf

粘贴下面内容并保存


[client]

default_character_set=utf8

[mysqld]

collation_server=utf8_general_ci

character_set_server=utf8

docker restart mysql

使用工具测试(记得要打开端口),root用户密码为123456


详细步骤

首先搜索镜像

docker search mysql


拉取镜像

搜索出来的第一个就行,不指定版本就获取最新版,我这里用5.7


docker pull mysql:5.7


创建容器(运行镜像)

内外都使用3306端口(确保你的宿主机3306端口没有被占用,比如你的宿主机也装了mysql),并指定root用户密码为123456


docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql mysql:5.7


进入容器

在容器内部连接mysql,创建一个数据库,测试mysql是否正常使用


docker exec -it mysql /bin/bash


创建一个表,并插入数据,也都是ok的



本地使用连接工具连接

在本地使用Navicat工具连接,并插入记录、查询也都是没有问题的



但是,在插入中文的时候报错了



修改字符集

中文报错肯定是字符集问题了,在容器中查看字符集(客户端工具会把部分字符集处理成本地字符集),可以看到大部分都不是utf8


show variables like 'character%';

现在mysql的配置文件还是在容器里面,并没有映射到宿主机,修改起来不是很方便,并且也不安全,容器删除就没有了


此时就需要用到容器数据卷了,不了解的可以查看上篇博文:点这里


使用容器数据卷挂载mysql数据、配置文件、日志

把上面那个容器删了,重新创建一个容器,这次命令如下


docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

挂载三个目录,分别是日志、数据、配置文件


创建mysql的配置文件

上面已经挂载了mysql的配置文件目录,就可以直接在宿主机操作对应的目录了


在配置文件目录新建一个my.cnf配置文件,写入下面内容,设置客户端和mysql服务器端编码都为utf8

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8



改完配置文件后,重启mysql容器,再次进入容器查看字符集,可以看到已经全部正确



再次创建库表,插入中文测试,成功插入



并且mysql的数据目录也已经挂载到本地了,就算把容器删除创新创建一个容器,也使用同样的数据卷,就可以恢复之前创建的库表


推荐阅读:做了个springboot接口参数解密的工具,我给它命名为万能钥匙(已上传maven中央仓库,附详细使用说明)


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL安装
MySQL安装
12 1
|
1天前
|
关系型数据库 MySQL Linux
在Linux系统中安装MySQL数据库
在Linux系统中安装MySQL数据库
25 3
|
1天前
|
Ubuntu 关系型数据库 MySQL
|
4天前
|
安全 关系型数据库 MySQL
解决centos7.0安装mysql后出现access defind for user@'localhost'的错误
在使用yum 安装完mariadb, mariadb-server, mariadb-devel后
7 0
|
6天前
|
Ubuntu 网络安全 数据安全/隐私保护
百度搜索:蓝易云【docker通过dockerfile安装sftp教程。】
现在,你已经通过 Dockerfile 成功安装了 SFTP,并且可以使用指定的用户名和公钥进行远程访问。请确保替换示例中的用户名、密码和公钥为自己的实际值。
91 1
|
7月前
|
消息中间件 Shell RocketMQ
百度搜索:蓝易云 ,常用环境部署—Docker安装RocketMQ教程!
通过按照上述步骤,您可以在Docker中成功安装和部署RocketMQ。请注意,上述命令仅提供了一个基本的安装和配置过程,具体配置和使用可以根据您的需求进行进一步调整。确保在执行命令之前,您已经安装并配置好Docker环境。
130 0
|
网络协议 应用服务中间件 程序员
Docker实战:Docker安装Gitlab教程,非常实用
GitLab 是一个用于代码仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务平台, 通过该平台可以实现Github类似的web系统,可以实现浏览代码、管理项目、管理团队人员、管理代码分支、代码提交记录等功能。Gitlab是目前互联网公司最流行的代码版本控制平台。
Docker实战:Docker安装Gitlab教程,非常实用
|
6天前
|
关系型数据库 MySQL 数据库
docker 安装mysql(踩坑踩得想哭 详细解决教程)ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using pa
docker 安装mysql(踩坑踩得想哭 详细解决教程)ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using pa
38 1
|
6天前
|
Shell 网络安全 开发工具
docker 安装 gitlab 教程详解
docker 安装 gitlab 教程详解
56 0
|
6天前
|
消息中间件 安全 网络安全
【网络安全 | Kali】基于Docker的Vulhub安装教程指南
【网络安全 | Kali】基于Docker的Vulhub安装教程指南
71 0