Docker部署MySql

记录一下Docker部署MySql的流程和遇到的问题。

部署

拉取镜像:docker pull mysql:8.0.33
设置映射:

1
2
/xxx/MySQL:/var/lib/mysql:rw
/xxx/MySQL/config:/etc/mysql/conf.d:rw

环境变量:

1
MYSQL_ROOT_PASSWORD=xxxxxxxxx

然后把容器run起来。

修改设置

进入docker容器的命令行,连上mysql:

1
2
docker exec -it docker容器名 bash
mysql -uroot -pxxxxxxxxx

改下远程登录设置:

1
2
3
4
5
6
7
use mysql;

select host, user, plugin from user; // 看下root的host是什么配置,并看下加密方式(plugin)

update user set host='%' where user='root'; // 设置允许外部主机访问

FLUSH PRIVILEGES; // 刷新设置

因为我自己需要mysql_native_password方式,所以还要:

1
2
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

然后就可以用了。

遇到的问题

由于我是在新主机上按照旧配置重建数据库,所以在docker pull的时候,使用了旧主机上的latesttag,导致拉下来的镜像是MySql9,在启动的时候一直报错:

1
The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.

后来发现是版本问题。

因为我的需求就是MySql8,所以也没有细究报错原因,指定tag为8.0.33重新启动后,就没问题了。