无法使用外部IP地址连接到MySQL数据库

xgo*_*ord 2 mysql database-connection ip-address ipconfig

我在我的Windows 7计算机上运行的MySQL服务器作为Windows服务.当我尝试使用external.ip =我的ip地址从http://www.whatismyip.com/ 在命令提示符下连接到它:

mysql -h external.ip -u root -p
Run Code Online (Sandbox Code Playgroud)

它返回:

ERROR 2003 (HY000): Can't connect to MySQL server on external.ip (10060)
Run Code Online (Sandbox Code Playgroud)

但是,当我将external.ip更改为使用ipconfig命令列出的ip地址时,我可以将其连接到它:

mysql -h ipconfig.ip -u root -p
Run Code Online (Sandbox Code Playgroud)

我已经更改了root用户的权限以接受任何主机(使用来自外部主机/ ip访问mysql数据库的命令?(即:mysql workbench)).在数据库中:

SELECT host, user FROM user;
Run Code Online (Sandbox Code Playgroud)

返回(总结):

| host   | user |
-----------------
| %      | root |
Run Code Online (Sandbox Code Playgroud)

此外,在我的my.ini文件中,没有说明跳过网络的行.

前几天我在另一个网络上尝试使用它时,它运行正常,其中external.ipipconfig.ip相同.这可能是问题的根源还是还有别的东西?

O. *_*nes 6

如果http://www.whatismyip.com/和你从ipconfig获得的地址不同,那意味着你正在使用本地路由器(可能是你用来连接互联网的路由器)进行网络地址转换.换句话说,您有一个本地网络(在您的家中或您喜欢的网吧),它具有私有网络地址,如192.168.0.1或10.0.0.1.

MySQL通常在端口3306上使用侦听来获取入站连接请求.但是,当您尝试通过公共IP地址(什么是我的IP地址)进行连接时,您的网络提供商会将请求发送到您的路由器.路由器注意到端口3306,但它可能不知道如何处理它.所以它默默地忽略了请求.您用于建立连接的软件会超时.这很好.破解者试图连接到这样的端口,看看他们是否可以进入你的机器.

因此,要使其工作,您需要配置路由器以将传入的TCP请求传递到端口3306,直到运行MySQL服务器的计算机.它可能有一个配置屏幕来执行此操作.它可以在您拥有的路由器上运行.它不适用于咖啡店路由器.

如果您不确定"端口"是什么意思,或者为什么从ipconfig和http://www.whatismyip.com/获得不同的IP地址,那么您可能需要了解更多有关互联网技术的信息.你应该尝试这种事情.