使用docker安装mysql8及mysql5.7

  • 使用系统:centos7.6

1.安装命令

1.1安装mysql8

mkdir -p /usr/local/mysql/conf.d
mkdir -p /usr/local/mysql/logs
mkdir -p /usr/local/mysql/data
# /etc/localtime:/etc/localtime:ro是将主机的时间与容器中的时间同步一致
# --lower-case-table-names=1关闭mysql8的大小写敏感
# 设置字符集为utf8mb4
docker run -p 3306:3306 --name mysql8 --restart always \
-v /usr/local/mysql/conf.d:/etc/mysql/conf.d \
-v /usr/local/mysql/logs:/var/log \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=<your password> -d mysql:8  --lower-case-table-names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

如果安装的时候需要设置大小写不敏感,请看下文中的bug2。

1.2安装mysql5.7

mkdir -p /usr/local/mysql5.7/conf
mkdir -p /usr/local/mysql5.7/logs
mkdir -p /usr/local/mysql5.7/data
chmod -R 777 /usr/local/mysql5.7
cd /usr/local/mysql5.7/conf
touch my.cnf
vi my.cnf
# 然后添加my.cnf的配置内容
  • docker启动命令
docker run -it \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=<your password> \
-v /usr/local/mysql5.7/conf:/etc/mysql/conf.d \
-v /usr/local/mysql5.7/data:/var/lib/mysql \
-v /usr/local/mysql5.7/logs:/var/log/mysql \
-d --restart=always mysql:5.7

2.修改远程连接

docker exec -it mysql8 /bin/bash
mysql -u root -p
# 使用mysql数据库
use mysql;
# 设置远程访问
# mysql8之前版本的授权语句如下
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
# mysql8版本的授权语句
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 注:如果有需要的话,可以更新一下用户的密码策略(如果使用sqlyog,navicat低版本的话连接需要修改,最新版本的都支持了)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
#刷新权限
FLUSH PRIVILEGES;
# 查看大小写敏感设置
show variables like 'lower%';
# 要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器

3.修改MySQL配置文件

  • 方式一:
    在容器卷对应目录下,如上文映射的文件路径/usr/local/mysql/conf.d下,重新创建my.cnf文件,然后添加需要的配置;
    配置完成后,重启mysql容器。
cd /usr/local/mysql/conf.d
# 创建my.cnf文件,输入所需要的配置
vi my.cnf
# 重启mysql容器
docker restart [容器名称]
  • 方式二:该方式还可以用于因为修改配置文件导致容器无法启动的情况
# 使用
docker inspect [容器名称]
# 查看如下内容
"MergedDir": "/var/lib/docker/overlay2/021******4de82/merged"
# 在主机中,跳转至merged的上级目录,即使用如下命令
cd /var/lib/docker/overlay2/021******4de82/
ls
# 可见如下目录:diff  link  lower  merged  work
# 进入diff目录下的etc/mysql/conf.d下创建my.cnf然后添加配置文件;
# 或者进入merged目录下的etc/mysql/修改my.cnf文件或者在etc/mysql/conf.d下创建my.cnf然后添加配置文件
# 修改完成后重启mysql容器
docker restart [容器名称]

:如果容器一致处于重启状态,请查看容器日志,根据报错,解决问题
查看日志,命令:docker logs [容器名称]

关于mysql8设置大小写问题,请参考下文中的bug2

3bug

bug1.firewalld关闭时使用docker run报错

使用阿里私人云主机firewalld关闭时,使用docker run运行mysql时会报错,解决方案,将firewalld打开好了,或者将docker重启。

bug2.Different lower_case_table_names settings for server (‘1’) and data dictionary (‘0’)

官方解释:ower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.
也就是只有在安装完成之后,初始化数据库之前,修改my.cnf然后再初始化数据库才有效,如:--initialize --lower-case-table-names=1
具体修改见网友博文:
1.Linux下安装MySQL 8.0.12 报错 [ERROR] [MY-011087] [Server] Different lower_case_table_names

参考地址

1.使用Docker运行mysql8,并设置远程访问
2.使用docker安装mysql8.0最新版
3.Centos7 Docker安装mysql5.7

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值