文档首页> 数据管理服务 DAS> 常见问题> 连接管理> ECS自建库(MySQL)连接失败怎么办
更新时间:2023-12-07 GMT+08:00

ECS自建库(MySQL)连接失败怎么办

  1. 报错信息:“Access denied for user 'user_name'@'100.xxx.xx.xx' (using password: YES)”。
    1. 报错原因:ECS自建库用户名或密码不对。

      解决方法:请确认数据库用户名和密码是否正确。如果确认账户名和密码正确,可以通过客户端或命令行工具登录数据库,执行select * from mysql.user where user = 'user_name'命令查看用户信息,如果存在100.%网段的用户,则DAS只能通过100.%网段的数据库用户去连接数据库。user_name @%与user_name @100.%是两个用户,其密码和权限都是独立的,请确认输入的密码是否是user_name @100.%用户的密码。

    2. 报错原因:DAS服务器的IP地址不在您输入用户的白名单中。

      解决方法:使用客户端或命令行工具登录到数据库,创建DAS可以访问的数据库用户。

      create user 'user_name'@'100.%' identified by 'password';
      grant all privileges on *.* to 'user_name'@'100.%';
      • DAS服务器IP地址所在网段为100.%,请根据实际使用需要添加白名单。
      • 请根据实际使用需要给user_name@100.%用户赋予权限。
    3. 报错原因: 使用SSL用户登录,服务端没有开启SSL功能。

      解决方法:请执行如下语句查询用户是否是SSL用户,如果是,则在RDS实例详情页面,将SSL开关打开。其中,ssl_type字段有值即表示此用户是SSL用户。

      select user, host, ssl_type from mysql.user where user = 'user_name';
  2. 报错信息: Host 'xxx.xxx.xx.xx' is not allowed to connect to this MySQL server。

    报错原因: 您输入的数据库用户不允许远程登录MySQL(如root用户,mysql.user表中只设置了root@localhost用户,指定用户只能本地登录)。

    解决方法:使用客户端工具或命令行登录MySQL,创建可以远程登录的用户。
    create user 'user_name'@'100.%' identified by 'password'; 
    grant all privileges on *.* to 'user_name'@'100.%';
    • DAS服务器IP地址所在网段为100.%,请根据实际使用需要添加白名单。
    • 请根据实际使用需要给user_name@100.%用户赋予权限。
  3. 报错信息: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server。
    1. 报错原因: ECS设置的安全组规则不支持此端口被访问

      解决方法:请参考查看并放通ECS实例安全组规则

    2. 报错原因: ECS虚拟机设置的防火墙策略不允许此端口被访问。

      解决方法:请参考查看并放通防火墙

    3. 报错原因:远程访问MySQL数据库,服务端侧进行的DNS解析动作,耗时太长导致连接实例超时。

      解决方法:请按照以下操作进行修复。

      1. 在/etc/my.cnf路径下查找MySQL数据库的配置文件,在“[mysqld]”下,输入如下内容,并保存退出。
        skip-name-resolve

        MySQL数据库的配置文件,默认位置为“/etc/my.cnf”,若您将配置文件指定位置存放时,需对应调整。

      2. 重启数据库服务"systemctl restart mysqld",尝试再次连接。
  4. 报错信息: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server

    报错原因:DAS服务器与实例网络不通。

    解决方法:请检查实例的防火墙配置是否正常、是否开放对应端口,如防火墙配置异常或未开放对应端口请修复后再次尝试连接实例。修复后还无法解决,请提交工单联系客服人员协助处理

  5. 报错信息:Instance connect timeout, please login again.

    报错原因:DAS服务器连接超时。

    解决方案:请按照以下方法进行检查并尝试修复。
    1. 请远程登录ECS虚拟机,执行“iptables -S | grep input”命令检查实例的防火墙配置是否正常。如果自建库端口号没在开放的白名单中,您可以新增一条iptables规则或通过“systemctl stop iptables”命令关闭防火墙,保证端口能被访问后再次尝试连接实例。
    2. 请远程登录ECS虚拟机,执行“ps -ef | grep mysql”命令检查数据库进程是否正常,mysqld_safe进程与mysqld进程均存在则为正常。如进程不存在请执行“systemctl start mysqld”命令重启数据库后再次尝试连接实例。
    3. 如上述方法均无法解决,请提交工单联系客服人员协助处理。

连接管理 所有常见问题

more