1. 拉取镜像 {#1.-%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F}
# 拉取mysql镜像
docker pull mysql
# 查看镜像是否拉取成功
docker images
2. 创建持久化数据文件夹 {#2.-%E5%88%9B%E5%BB%BA%E6%8C%81%E4%B9%85%E5%8C%96%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6%E5%A4%B9}
# 挑选一个你感兴趣的目录
cd /home
# 创建一个你喜欢的目录
mkdir docker
cd docker
# 创建你喜欢的mysql持久化文件夹目录
mkdir mysql
3. 启动mysql容器 {#3.-%E5%90%AF%E5%8A%A8mysql%E5%AE%B9%E5%99%A8}
#MYSQL_ROOT_PASSWORD即为数据库登录密码
docker run -d --restart=always --name mysq-8.0 -p 5831:3306 -e MYSQL_ROOT_PASSWORD=Yt,6JhDEoaTZVFAm -v /home/docker/mysql:/var/lib/mysql mysql --lower_case_table_names=1
4. 进入容器开启远程配置 {#4.-%E8%BF%9B%E5%85%A5%E5%AE%B9%E5%99%A8%E5%BC%80%E5%90%AF%E8%BF%9C%E7%A8%8B%E9%85%8D%E7%BD%AE}
# 查看运行的容器Id
docker ps
#找到mysql的容器ID
docker exec -it 容器ID /bin/bash
#登录mysql
mysql -uroot -p
mysql> use mysql;
mysql> select user,host from user;
#增加远程登录权限
mysql> update user set host='%' where user='root';
#修改mysql的plugin,使用mysql_native_password
mysql> alter user root@'%' identified with mysql_native_password by '你要设置的密码';
mysql> exit;
5. 防火墙开放端口 {#5.-%E9%98%B2%E7%81%AB%E5%A2%99%E5%BC%80%E6%94%BE%E7%AB%AF%E5%8F%A3}
如果你是云服务器,想要开放端口,请在安全组中设置
#开放5831端口
firewall-cmd --zone=public --add-port=5831/tcp --permanent
#防火墙服务重启,以便加载新开放的端口
systemctl restart firewalld.service
6. 开放远程访问 {#6.-%E5%BC%80%E6%94%BE%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AE}
8.0版本以前
# 使用用户名密码登录 mysql
mysql - uroot - p
# 切换至 mysql 数据库
USE mysql;
# 假设你的用户名为 root ,密码是 12345678,那么以上语句允许 IP 为 114.114.114.114 的用户登录至数据库。
GRANT ALL PRIVILEGES ON *.* TO root 114.114.114.114 IDENTIFIED BY "12345678" WITH GRANT OPTION;
# 使更改生效
FLUSH PRIVILEGES;
8.0以后
# 使用用户名密码登录 mysql
mysql - uroot - p
# 切换至 mysql 数据库
USE mysql;
# 更新域属性,'%'表示允许所有外部 IP 访问数据库。
update user set host='%' where user ='root';
# 授权语句,授权 root 用户使用任意 IP 访问数据库。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 使更改生效
FLUSH PRIVILEGES;