更改绑定地址后,MySQL服务器将不会运行

为了允许来自外部的连接,我编辑了/etc/mysql/my.cnf以将bind-address从默认值127.0.0.1更改为54.200.xx.xx 但更改进行更改后,mysql服务将无法启动。 当我检查了mysql错误日志,它有这个:

 131030 12:27:53 [Note] Server hostname (bind-address): '54.200.xx.xx'; port: 3306 131030 12:27:53 [Note] - '54.200.xx.xx' resolves to '54.200.xx.xx'; 131030 12:27:53 [Note] Server socket created on IP: '54.200.xx.xx'. 131030 12:27:53 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address 131030 12:27:53 [ERROR] Do you already have another mysqld server running on port: 3306 ? 131030 12:27:53 [ERROR] Aborting 

服务器在Amazon EC2上,运行Ubuntu 12.04 LTS。 任何想法是什么问题?

 ubuntu@ip-172-31-xx-xxx:~$ ifconfig eth0 Link encap:Ethernet HWaddr 12:ad:52:a1:9b:a9 inet addr:172.31.xx.xxx Bcast:172.31.xx.xxx Mask:255.255.240.0 inet6 addr: fe80::10ad:52ff:fea1:9ba9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1014 errors:0 dropped:0 overruns:0 frame:0 TX packets:749 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:87102 (87.1 KB) TX bytes:138261 (138.2 KB) Interrupt:25 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:152 errors:0 dropped:0 overruns:0 frame:0 TX packets:152 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:11740 (11.7 KB) TX bytes:11740 (11.7 KB) 

如果此IP不在您的系统上,则您无法侦听IP。 这很清楚,不是吗?

**对不起 – 刚才看到你说你在EC2上 – 你仍然需要绑定你的MySQL实例到0.0.0.0,然后做必要的任何适当的configuration,以使得端口3306打开,如果默认不发送所有stream量通过您的局域网IP **

看起来你正在一个局域网上有一个NAT网关。 您不能直接将mysql绑定到您的外部IP地址,因为这实际上不是您的系统上可用的IP地址。

如果这真的是你想要做的(考虑到开放直接访问外部世界通常的安全含义),你将需要:

  • 将MySQL绑定到0.0.0.0(或者你的局域网IP,如果你不想让它在127.0.0.1上进行监听,这也不太可能)
  • 创build一个端口转发/防火墙规则,从您的外部IP设备,TCP端口3306,到您的Linux机箱的局域网IP。

如果你不知道如何做到这一点,网上有很多关于设置端口转发的信息。 如果您无法访问NAT路由器/防火墙,而控制它的人不会为您做到这一点,那么您将不得不想出另一种方式来满足您的需求。