我知道有几个关于此问题的主题,但我已经尝试了所有内容并且完全在我的脑海里 - 我希望能够连接到EC2上托管的MySQL数据库。
我已将端口3306添加到EC2上的实例的安全组中。
我已从my.cnf文件中删除了bind_address(默认情况下不再使用skip-networking)并重新启动MySQL。我也尝试过bind_address =(外部IP,以54开头)和bind_address = 0.0.0.0。
UFW状态无效。
在服务器上运行:
mysql -u remote-user -p -h MY_EXTERNAL_IP
作品!但它得不到我的客户,我得到了:
`ERROR 2003 (HY000): Can't connect to MySQL server on 'MY_EXTERNAL_IP' (111)`
我创建了当前的MySQL用户:
GRANT USAGE ON *.* TO 'remote-user'@'localhost' IDENTIFIED BY 'password';
GRANT USAGE ON *.* TO 'remote-user'@'%' IDENTIFIED BY 'password';
我甚至跑了:
sudo iptables -P INPUT ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
sudo iptables -I INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Telnet无法连接:
echo X | telnet -e X MY_EXTERNAL_IP 3306
telnet: Unable to connect to remote host: Connection refused
但它确实连接到ssh端口:
Trying 54.221.103.104...
Connected to 54.221.103.104.
和netstat -a | grep 'mysql'
给出:
tcp 0 0 *:mysql *:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 20762 /var/run/mysqld/mysqld.sock
拜托,我知道我的结局。我无法弄清楚这有什么问题,我已经做了好几个小时。
答案 0 :(得分:3)
/etc/mysql/my.cnf
中的评论行说:bind-address 127.0.0.1
这就是原因,我花了大约20-30分钟来弄清楚为什么它会在禁用防火墙时发生:)这条线让你的服务器只能听来自此端口上localhost的调用。 Ofcourse你必须在此之后重启mysql服务。
答案 1 :(得分:0)
将/etc/mysql/my.cnf中的绑定地址从127.0.0.1更改为0.0.0.0已解决了我的问题,我可以在端口3306上远程调试TELNET。
另外,请确保您的mysql用户不仅仅设置为localhost mysql用户并具有适当的权限。