我有一个MySQL数据库,由我托管在Windows服务器上,我想从远程Web服务器查询它。当我尝试使用PHP连接到MySQL数据库时(我知道,我应该使用mysqli):
$connection = @mysql_connect("203.0.113.0:3306", "username", "password");
有或没有指定端口,装的时间长了以后,我得到这个错误用errorno
的2003:
无法连接到“ 203.0.113.0”上的MySQL服务器(4)
这是netstat -n
在托管MySQL服务器的服务器上的命令提示符下运行时获得的信息:http : //pastebin.com/pbRJNqCZ。它填满了屏幕,所以我无法复制所有内容,但我知道其他所有内容(我看到几个端口,值为3306,这是MySQL端口):
TCP 127.0.0.1:port 127.0.0.1:port ESTABLISHED
当我运行时,netstat -a | find "LISTENING"
我得到:http : //pastebin.com/Lqj2BrQK
到目前为止,这是我所知道的:
3306
在TCP和UDP上都被转发。skip-networking
并bind-address
在我的my.cnf
文件中被注释掉了。如何编辑连接代码或编辑MySQL服务器以解决此错误?
总结我们的讨论/聊天:
将网络地址0.0.0.0绑定到my.cnf:中,bind-address = 0.0.0.0
并确保已将skip-networking
其注释掉或不存在。
检查一下 netstat -a | find "LISTENING"
根据您的pastebin的说法,有一个服务正在监听3306。测试服务器本身的NIC地址上的端口是否可访问。这样,外部防火墙不会生效。一个简单的测试是尝试通过telnet连接到该端口。该工具可以捕获更多详细信息nmap
。Nmap已显示已过滤的mysql端口。这将导致本地数据包筛选器出现问题,在本例中为Windows防火墙。
确保将Windows防火墙配置为允许从所有或特定计算机公开访问TCP端口3306。在公共配置文件中设置规则,或者,如果两个服务器都由同一个域控制器控制,则在域配置文件中设置规则。从本地计算机的访问成功后,请从远程Web服务器尝试相同的操作。
如果无法正确配置对MySql端口的远程访问,请考虑在两台计算机之间建立SSH隧道。一旦建立,您就可以访问MySql,就像它在本地计算机上一样。然后,该端口将通过隧道转发,并且在数据库服务器端,您可以通过localhost环回IP访问该服务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句