在Linux系统的ECS实例上自建MySQL服务器,可能会出现无法远程连接异常情况,本文主要介绍该情况下的常见错误及解决办法。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
以下列举一些常见问题及解决办法。
在ECS实例内部连接MySQL服务正常,远程连接则会出现如下错误 。
EHost 'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host.
系统显示类似如下。
0.0.0.0
地址。'%'
。
MySQL服务对127.0.0.1
地址进行监听,导致外部无法远程连接。
在MySQL服务配置文件中,注释掉bind-address参数,然后重启即可。
远程连接MySQL服务时,报如下错误。
Lost connection to MySQL server at 'reading initial communication packet'
use mysql;
Grant all privileges on *.* to 'root'@'%' identified by '[$Password]' with grant option;
flush privileges;
注:[$Password]为密码。
mysqld-max : ALL :ALLOW
自建的MySQL服务器版本为5.6,远程连接时提示如下错误。
ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)
由于服务器端的密码管理协议陈旧,使用的是旧有的用户密码格式存储,但客户端升级之后采用了新的密码格式 。MySQL 5.6版本遇到这种不一致的情况就会拒绝连接 。
连接时添加--secure-auth
参数,连接命令如下所示。详细的表述可以参考 MySQL手册。
mysql -h [$Host] -u [$Username] --secure-auth -p
注:[$Host]为ECS实例域名或IP,[$Username]为数据库用户名。