PHP连接Amazon EC2时MySQL连接失败,如何正确配置安全组规则?
解决MySQL连接错误:Host 'xxx' is not allowed to connect
看到你碰到的这个报错:
Warning: mysqli_connect(): (HY000/1130): Host '123.202.164.45' is not allowed to connect to this MySQL server in /Applications/XAMPP/xamppfiles/htdocs/data.php on line 16 Failed to connect to MySQL: Host '123.202.164.45' is not allowed to connect to this MySQL server
别着急,安全组放行只是网络层面的准入,MySQL自身的用户权限绑定才是导致这个问题的核心,按以下步骤排查配置:
1. 调整MySQL的绑定地址
默认情况下,MySQL可能只监听本地127.0.0.1,需要修改配置让它接受外部IP的连接:
- 找到MySQL配置文件:Linux一般是
/etc/my.cnf或/etc/mysql/my.cnf,XAMPP环境下是my.ini - 找到
bind-address配置项,将其值改为0.0.0.0(允许所有IP访问),或者直接注释掉这一行 - 重启MySQL服务:
- Linux:执行
sudo systemctl restart mysql - XAMPP:在控制面板里重启MySQL模块
- Linux:执行
2. 给MySQL用户授权外部IP访问权限
MySQL的用户是和来源IP绑定的,你需要明确授权你的用户可以从123.202.164.45访问:
- 本地登录MySQL命令行:
mysql -u root -p(输入root密码登录) - 执行授权命令(替换成你的实际用户名和密码):
如果想让这个用户从任意IP都能访问,把GRANT ALL PRIVILEGES ON *.* TO '你的MySQL用户名'@'123.202.164.45' IDENTIFIED BY '你的密码';123.202.164.45换成%即可:GRANT ALL PRIVILEGES ON *.* TO '你的MySQL用户名'@'%' IDENTIFIED BY '你的密码'; - 刷新权限让配置生效:
FLUSH PRIVILEGES;
3. 再次确认安全组规则
虽然你说已经开放了所有流量,但还是要核对关键细节:
- 入站规则中添加允许3306端口(MySQL默认端口),源地址设置为
123.202.164.45或者0.0.0.0/0(所有IP) - 确保出站规则没有限制到MySQL服务器的3306端口
完成以上三步后,再尝试连接应该就能解决问题了!
内容的提问来源于stack exchange,提问作者PLau Peter
相关产品推荐
相关产品推荐

