【问题标题】:Remote MySQL Server not responding远程 MySQL 服务器没有响应
【发布时间】:2020-03-28 16:12:06
【问题描述】:

我在连接到我持有 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

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

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。

【问题讨论】:

  • Mysql 上的用户权限? SQL 服务器在哪里?

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


【解决方案1】:

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

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

【讨论】:

  • 可能是mysql_native_password
  • 我认为如果 curl 在本地服务器上成功而不是在远程服务器上成功,它可能高于用户登录问题?
  • 发出请求的服务器上有防火墙。感谢您的帮助。
【解决方案2】:

听起来端口可能没有正确转发?要尝试的一件事可能是将 Amazon Elastic Load Balancer 放在实例前面。然后可以转发 3306 端口进行 MySQL 连接。

【讨论】:

    猜你喜欢
    • 2018-11-16
    • 2011-10-03
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2011-08-22
    • 2017-01-09
    相关资源
    最近更新 更多