环境

  • 操作系统:CentOS 7
  • Docker版本:20.10.0

准备

提前开放好mysql需要用到的端口号,有的还需要去服务器的控制中心添加放行端口号,CentOS 7有关开放端口号的操作可以看这篇文章:CentOS 7 开启防火墙及开放指定端口

拉取镜像,默认拉取最高版本,目前应该是mysql 8

Docker常用的操作命令可以查看这篇文章:Docker常用命令[持续更新]

docker pull mysql

拉取指定版本

docker pull mysql:5.7

运行容器

docker run --restart=always -d -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name docker_mysql mysql

参数说明

  • run:运行
  • --restart=always:当docker重启时,该容器也会重新启动
  • -d:后台运行
  • -p:映射端口号,容器内部和服务器内部关联
  • --privileged=true:设置允许root用户登陆
  • -v /docker/mysql/conf/my.cnf:/etc/my.cnf:将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
  • -v /docker/mysql/data:/var/lib/mysql:同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
  • -e MYSQL_ROOT_PASSWORD=123456:设置root账户密码为123456
  • --name docker_mysql mysql:启动一个mysql并设置docker容器名称为docker_mysql

进入容器

docker exec -it docker_mysql(docker容器名称) bash

连接mysql

mysql -uroot -p

创建用户

创建一个test账户密码为123456,并且允许远程登陆,如果想要test账户只能安装mysql的这台机器登陆,就把’%’改成’localhost’

CREATE USER 'test'@'%' IDENTIFIED BY '123456';

授权

授予test账户所有权限

grant all on *.* to 'test'@'%';

注意

如果安装的是mysql8,需要更改加密方式才能使用Navicat工具远程连接,所有需要远程连接的账户都要更改,如果不是mysql8,比如mysql5.7是不需要的

更改加密方式

ALTER USER 'test'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

更新密码

ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限

flush privileges;

退出

exit;

执行两遍,第一次退出mysql,第二次退出docker容器