无法远程连接Linux系统ECS实例中自建MySQL服务器的常见错误及解决办法

无法远程连接Linux系统ECS实例中自建MySQL服务器的常见错误及解决办法

更新时间:2019-07-21 11:14:00

概述

本文主要介绍搭建在Linux系统的ECS实例上的MySQL服务器,无法远程连接的常见错误及解决办法。

 

详细信息

以下列举一些常见问题及解决办法。

 

未授权导致无法连接MySQL服务

问题现象

在ECS实例内部连接MySQL服务正常,远程连接则会出现如下错误 。

EHost 'XX.XX.XX.XX' is not allowed to connect to this MySQL serverConnection closed by foreign host.

系统显示类似如下。

 

解决方案

  1. 确认MySQL服务监听的是0.0.0.0地址。
  2. 检查实例是否开启防火墙,建议先关闭防火墙进行测试。
  3. 确认MySQL服务是否开启远程登录,可通过如下方法开启。
    • 登录数据库,选择mysql数据库。将user表中的host项,从localhost改为'%'
    • 登录数据库,创建一个远程连接的用户。

 

监听地址错误导致无法连接MySQL服务

问题现象

MySQL服务对127.0.0.1地址进行监听,导致外部无法远程连接。

 

解决方案

在MySQL服务配置文件中,注释掉bind-address参数,然后重启即可。

 

连接时报“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 '[$Password]' with grant option;
    flush privileges;
    注:[$Password]为密码。
  3. 检查my.ini配置文件是否设置了bind-address参数,将该条注释掉。
  4. 在my.ini配置文件添加skip-name-resolve参数。
  5. 修改hosts.allow配置文件,增加如下配置。
    mysqld-max : ALL :ALLOW

 

版本问题导致无法连接MySQL服务

问题现象

自建的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]为数据库用户名。

 

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。

 

适用于

  • 云服务器 ECS