我的Windows 7计算机上运行的MySQL服务器是Windows服务。当我尝试在命令提示符中使用 external.ip =我的http://www.whatismyip.com/ 中的IP地址连接到它时:
mysql -h external.ip -u root -p
它返回:
ERROR 2003 (HY000): Can't connect to MySQL server on external.ip (10060)
然而,当我将 external.ip 更改为使用 ipconfig 命令列出的IP地址时,我可以将其连接到它:
mysql -h ipconfig.ip -u root -p
我已经更改了root用户的权限以接受任何主机(使用来自Accessing a mysql database from external host/ip? (ie: mysql workbench)的命令)。在数据库中:
SELECT host, user FROM user;
返回(总结):
| host | user |
-----------------
| % | root |
此外,在我的my.ini文件中,没有说明跳过网络的行。
前几天我在另一个网络上尝试使用它时工作正常,其中 external.ip 与 ipconfig.ip 相同。这可能是问题的根源还是还有别的东西?
答案 0 :(得分:6)
如果http://www.whatismyip.com/和您从ipconfig获得的地址不同,则表示您正在使用本地路由器(可能是您用于连接到互联网的路由器)进行网络地址转换。换句话说,您有一个本地网络(在您的家中或您喜欢的网吧),它具有私有网络地址,如192.168.0.1或10.0.0.1。
MySQL通常在端口3306上使用侦听来获取入站连接请求。但是,当您尝试通过公共IP地址(什么是我的IP地址)进行连接时,您的网络提供商会将请求发送到您的路由器。路由器注意到端口3306,但它可能不知道如何处理它。所以它默默地忽略了请求。您用于建立连接的软件会超时。这很好。 Crackers尝试连接到这样的端口,看看它们是否可以进入你的机器。
因此,要使其工作,您需要配置路由器以将传入的TCP请求传递到端口3306,直到运行MySQL服务器的计算机。它可能有一个配置屏幕来执行此操作。它可以在您拥有的路由器上运行。它不适用于咖啡店路由器。
如果您不确定“端口”是什么意思,或者为什么从ipconfig和http://www.whatismyip.com/获得不同的IP地址,那么您可能需要先学习更多关于互联网技术的知识尝试这种事情。