1

我知道这有几个线程,但是我已经尝试了所有方法并且我无能为力 - 我只想能够连接到托管在 EC2 上的 MySQL 数据库。

  1. 我已将端口 3306 添加到 EC2 上实例的安全组。

  2. 我从 my.cnf 文件中删除了 bind_address(默认情况下不再使用跳过网络)并重新启动 MySQL。我也尝试过bind_address =(外部IP,它以54开头。)和bind_address = 0.0.0.0。

  3. UFW 状态为非活动状态。

  4. 服务器上,运行:

    mysql -u remote-user -p -h MY_EXTERNAL_IP

作品!但这对我的客户不起作用,我得到:

`ERROR 2003 (HY000): Can't connect to MySQL server on 'MY_EXTERNAL_IP' (111)`
  1. 我创建了我当前的 MySQL 用户:

    GRANT USAGE ON *.* TO 'remote-user'@'localhost' IDENTIFIED BY 'password';

    GRANT USAGE ON *.* TO 'remote-user'@'%' IDENTIFIED BY 'password';

  2. 我什至跑了:

    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

  3. 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

拜托,我已经无计可施了。我只是无法弄清楚这有什么问题,我已经研究了几个小时。

4

2 回答 2

4

其中的注释行/etc/mysql/my.cnf说:bind-address 127.0.0.1这就是原因,我花了大约 20-30 分钟来弄清楚为什么会在禁用防火墙的情况下发生这种情况:) 此行使您的服务器仅在此端口上侦听来自 localhost 的调用。当然,您必须在此之后重新启动 mysql 服务。

于 2014-05-13T13:00:24.330 回答
1

将 /etc/mysql/my.cnf 中的绑定地址从 127.0.0.1 更改为 0.0.0.0 解决了我的问题,我能够在端口 3306 上远程 TELNET 没有问题。

还要确保您的 mysql 用户不仅设置为 localhost mysql 用户并且具有适当的权限。

于 2016-06-14T18:48:09.843 回答