亚马逊EC2远程访问MySQL遭1045错误拒绝,求助排查遗漏配置
解决MySQL 5.5.58远程连接1045 Access Denied问题的遗漏排查点
你已经完成了基础的排查步骤,安全组开放、端口监听、用户配置这些都没问题,咱们来梳理几个容易被忽略的细节:
权限未手动刷新:MySQL 5.5这类老版本不会自动同步权限变更,如果你创建/修改用户后没执行刷新命令,权限其实还没生效:
FLUSH PRIVILEGES;密码输入或格式问题:别小看这个,很多时候是密码输错了,或者密码里的特殊字符(比如
@、#)在终端/客户端被转义导致认证失败。可以先重置一个简单密码测试:SET PASSWORD FOR 'yj'@'%' = PASSWORD('your-new-simple-password'); FLUSH PRIVILEGES;EC2本地防火墙拦截:AWS安全组是外部防护,但EC2实例本身可能开启了iptables这类本地防火墙,拦截了3306端口。先检查规则:
iptables -L -n | grep 3306如果没有允许规则,添加并保存:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT service iptables save service iptables restart用户权限授予不完整:你确认了mysql.user表存在该用户,但可能只创建了用户,没给远程连接所需的权限?正确的授权流程应该是:
CREATE USER 'yj'@'%' IDENTIFIED BY 'your-password'; GRANT ALL PRIVILEGES ON *.* TO 'yj'@'%'; -- 可根据实际需求调整权限范围,不一定需要ALL FLUSH PRIVILEGES;只创建用户不授权的话,即便用户存在也无法正常连接。
MySQL服务未重启:如果你之前修改过my.cnf(比如删除了bind-address),必须重启服务才能让配置生效:
service mysqld restart缺少skip-name-resolve配置:MySQL默认会尝试反向解析客户端IP,如果你的客户端IP无法被解析,可能导致连接失败。可以在my.cnf的
[mysqld]段添加:skip-name-resolve然后重启MySQL,这个配置会跳过IP反向解析,避免这类问题。
你可以逐个排查这些点,大概率能解决问题。
内容的提问来源于stack exchange,提问作者YEEN
相关产品推荐
相关产品推荐

