ECS自建库(MySQL)连接失败怎么办
- 报错信息:“Access denied for user 'user_name'@'100.xxx.xx.xx' (using password: YES)”。
- 报错原因:ECS自建库用户名或密码不对。
解决方法:请确认数据库用户名和密码是否正确。如果确认账户名和密码正确,可以通过客户端或命令行工具登录数据库,执行select * from mysql.user where user = 'user_name'命令查看用户信息,如果存在100.%网段的用户,则DAS只能通过100.%网段的数据库用户去连接数据库。user_name @%与user_name @100.%是两个用户,其密码和权限都是独立的,请确认输入的密码是否是user_name @100.%用户的密码。
- 报错原因: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.%用户赋予权限。
- 报错原因: 使用SSL用户登录,服务端没有开启SSL功能。
解决方法:请执行如下语句查询用户是否是SSL用户,如果是,则在RDS实例详情页面,将SSL开关打开。其中,ssl_type字段有值即表示此用户是SSL用户。
select user, host, ssl_type from mysql.user where user = 'user_name';
- 报错原因:ECS自建库用户名或密码不对。
- 报错信息: 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.%用户赋予权限。
- 报错信息: 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。
- 报错原因: ECS设置的安全组规则不支持此端口被访问
解决方法:请参考查看并放通ECS实例安全组规则。
- 报错原因: ECS虚拟机设置的防火墙策略不允许此端口被访问。
解决方法:请参考查看并放通防火墙。
- 报错原因:远程访问MySQL数据库,服务端侧进行的DNS解析动作,耗时太长导致连接实例超时。
- 在/etc/my.cnf路径下查找MySQL数据库的配置文件,在“[mysqld]”下,输入如下内容,并保存退出。
skip-name-resolve
MySQL数据库的配置文件,默认位置为“/etc/my.cnf”,若您将配置文件指定位置存放时,需对应调整。
- 重启数据库服务"systemctl restart mysqld",尝试再次连接。
- 在/etc/my.cnf路径下查找MySQL数据库的配置文件,在“[mysqld]”下,输入如下内容,并保存退出。
- 报错原因: ECS设置的安全组规则不支持此端口被访问
- 报错信息: 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
解决方法:请检查实例的防火墙配置是否正常、是否开放对应端口,如防火墙配置异常或未开放对应端口请修复后再次尝试连接实例。修复后还无法解决,请提交工单联系客服人员协助处理
- 报错信息:Instance connect timeout, please login again.
解决方案:请按照以下方法进行检查并尝试修复。
- 请远程登录ECS虚拟机,执行“iptables -S | grep input”命令检查实例的防火墙配置是否正常。如果自建库端口号没在开放的白名单中,您可以新增一条iptables规则或通过“systemctl stop iptables”命令关闭防火墙,保证端口能被访问后再次尝试连接实例。
- 请远程登录ECS虚拟机,执行“ps -ef | grep mysql”命令检查数据库进程是否正常,mysqld_safe进程与mysqld进程均存在则为正常。如进程不存在请执行“systemctl start mysqld”命令重启数据库后再次尝试连接实例。
- 如上述方法均无法解决,请提交工单联系客服人员协助处理。