只是无法远程连接到MySQL EC2 ubuntu实例

时间:2013-09-21 18:23:18

标签: mysql networking ubuntu amazon-ec2 port

我知道有几个关于此问题的主题,但我已经尝试了所有内容并且完全在我的脑海里 - 我希望能够连接到EC2上托管的MySQL数据库。

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

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

  3. UFW状态无效。

  4. 服务器上运行:

    mysql -u remote-user -p -h MY_EXTERNAL_IP

  5. 作品!但它得不到我的客户,我得到了:

    `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

    4. 但它确实连接到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
      

      拜托,我知道我的结局。我无法弄清楚这有什么问题,我已经做了好几个小时。

2 个答案:

答案 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用户并具有适当的权限。