一、遇到的问题
MySQL 8.0服务实例已成功部署并正常运行,本地通过mysql -uroot -p命令行客户端可正常访问数据库,且基础SQL操作无异常。但存在以下连接异常:
- 第三方客户端工具异常
使用Navicat等图形化工具连接时,持续返回Access denied或Connection timed out错误。 - 跨服务器访问失败
其他物理服务器/虚拟机通过JDBC、ODBC等协议远程连接时,均无法建立有效会话。
二、核心排查步骤
检查用户权限配置(关键步骤)
执行SQL语句查看root用户访问权限:
SELECT Host,User,plugin FROM mysql.user WHERE User='root';
若Host列未包含%符号或远程服务器IP,需执行授权语句:
CREATE USER 'root'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;:ml-citation{ref="3,6" data="citationList"}
验证身份认证插件
MySQL 8.0默认使用caching_sha2_password插件,部分客户端需改为传统模式:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';:ml-citation{ref="3,6" data="citationList"}
三、修改配置文件my.cnf (关键步骤)
[mysqld]
bind-address = 0.0.0.0
四、网络与端口配置
检查防火墙状态
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload:ml-citation{ref="2,8" data="citationList"}
五、重启mysql
docker restart mysql