我知道有几个关于这个的线程,但我已经尝试了一切并且已经到了我的智慧的尽头 - 我只想能够连接到托管在 EC2 上的 MySQL 数据库。
-
我已将端口 3306 添加到 EC2 上实例的安全组中。
-
我已经从my.cnf文件中删除了bind_address(默认情况下不再使用skip网络)并重新启动了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
远程登录未连接:
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
拜托,我已经到了我的智慧尽头。我只是想不通这有什么问题,我已经为此工作了几个小时。
/etc/mysql/my.cnf
中的评论行说: bind-address 127.0.0.1
这就是原因,我花了大约 20-30 分钟来弄清楚为什么禁用防火墙:)会发生这种情况此行使您的服务器仅侦听此端口上来自本地主机的呼叫。当然,在此之后您必须重新启动mysql服务。
/etc/mysql/my.cnf 中的绑定地址从 127.0.0.1 更改为 0.0.0.0 解决了我的问题,我能够在端口 3306 上远程远程登录而不会出现问题。
还要确保您的 mysql 用户不仅设置为本地主机 mysql 用户,并且具有适当的权限。