我在 ec2 中设置了 2 个服务器,一个只托管 mysql,另一个托管软件。我需要软件服务器对 mysql 服务器进行远程 mysql 访问,理想情况下希望它在私有 ip 上,这样只能从 ec2 设置内部访问它。
这里的问题是,我在 AWS 的安全组上打开了 3306,并添加了一个在任何 IP 地址上都具有访问权限的用户,并且在 iptables 上打开了 3306。但我无法远程连接到 mysql 服务器。
我尝试通过 sequel pro 的弹性公共 IP 进行操作,但提示无法连接到主机。我可能遗漏了什么?
总结
- mysql 服务器在 iptables 上打开了 3306 端口
- AWS 中的服务器已打开 3306 安全组
- mysql 已授予某个用户在任何 ip 上的所有权限 'user'@'%'
- ssh 工作正常
奇怪的是,my.cnf 不超过大约 20 行左右,似乎缺少很多配置?
服务器是mysql 8,运行在centos 7上
“ss -lntp”的输出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=9365,fd=13))
LISTEN 0 128 *:3306 *:* users:(("mysqld",pid=28332,fd=34))
LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=697,fd=4),("systemd",pid=1,fd=27))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1352,fd=3))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=9365,fd=14))
LISTEN 0 70 [::]:33060 [::]:* users:(("mysqld",pid=28332,fd=32))
LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=697,fd=6),("systemd",pid=1,fd=29))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1352,fd=4))
答案1
私有 IP 地址应该可以工作。如果您在 DB 安全组上打开了 3306 传入,请确保 Web/应用服务器安全组也具有传出 3306。
另外,您没有提到这一点,但服务器是否在同一个子网中?在同一个 AZ 中?在同一个地区?如果它们在同一个子网中,只要您的 SG 正确,私有 IP 就应该可以工作,但如果您尝试了更复杂的设置,则可能需要额外的配置。