如何使用Navicat连接AWS EC2实例中部署的MySQL数据库
解决方案
1. MySQL用户权限校验
- 登录EC2本地进入MySQL,执行
SELECT user, host FROM mysql.user WHERE user = '你使用的MySQL用户名';,确认该用户允许的登录主机不是仅localhost/127.0.0.1,需要配置为你本地设备的公网IP,测试阶段也可以临时设为%(允许所有IP登录,生产环境禁止使用) - 权限不符合时执行以下命令修改,修改后执行
FLUSH PRIVILEGES;生效:
GRANT ALL PRIVILEGES ON *.* TO '你的MySQL用户名'@'你本地的公网IP' IDENTIFIED BY '你的MySQL密码';
2. MySQL绑定地址校验
- 打开MySQL配置文件,常见路径为
/etc/mysql/my.cnf、/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address配置项 - 确认该配置不是
127.0.0.1,可修改为0.0.0.0或者EC2实例的私有IP,修改后重启MySQL服务生效:- Debian/Ubuntu系统执行:
sudo systemctl restart mysql - CentOS/RHEL系统执行:
sudo systemctl restart mysqld
- Debian/Ubuntu系统执行:
3. AWS EC2安全组校验
- 进入AWS控制台对应EC2实例的安全组配置页面,检查入站规则
- 确认已放行3306端口,源地址为你本地设备的公网IP,不要配置为
0.0.0.0/0避免未授权访问风险
4. EC2本地防火墙校验
- 登录EC2实例执行
sudo iptables -L -n检查iptables规则,确认3306端口未被拦截 - 若开启了ufw防火墙(Debian/Ubuntu默认),执行
sudo ufw status查看端口放行状态,未放行时执行:sudo ufw allow from 你本地的公网IP to any port 3306
5. 连通性测试
- 本地设备执行
nc -zv EC2公网IP 3306或者telnet EC2公网IP 3306测试端口连通性,若连通失败优先排查安全组、防火墙配置
参考截图


内容的提问来源于stack exchange,提问作者BKBK
相关产品推荐
相关产品推荐

