在使用自建 MySQL 数据库的时候,偶尔会遇到无法连接 MySQL 服务器的情况,以下列举一些常见问题及解决办法:
账号没有授权导致无法连接 MySQL,报错:'xxxx' is not allowed to connect to this MySQL Server
问题现象
服务器上部署 MySQL 在本地直接连接服务器是没有问题的,远程连接 MySQL 会显示错误 。
报错:EHost 'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host.
解决方案
查看 MySQL 监听的地址就是 0.0.0.0 。这种情况请先检查两个地方
1、服务器是否开启了防火墙,请先关闭防火墙测试
2、MySQL 是否没有打开远程登录
打开远程登陆有两种方法。
(1 )该表:在本机登入 MySQL 后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从 ”localhost” 改为 '%'。
(2 )授权法:为 MySQL 创建一个 远程连接的用户
一般这样配置就没有问题了。
端口监听不对导致无法连接 MySQL
MySQL 监听在 127.0.0.1 上导致外部无法连接,如下图:
修改 MySQL 配置文件里面的 bind-address,如下图重启即可。
MySQL 连接报错:Lost connection to MySQL server at 'reading initial communication packet'
问题现象
MySQL 远程连接报错:Lost connection to MySQL server at 'reading initial communication packet'
解决方案
1、检查是否有防火墙限制2、检查 MySQL 是否有访问权限
use mysql;Grant all privileges on *.* to 'root'@'%' identified by '密码' with grant option;flush privileges;
3、检查 my.ini 文件里是否设置了 bind-address 参数,如果有将该条注释掉即可。
4、在 my.ini 中添加 skip-name-resolve
vi /etc/my.cnf[mysqld]skip-name-resolve #增加这个
5、修改 hosts.allow
vi /etc/hosts.allowmysqld-max : ALL :ALLOW #增加这个
版本问题导致无法连接 MySQL,报错:Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled)
问题现象
ECS Linux 主机本机 MySQL 客户端版本为 5.6,连接低版本的 MySQL 客户端
报错ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refu sed (client option 'secure_auth' enabled)
问题原因
由于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储;但是客户端升级之后采用了新的密码格式 。mysql5.6版本遇到这种不一致的情况就会拒绝连接 。
解决方案
连接时增加 --secure-auth 参数,连接命令如下:
mysql -h host -u username --secure-auth -p
详细的表述可以参考
MySQL 的手册
如果问题还未能解决,您可以到阿里云社区进行
免费咨询,或联系云市场商家
寻求帮助。