Docker 安装Mysql 如何使用,遇到navicat连不上以及Access denied for user ‘root‘@‘localhost‘ (using password: YES)

文章讲述了作者在使用Docker运行MySQL容器时遇到的连接问题,包括使用不同主机地址、安装yum对连接的影响,以及如何通过设置环境变量解决localhost连接问题。

修正: 这个原因就是 跳板机 的账号密码错误,导致连不到远程数据库,只要把跳板机服务器账号密码输对,保存,重启 navicat 就搞定了

下面是我使用的镜像,以及mysql实例运行脚本

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d centos/mysql-57-centos7

启动后,在宿主机用yum安装了mysql,执行,可以连接,宿主机安装yum install -y mysql非常重要,否则用navicat是连接不上的,但只要装了,哪怕你yum remove mysql,貌似都可以连上,这个很神奇

 mysql -uroot -p -h 127.0.0.1

执行,不可以,原因这个会找宿主机的sock进行连接,但是宿主机和容器直接无法通过sock互联,所以,报mysql.sock找不到,如果你想让它找到,那就得将这个文件夹和容器的设为共享卷,但是风险很大,因为这个目录宿主机还要放其他东西呢!两者共享必然混乱,请不要如此尝试

mysql -uroot -p

 所以,就只能用tcp/ip链接

进入容器内,如果用localhost方式登录也是莫名奇妙报错,必须用-h 127.0.0.1才能进去,然后藏重新改密码

docker exec -it --user root mysql /bin/bash

 先用-h 127.0.0.1进去,再用下面的SQL改,然后flush,重启docker就可以,但感觉没意义,可能docker启动时,-e 环境没有配置localhost的密码,只是配置了127.0.0.1的密码,但这个没意义,这里之所以写,就是图个明白

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456' PASSWORD EXPIRE NEVER;

 之前一直navicat一直连不上,后来宿主机装了yum install -y mysql,然后用-h docker容器的内网可以连

后来发现127.0.0.1也可以了,有点蒙,我好像啥都没干,就好了,没安装yum install -y mysql是这不行的

 远程用navicat也发现可以连了,无论是用172.17.0.2,还是127.0.0.1,这个是真神奇,为了避免下次再盲目入坑,把整个过程记录下来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

森叶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值