关于使用sqlyog 远程连接Linux中使用docker创建的mysql可能出现的问题和解决方案

我是在看网上视频时,照着做出现了下列问题。

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘虚拟机ip地址’

我在遇到这个问题时,使用的解决方案是关闭防火墙。当然,你也可以去尝试开放相应的端口号。

之后尝试重新启动相应的容器

相关代码:

#关闭防火墙
systemctl stop firewalld

#关闭防火墙的开机自启动
systemctl disable firewalld

#查看防火墙的状态
systemctl status firewalld

 

另外,可能用得到的docker指令。 在创建成功并使用容器(run) 时发现问题,我们一般将指定容器关闭、启动或重启即可,无需重新创建。

#停止指定容器 以mysql为例
docker stop mysql

#启动指定容器 以mysql为例
docker start mysql

#重新启动指定容器
docker restart mysql

 

再次尝试时,可能又会出现ERROR 2058:

f3905c3372ec4a4daab4a9db046f6b11.png

出现这个问题是因为: MySQL8之前的版本的加密规则是mysql_native_password ,而在MySQL8之后,加密规则是caching_sha2_password,这里所使用的解决方法是把MySQL8用户登录密码的加密规则改回为mysql_native_password。

即:在linux中用docker进入mysql相关的容器并登录mysql进行密码加密规则的修改,并不是说用windows小黑窗修改。

最后我所尝试的mysql 容器创建代码:

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_HOST='%' \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  --network hm-net\
  mysql

其中多了一句(和某马程序员网课给的资料不一样的地方):

-e MYSQL_ROOT_HOST='%' \

如果后续方法不成功,可以删掉原来的mysql容器,尝试上述创建mysql容器的代码,然后再重新试一遍下列方法。

Error 2058   修改方法:

首先通过docker进入mysql容器(第一个mysql的含义),命名不一样请修改;并登录mysql,如果你的用户名不是root,或密码不是123,则注意修改一下

docker exec -it mysql mysql -uroot -p123

ecf9cbd5af44425f97a9ad62af7f6a9d.png

e6547c1f6d5c44b3b05720f4ee8b8d5b.png

查询user,host可与看出

6fdfd3badcaf4110b1a1455f2bf17909.png

 

进入mysql后输入:

# 先输入use
use mysql;
#如果密码不是123, 则修改成你的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';

FLUSH PRIVILEGES;

ce90322e35af442fa4133fcb21567d68.png

基本上到这里我再去尝试连接就成功了。4b2a119d04b7434d91542467c4d5c201.png

 

看其他教程,有的方案是下面这一行代码,我试了之后并没有用,可能其他问题使用这个方法是有用的。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

 

关于重新创建mysql容器的代码:

#查看容器
docker ps

#删除指定容器 以mysql为例
docker rm -f mysql

#创建并运行容器 同前文所述
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_HOST='%' \
  -e MYSQL_ROOT_PASSWORD=123 \
  -v /root/mysql/data:/var/lib/mysql \
  -v /root/mysql/conf:/etc/mysql/conf.d \
  -v /root/mysql/init:/docker-entrypoint-initdb.d \
  --network hm-net\
  mysql

 

最后,如有问题请评论区指正,谢谢阅读!

 

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dnasZJ2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值