CentOS7.6 用Docker安装Mysql

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 "^<none>" | awk "{print $3}")

如果删除所有镜像

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 设置即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值