CentOS7.6 用Docker安装Mysql
Docker的安装请参考前一篇CentOS7.6安装docker。
1.Docker仓库中查找Mysql
docker search mysql
2.下载Mysql镜像
docker pull mysql
也可以到https://hub.docker.com/_/mysql?tab=tags,根据TAG下载需要的版本
docker pull mysql:8.0
3.如果下错版本要删除镜像
停止container,才能够删除images
docker stop $(docker ps -a -q)
删除container则使用如下指令
docker rm $(docker ps -a -q)
查看镜像
docker images
根据ID删除镜像,如上述id为 c7109f74d339
docker rmi c7109f74d339
如果ID为空
docker rmi $(docker images | grep "^
如果删除所有镜像
docker rmi $(docker images -q)
4.查看镜像版本
启动容器并进入交互界面
docker run -it mysql /bin/bash
mysql -V
用 exit 指令退出交互界面并停止容器
5.配置mysql相关文件及目录
数据文件目录 /root/runenv/opt/docker/mysql/data
错误日志目录及文件 /root/runenv/opt/docker/mysql/log/error.log
配置文件目录 /root/runenv/opt/docker/mysql/conf/
docker.cnf(不创建也可以)
[mysqld]
skip-host-cache
skip-name-resolve
mysqldump.cnf
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
mysql8.cnf
[mysql]
default-character-set = utf8mb4
[mysql_safe]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address = 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# 修改mysql默认字符集
init_connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
default-authentication-plugin = mysql_native_password
default-time_zone = '+8:00'
# 如需要可以设置sql_mode
# sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
# sql_mode = 'STRICT_ALL_TABLES,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'
6.启动Mysql
docker run --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -v /root/runenv/opt/docker/mysql/data:/var/lib/mysql -v /root/runenv/opt/docker/mysql/conf:/etc/mysql/conf.d -v /root/runenv/opt/docker/mysql/log:/var/log/mysql --privileged=true -d mysql:latest
--name 给容器起个名字
-p 端口映射 主机端口 : 容器端口
-e MYSQL_ROOT_PASSWORD root账户密码
-e TZ 容器的时区
-v 分别把本地的配置文件目录、数据文件目录、错误日志目录挂载到容器对应的目录上(可参考上边创建的目录和配置文件中的目录)
-d 守护进程,一直执行,后边是镜像名字及TAG
7.测试数据库是否OK
通过客户端连接数据库并创建库和表
docker stop mysql容器ID
docker rm mysql容器ID
用第6步的命令启动新的mysql容器,如果之前建的库、表仍存在,则mysql安装成功
8.遇到的问题
问题一:
配置文件中没有设置 default-authentication-plugin = mysql_native_password 时,用客户端登录时报错
Authentication plugin ‘caching_sha2_password’ cannot be loaded
解决办法:
配置文件中加入 default-authentication-plugin = mysql_native_password
清空数据文件目录
停止、删除原Mysql容器, 重新启动新的容器即可
问题二:
配置的log错误日志,容器启动不起来,通过 docker logs 容器ID 查到报错如下
解决方法:
将错误日志目录通过 chown -R 999:999 /root/runenv/opt/docker/mysql/log/ 授权即可
9.如遇到时区问题,可以如配置文件中增加 default-time_zone 时区设置,run命令中增加 TZ 设置即可