安装mysql
拉取镜像
docker pull mysql
创建mysql数据和配置目录
mkdir /tool/mysql/log
mkdir /tool/mysql/data
mkdir /tool/mysql/share
mkdir /tool/mysql/conf.d
创建配置文件my.cnf
vim /tool/mysql/conf.d/my.cnf
[mysqld]
character-set-server=utf8mb4
port = 3306
basedir=/tool/mysql
datadir=/tool/mysql/data
max_connections=2000
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
lc-messages=en_US
lc-messages-dir=/tool/mysql/share
[mysql]
default-character-set=utf8mb4
[mysql.server]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
创建容器
docker run -d \
-p 3306:3306 \
--name mysql \
--privileged=true \
-v /tool/mysql/log:/var/log/mysql \
-v /tool/mysql/data:/var/lib/mysql \
-v /tool/mysql/conf.d:/etc/mysql/conf.d \
-v /etc/localtime:/etc/localtime:ro \
# 设置密码
-e MYSQL_ROOT_PASSWORD=1234 \
mysql:latest
mysql/conf.d是配置目录
创建完成查询容器列表

如果要配置远程连接的话,需要开放端口3306,如果是云服务器,需要开两次:
-
linux服务器防火墙
# 开放3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 加载规则 firewall-cmd --reload # 查询端口开启情况 firewall-cmd --zone=public --query-port=3306/tcp -
云服务器厂商防火墙,基本上都是在云服务器
防火墙菜单中。
还需要查询当前mysql的对于root用户配置的连接权限
# 进入mysql容器
docker exec -it mysql bash
# 输入mysql连接命令
mysql -uroot -p
# 输入密码
1234
# 使用mysql库
use mysql;
# 查询root用户连接权限,默认应该是 localhost 只支持本地连接
select host,user from user;

我这边是配置完成的,
%代表支持所有ip访问。
改变root用户连接权限
alter user 'root'@'localhost' identified by '1234';
update user set host = "%" where user = 'root';
flush privileges;
补上成功样例:
