一. 创建MySql服务

  1. 拉取官方镜像
docker pull mysql  #拉取最新版MySql 8.0.26
  1. 查看镜像信息
docker images |grep mysql
  1. 启动MySql镜像
# 无目录挂载启动方式
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

# 目录挂载启动方式
docker run -p 3306:3306 --name mysql \
-v /mnt/mysql/conf:/etc/mysql \
-v /mnt/mysql/logs:/var/log/mysql \
-v /mnt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:latest
  • –name:容器名,此处命名为mysql
  • -e:环境变量配置信息,此处配置mysql的root用户的登陆密码
  • -p:端口映射,此处映射 主机3306端口 到 容器的3306端口
  • -d:后台运行容器,保证在退出终端后容器继续运行
  • -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

二. 连接MySql

  1. 进入Docker容器本地连接mysql客户端
docker exec -it mysql bash
mysql -uroot -p123456
  1. 设置root远程访问权限
mysql> use mysql;
Database changed
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

# 设置root远程访问
mysql> update user set host='%' where user='root' and host='localhost';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
# 刷新策略
mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)
# 给root用户授权
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
Query OK, 0 rows affected (0.00 sec)
# 刷新策略
mysql> flush privileges;

  1. 关闭防火墙
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
  1. 使用客户端连接工具测试