我刚刚经历了让MySQL接受远程登录的痛苦。是的,我必须创建表单''@'%‘的用户,并且我这样做了。是的,我不得不全身心投入。给我的新‘%’用户,然后刷新权限,我就这么做了。是的,我必须在服务器上打开端口3306,而且我这样做了。但是,试图通过HeidiSQL访问HeidiSQL,我仍然没有任何运气。
直截了当地说,我的斗争是与绑定地址。我在AWS服务器实例上运行Ubuntu,所以我有一个公共IP地址和一个私有IP地址。当然,始终存在MySQL默认IP地址127.0.0.1。但是,默认设置不允许我进行任何远程连接,所以我想我应该尝试使用公共IP。但在这种情况下,MySQL不会启动。最后,我尝试使用私有IP地址作为绑定地址,一切都就绪了:我能够停止并重新启动MySQL,并且能够从HeidiSQL连接。
但我完全糊涂了。HeidiSQL通过它的公共IP地址来寻址此服务器。但是MySQL拒绝绑定到公共IP地址!(就像我说的,当我尝试的时候,MySQL甚至都不会开始。)MySQL的绑定地址是私有IP地址。这里发生了什么事?为什么,为了获得远程连接,我需要HeidiSQL目标端口3306在公共IP地址,但MySQL绑定到私有IP地址?
发布于 2014-07-08 02:54:47
这里的解释很简单:您不能将侦听套接字绑定到机器的IP堆栈不知道的IP地址。
在AWS (无论是EC2经典还是EC2/VPC)中,就像现在许多网络环境中一样,您的外部IP没有在您的计算机中配置--它通过外部设备(路由器、防火墙)通过NAT (网络地址转换)映射到您机器的私有IP。
您可以确认您的服务器本身不知道外部IP:
$ ifconfig当然,最简单的解决方案是绑定到0.0.0.0,除非您有特定的理由不这样做。
发布于 2015-09-20 23:25:56
试试这个:
MySQL服务器的/etc/host文件必须包含服务器IP地址,因此请验证一次。
$ sudo cat /etc/主机
https://dba.stackexchange.com/questions/69586
复制相似问题