【Docker】部署 mysql8.0 无法访问

23 篇文章 1 订阅
4 篇文章 0 订阅
文章讲述了在Docker环境下运行MySQL容器时遇到的端口映射问题,以及由于iptables规则导致的连接失败。解决方案包括重启iptables服务和修改Docker容器的配置。此外,还提到了两个可能的连接问题:客户端不支持新的加密方式caching_sha2_password,以及my.cnf配置只允许本地连接,并给出了相应的解决办法。
摘要由CSDN通过智能技术生成

🗽先来说我的是什么情况


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

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

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

在这里插入图片描述

🪁问题描述


  • 使用 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

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

在这里插入图片描述

🪁其他有可能连不上的原因


✔️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

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值