navicat 连接docker容器里面mysql服务失败解决
我在linux服务器上面装了docker,启动了docker里面的mysql服务,在本地电脑nacicat premium 12连接服务器上面的mysql服务一直失败,连接不上,出现这样的错误。1.进入mysql容器里面,命令:docker exec -it acbcfcdb9eeb(容器id) (镜像名称也可容器id也可) /bin/bash。这样处理后,再用 Navicat 连接 linux的
·
容器默认只允许root本地访问,需要设置对外远程访问的root用户
一、报错情况:
我在linux服务器上面装了docker,启动了docker里面的mysql服务,在本地电脑nacicat premium 12连接服务器上面的mysql服务一直失败,连接不上,出现这样的错误。
二、解决办法:容器默认只允许root本地访问,需要设置对外远程访问的root用户
1.进入mysql容器里面,命令:docker exec -it acbcfcdb9eeb(容器id) (镜像名称也可容器id也可) /bin/bash 。
sudo docker exec -it mysql mysql -uroot -p

- 先查看当前存在的 root 用户
登录 MySQL 后,执行以下命令,查看 root 用户的主机限制(Host 字段):
SELECT User, Host FROM mysql.user WHERE User = 'root';

3. 根据查询结果处理
如果结果中有 ‘root’@‘localhost’ 但没有 ‘root’@‘%’:
说明 root 用户默认只允许本地(容器内部)访问,则需要创建一个可远程访问的root用户即 ‘root’@‘%’ 用户,再修改密码:
sql
-- 创建允许远程访问的 root 用户
CREATE USER 'root'@'%' IDENTIFIED BY 'root';
-- 授予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
-- 再修改密码加密方式(如果需要)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

- 验证配置
修改后再次执行刷新权限命令,然后退出 MySQL 并重启容器(可选):
# 退出 MySQL
exit;
# 重启容器(使配置生效)
docker restart mysql

这样处理后,再用 Navicat 连接 linux的ip:3306 通常就能成功了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)