远程MySQL Server没有响应

时间:2019-12-03 22:13:22

标签: php mysql amazon-web-services amazon-ec2

我在连接到装有MySQL服务器的AWS EC2服务器时遇到问题。

这是我对mysqli_connect的回复

p@xxx.com [~/app]# php checkmysqlremote.php Error: Unable to connect to MySQL. Debugging errno: 2002 Debugging error: Connection refused

这是我的netstat -tuplen在包含MySQL服务器的EC2服务器上

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 999 20299 1378 / mysqld

如您所见,它正确地绑定到0.0.0.0地址。

我为EC2启用了入站规则3306 port

在进行请求握手的服务器上,我跑了:

curl -s example.com:3306 >/dev/null && echo Success. || echo Fail.

产生了Fail.

我也在本地服务器实例上运行它,并以Success.

响应

我还在服务器上运行nmap进行握手,

nmap -p 3306 example.com

Nmap scan report for example.com (1.1.1.1)

Host is up (0.048s latency).

PORT     STATE    SERVICE

3306/tcp filtered mysql

Nmap done: 1 IP address (1 host up) scanned in 2.03 seconds

最后,我尝试在iptables中添加以下规则:

iptables -A INPUT -i eth0 -s "example.com" -p tcp --destination-port 3306 -j ACCEPT

sudo iptables -I INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

我现在不知道该怎么办。

更新

我尝试从远程服务器ping通EC2服务器,但它未返回任何信息。在这一点上,我认为问题出在EC2。

2 个答案:

答案 0 :(得分:1)

尝试将下面的GRANT添加到您的用户中:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'

答案 1 :(得分:0)

类似端口的声音可能无法正确转发?可以尝试的一件事是在实例前面放置一个Amazon Elastic Load Balancer。然后,您可以转发端口3306进行MySQL连接。