华为云云数据库rdsRDS for MySQL实例无法访问_云淘科技

故障描述

客户端无法连接数据库,连接数据库时返回如下报错信息:

故障一

ERROR 1045 (28000): Access denied for user ‘root'@‘192.168.0.30' (using password:YES)

故障二

ERROR 1226 (42000):User‘test' has exceeded the‘max_user_connections' resource (current value:10)

故障三

ERROR 1129 (HY000): Host ‘192.168.0.111' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

故障一

排查密码root账号的密码是否正确。

一般情况下,ERROR 1045报错为密码错误引起的,因此需要首要排除是否密码错误问题。

select password(‘Test1i@123');
select host,user,Password from mysql.user where user=‘test1';

使用错误的密码登录就会失败。

确认该主机是否有连接数据库实例的权限。

select user, host from mysql.user where user=‘username';

如果该数据库用户需要从其他主机登录,则需要使用root用户连接数据库,并给该用户授权。

以加入主机IP为192.168.0.76举例:

GRANT all privileges ON test.* TO ‘test1’@’192.168.0.76identified by ‘Test1i@123;

flush privileges;

确认RDS for MySQL客户端和实例VIP的连通性。

尝试进行ping连接性能,若可以ping通,排除telnet数据库端口的问题。

查看实例安全组,排查是否因安全策略问题引起的报错。
查询user表信息,确认用户信息。

在排查中发现存在两个root用户。

如果用户的客户端处于192.168的网段,RDS for MySQL数据库的是对root@’192.168.%’这个用户进行认证的。而用户登录时使用的为root@’%’这个账号所对应的密码,因而导致连接失败,无法正常访问。此次问题是因密码错误引起的访问失败。

在此案例中,root@’%’为console创建实例时设置密码的账号。

故障二

排查是否在创建RDS for MySQL用户时,添加了max_user_connections选项,导致限制了连接数。

select user,host ,max_user_connections from mysql.user where user=‘test';

经排查发现由于设置了max_user_connections选项,导致连接失败。

增加该用户最大连接数。

alter user test@192.168.0.100' with max_user_connections 15

查询变更结果,检查是否可正常访问数据库。

故障三

排查是否由于RDS for MySQL客户端连接数据库的失败次数(不包括密码错误),超过了max_connection_errors的值。
在数据库端解除超出限值问题。使用root用户登录mysql,执行flush hosts。

或者执行如下命令。

mysqladmin flush-hosts –u –p -h -P

再次连接,检查是否可正常访问数据库。

父主题: 连接类

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家