我有一台运行MYSQL(5.5.41)的根服务器(Ubuntu 14.04)并尝试从两个不同服务器上的两个不同主页访问数据库。主页服务器使用静态ips。 我在root上设置了iptables。
iptables -A INPUT -p tcp --dport 3306 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -s 'my_homepage_ip' -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j REJECT --reject-with icmp-port-unreachable
如果我尝试从两个主页访问服务器,我会得到: 无法连接到服务器上的MySQL服务器' (111)2003。
主页在一些名为1und1的德国提供商的网站空间上运行。
如果我打开iptables并删除拒绝行,一切正常。此外,我尝试从我的本地计算机访问SQL Server,该计算机运行的XAMPP服务器与我在主页服务器上使用的脚本相同。这很好用。
服务器(' my_server')和端口(3306)在我的php脚本中定义。
$db = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME, DB_PORT);
我认为主页服务器的IP错误或主页服务器使用3306以外的其他端口。
答案 0 :(得分:0)
尝试将第3行更改为iptables -A INPUT -p tcp --dport 3306 -j LOG
。这会将对MySQL端口的所有尝试记录到您的/var/log/messages
文件中,包括源IP地址。这将允许您验证源IP是否与您的网站正确使用的IP相同。如果不同,只需使用正确的IP地址更改第2行。