为了允许外部连接,我进行了编辑,将默认值/etc/mysql/my.cnf
更改为。但更改后,mysql 服务无法启动。当我检查 mysql 错误日志时,它有以下内容:-bind-address
127.0.0.1
54.200.xx.xx
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)
答案1
如果某个 IP 不在您的系统中,您就无法监听该 IP。这很清楚,不是吗?
答案2
** 抱歉 - 刚看到您说您在 EC2 上 - 您仍然需要将您的 MySQL 实例绑定到 0.0.0.0,然后根据需要进行任何适当的配置以打开端口 3306(如果默认情况下不是仅将所有流量发送到您的 LAN IP)**
看起来您位于 LAN 上,前面有一个 NAT 网关。您无法将 mysql 直接绑定到您的外部 IP 地址,因为这实际上不是您系统上可用的 IP 地址。
如果这确实是您想要做的(请考虑仅向外界开放直接访问权限的通常安全影响),您将需要:
- 将 MySQL 绑定到 0.0.0.0(或者您的 LAN IP,如果您不想让它也监听 127.0.0.1,这不太可能)
- 从具有外部 IP 的设备(针对 TCP 端口 3306)到 Linux 机器的 LAN IP 创建端口转发/防火墙规则。
如果您不知道如何操作,网上有很多关于设置端口转发的信息。如果您无法访问 NAT 路由器/防火墙,而控制它的人又不会为您做这件事,那么您就必须想出另一种方法来满足您的需求。