docker 部署 mysql8.0 无法访问

文章目录

  • 先来说我的是什么情况
    • 问题描述
    • 解决方法:
      • ✔️1 重启iptables
      • ✔️2 重启docker
    • 其他有可能连不上的原因
      • ✔️1 客户端不支持caching_sha2_password的加密方式
      • ✔️2 my.conf 配置只有本机可以访问

先来说我的是什么情况


这是我的启动命令,发现没有我这里是没有指定端口的

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这段命令的来源是docker 镜像仓库官网

docker 部署 mysql8.0 无法访问_第1张图片

问题描述


  • 使用 docker ps 查看 发现端口有没有什么不一样没 正常的都有 0.0.0.0:端口 我的这个没有
    在这里插入图片描述
  • 于是我把这个容器删除了docker rm -f 容器Id,重新创建了一个docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
  • 我寻思这下应该没有问题了吧,结果…
    在这里插入图片描述启动docker容器时报iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport错误
    错误原因:
    在防火墙中默认 nat 是 REJECT的,所以端口映射被拒绝。

解决方法:


✔️1 重启iptables


vim /etc/sysconfig/iptables
##注释掉下面这一行,这行的意思是拒绝掉所有的FORWARD,拒绝的提示信息是icmp-host-prohibited(禁止)
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
 
#重启iptables
systemctl restart iptables.service 

✔️2 重启docker


我自己是用这个方式解决的,我自己对防火墙这块不是很了解,就不过多的分析了

systemctl restart docker

可以看到重启之后再去执行启动命令就可以了
在这里插入图片描述

docker 部署 mysql8.0 无法访问_第2张图片

其他有可能连不上的原因


✔️1 客户端不支持caching_sha2_password的加密方式


# 进入mysql容器内容
docker exec -it mysql bash
# 进入输入下面命令 ,然后输入密码
mysql -u root -p
# 查看用户列表
select host,user,plugin,authentication_string from mysql.user;
# 修改 mysql_native_password 加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 重启一下容器即可
docker restart mysql

✔️2 my.conf 配置只有本机可以访问


# 进入mysql容器内容
docker exec -it mysql bash
cd /etc/mysql/
cat my.cnf
# 改成这个 或者注释掉
bind-address=0.0.0.0
# 重启一下容器即可
docker restart mysql

在这里插入图片描述

你可能感兴趣的:(docker,linux,日常问题记录,docker,容器,运维,mysql)