一. 创建MySql服务
- 拉取官方镜像
docker pull mysql #拉取最新版MySql 8.0.26
- 查看镜像信息
docker images |grep mysql
- 启动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
- 进入Docker容器本地连接mysql客户端
docker exec -it mysql bash
mysql -uroot -p123456
- 设置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;
- 关闭防火墙
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
- 使用客户端连接工具测试