1. 前言
本文中,我们学习使用Docker安装配置MySQL的方法。
相关文档:
- 《Docker入门篇》
- 《CentOS7设置mysql开机自启动》
- 《CentOS安装多版本MySQL》
- Server System Variables
- Docker安装最新版MySQL8(mysql-8.0.31)教程
- MySQL Product Archives
- MySQL8.0 清华镜像站
2. 安装配置MySQL
2.1. 安装MySQL5.7.x
1、登录dockerhub查看需要的mysql版本。
2、下载mysql镜像(以mysql5.7.28为例)
1 | docker pull mysql:5.7.28 |
3、准备mysql配置
1 | docker run --name tmp-mysql -d -e MYSQL_ROOT_PASSWORD=voidking mysql:5.7.28 |
4、启动mysql服务
1 | docker run --name vk-mysql -d \ |
以上命令:
- 命名容器为vk-mysql,后台运行
- 映射宿主机3306端口到容器3306端口
- 映射宿主机 /opt/data/mysql 目录到容器 /var/lib/mysql ,用于持久化mysql数据库数据
- 映射宿主机 /opt/mysql/conf.d 目录到容器 /etc/mysql/conf.d ,用户持久化mysql配置
- 设置数据库密码为voidking
更多启动参数参考How to use this image。
其中有一个 MYSQL_ROOT_HOST
也是一个常用参数,设置为 %
表示允许所有客户端连接,但是经验证不添加也可以。
PS:mysql启动脚本路径为 /usr/local/bin/docker-entrypoint.sh
5、验证安装
1 | docker ps |
2.2. MySQL5.7.x 配置文件说明
2.2.1. 默认配置文件路径
- 配置文件路径为
/etc/mysql/my.cnf
- 配置文件会先后引用
/etc/mysql/conf.d/
和/etc/mysql/mysql.conf.d
目录中的以cnf结尾的配置文件 /etc/mysql/conf.d/
目录中包含 docker.cnf、mysql.cnf、mysqldump.cnf/etc/mysql/mysql.conf.d
目录中包含 mysqld.cnf
2.2.2. 默认配置内容
my.cnf
1 | !includedir /etc/mysql/conf.d/ |
docker.cnf
1 | [mysqld] |
mysql.cnf
1 | [mysql] |
mysqldump.cnf
1 | [mysqldump] |
mysqld.cnf
1 | [mysqld] |
2.2.3. 自定义配置文件
示例:custom.cnf
1 | [mysqld] |
上面的配置,会开启sql日志。
更多配置参考文档Server System Variables
2.3. 安装MySQL8.0.x
1、登录dockerhub查看需要的mysql版本。
2、下载mysql镜像(以mysql8.0.28为例)
1 | docker pull mysql:8.0.28 |
3、准备mysql配置
1 | docker run --name tmp-mysql -d -e MYSQL_ROOT_PASSWORD=voidking mysql:8.0.28 |
4、启动mysql服务
1 | docker run --name vk-mysql -d \ |
以上命令:
- 命名容器为vk-mysql,后台运行
- 映射宿主机3306端口到容器3306端口
- 映射宿主机 /opt/data/mysql 目录到容器 /var/lib/mysql ,用于持久化mysql数据库数据
- 映射宿主机 /opt/mysql/mysql-files 目录到容器 /var/lib/mysql-files ,用于导出导入mysql文件数据(secure_file_priv)
- 映射宿主机 /opt/mysql/conf.d 目录到容器 /etc/mysql/conf.d ,用户持久化mysql配置
- 映射宿主机 /opt/mysql/log 目录到容器 /var/log/mysql ,用户持久化mysql日志
- 设置数据库密码为voidking
更多启动参数参考How to use this image。
其中有一个 MYSQL_ROOT_HOST
也是一个常用参数,设置为 %
表示允许所有客户端连接,但是经验证不添加也可以。
PS:mysql启动脚本路径为 /usr/local/bin/docker-entrypoint.sh
5、验证安装
1 | docker ps |
2.4. MySQL8.0.x 配置文件说明
2.4.1. 默认配置文件路径
- 配置文件路径为
/etc/mysql/my.cnf
- 配置文件会引用
/etc/mysql/conf.d/
目录中的以cnf结尾配置文件 /etc/mysql/conf.d/
目录中包含 docker.cnf、mysql.cnf
2.4.2. 默认配置内容
my.cnf
1 | [mysqld] |
docker.cnf
1 | [mysqld] |
mysql.cnf
1 | [mysql] |
2.4.3. 自定义配置文件
示例:custom.cnf
1 | [mysqld] |
上面的配置,会开启sql日志。
更多配置参考文档Server System Variables
3. 测试访问MySQL
3.1. 容器内访问MySQL
1 | docker exec -it vk-mysql /bin/bash |
3.2. 其他容器访问MySQL
1、启动mysql client
1 | docker run --name mysql-client -d \ |
2、使用mysql client访问mysql
已知docker宿主机IP为192.168.56.130。
1 | docker exec -it mysql-client /bin/bash |
3.3. 宿主机上访问MySQL
centos7上访问mysql server5.7.x
1 | yum install -y mariadb.x86_64 mariadb-libs.x86_64 |
centos7上访问mysql server8.0.x
1 | wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
ubuntu18上访问mysql server5.7.x
1 | #apt install mysql-client-core-8.0 |
4. 开放访问
1、开放端口
1 | # centos |
2、安装mysql-client,方法同上
3、访问mysql-server
已知docker宿主机IP为192.168.56.130。
1 | mysql -h 192.168.56.130 -P 3306 -u root -p |
输入密码,即可连接到vk-mysql容器服务。