AWS Lightsail实例连接外部MySQL服务器失败求助
AWS Lightsail实例连接外部MySQL服务器权限错误解决办法
问题本质
别误解错误信息——不是你的Lightsail实例把外部IP解析成了本地地址,而是你要连接的外部MySQL服务器,把你的Lightsail实例公网IP反向解析成了那个EC2域名,然后检查该用户是否允许从这个域名对应的地址登录,结果权限不匹配才报错。
具体解决步骤
检查并授权外部MySQL用户
登录外部MySQL服务器,先查一下当前用户的授权范围:SELECT user, host FROM mysql.user WHERE user = 'user_name';如果结果里没有
ec2-xx-xx-xx-xx.us-east-2.compute.amazonaws.com或者你的Lightsail实例公网IP,就给用户加权限:-- 用反向解析的域名授权 GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'ec2-xx-xx-xx-xx.us-east-2.compute.amazonaws.com' IDENTIFIED BY '你的密码'; -- 或者直接用实例公网IP授权,更稳妥 GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'你的Lightsail实例公网IP' IDENTIFIED BY '你的密码';加完权限后一定要刷新:
FLUSH PRIVILEGES;绕过反向解析的快捷方案(谨慎用)
要是嫌反向解析麻烦,可以创建允许从任意地址连接的用户,但生产环境别这么干,风险高:GRANT ALL PRIVILEGES ON *.* TO 'user_name'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;先确认网络通不通
先在Lightsail实例里ping外部MySQL的IP,看看能不能通;再用telnet xx.xx.xx.xx 3306测3306端口是否开放,确保外部MySQL的安全组/防火墙已经放行了你的Lightsail实例IP。关于
skip_name_resolve的误区
你改本地my.cnf没用,这个参数是给外部MySQL服务器用的——在外部服务器的配置里加skip_name_resolve,重启MySQL后,它就会直接用IP验证用户,不再做反向解析了。
内容的提问来源于stack exchange,提问作者bkh33al
相关产品推荐
相关产品推荐

