
# RDS 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'
  ```
  
 
#### 故障一
1. 排查密码root账号的密码是否正确。 
   一般情况下，ERROR 1045报错为密码错误引起的，因此需要首要排除是否密码错误问题。
   ```
   select password('Test1i@123');
   select host,user,Password from mysql.user where user='test1';
   ```
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002247222137.png "点击放大")
   使用错误的密码登录就会失败。
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002212222020.jpg "点击放大")
   
   
2. 确认该主机是否有连接数据库实例的权限。 
   ```
   select user, host from mysql.user where user='username';
   ```
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002212222024.jpg "点击放大")
   如果该数据库用户需要从其他主机登录，则需要使用root用户连接数据库，并给该用户授权。
   以加入主机IP为192.168.0.76举例：
   ```
   GRANT all privileges ON test.* TO 'test1'@'192.168.0.76' identified by 'Test1i@123';
   flush privileges;
   ```
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002247222145.jpg "点击放大")
   
   
3. 确认RDS for MySQL客户端和实例VIP的连通性。 
   尝试进行ping连接性能，若可以ping通，排除telnet数据库端口的问题。
   
   
4. 查看实例安全组，排查是否因安全策略问题引起的报错。
5. 查询user表信息，确认用户信息。 
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002212222016.jpg "点击放大")
   在排查中发现存在两个root用户。
   如果用户的客户端处于192.168的网段，RDS for MySQL数据库的是对root@'192.168.%'这个用户进行认证的。而用户登录时使用的为root@'%'这个账号所对应的密码，因而导致连接失败，无法正常访问。此次问题是因密码错误引起的访问失败。
   ![](https://support.huaweicloud.com/trouble-rds-mysql/public_sys-resources/note_3.0-zh-cn.png)
   在此案例中，root@'%'为console创建实例时设置密码的账号。
   
   
 
#### 故障二
1. 排查是否在创建RDS for MySQL用户时，添加了max_user_connections选项，导致限制了连接数。 
   ```
   select user,host ,max_user_connections from mysql.user where user='test';
   ```
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002247222141.jpg "点击放大")
   经排查发现由于设置了max_user_connections选项，导致连接失败。
   
   
2. 增加该用户最大连接数。 
   ```
   alter user test@'192.168.0.100' with max_user_connections 15;
   ```
   
   
3. 查询变更结果，检查是否可正常访问数据库。 
   ![](https://support.huaweicloud.com/trouble-rds-mysql/zh-cn_image_0000002212062244.jpg "点击放大")
   
   
 
#### 故障三
1. 排查是否由于RDS for MySQL客户端连接数据库的失败次数(不包括密码错误)，超过了max_connect_errors的值。
2. 在数据库端解除超出限制问题。使用root用户登录mysql，执行flush hosts。 
   或者执行如下命令。
   ```
   mysqladmin flush-hosts -u<user> -p<password> -h<ip> -P<port>
   ```
   
   
3. 再次连接，检查是否可正常访问数据库。
 
