navicat远程登录docker中mysql失败

navicat远程登录docker中mysql失败

问题描述

远程登陆docker下的mysql容器失败
在这里插入图片描述

解决过程

首先排除防火墙的原因,因为我的ubuntu系统没有启动防火墙,然后想着可能是mysql权限问题,于是进入mysql容器

docker exec -it mysql /bin/bash

进入之后输入 mysql -u root -p ,密码输入错误,一脸懵逼
在这里插入图片描述
因为之前在启动容器的时候就设置了环境变量MYSQL_ROOT_PASSWORD=root,按理来说密码应该是root才对,但是密码输入错误,没有搞明白是为什么,通过

docker inspect mysql

发现确实配置成功了
在这里插入图片描述
但是仍然登录失败,没搞清为啥,于是想着,直接不输密码enter进去,发现成功了,通过

select host,user,plugin,authentication_string from mysql.user ;

发现确实没有,root用户下好像确实没有设置密码(authentacation_string为空)
在这里插入图片描述
于是设置密码,此处@后一定是%,因为要保证所有ip(包括远程ip)都可以通过root用户访问数据库(当然,还要设置权限)

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

结果设置成功,重新通过密码登录成功
在这里插入图片描述
开始修改权限(因为一般情况下mysql用户不允许远程连接)

以下语句表示:对于任意ip(%),可以通过root用户访问任何数据库下的任何表(*.*)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

之后用navicat远程登录,一定要用虚拟机上linux系统的ip,不知道可以通过ifconfig查看,确保3307端口在监听状态(咱们这种用docker的在之前启动容器的时候就绑定了3307端口,一般来说该端口都处于监听状态,不放心,可以通过netstat -ano|grep 3307 查看)
在这里插入图片描述
ps:博主其实早就走到这步了,但是测试连接的时候就是通不过(又尝试了直接在配置文件(/mydata/mysql/conf/my.conf)里(mysqld下)设置bind-address=“0.0.0.0 port=3307”,还是不行),万念俱灰下,关掉navicat,再操作,成了,咱也不知道为啥,感觉被针对了,很难受

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值