2013-09-21 126 views
1

我知道有幾個線程關於這一點,但我已經嘗試了一切,並在我的機智的結束 - 我只是想能夠連接到一個MySQL數據庫託管在EC2上。只是不能連接到MySQL EC2的ubuntu實例遠程

  1. 我已經加入3306端口到安全組在EC2上的實例。

  2. 我從my.cnf文件中刪除了bind_address(默認不再使用skip-networking)並重新啓動MySQL。我也試過bind_address =(外部IP,它以54開頭)和bind_address = 0.0.0.0。

  3. UFW狀態爲inactive。

  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 

請,我在我束手無策。我無法弄清楚這有什麼問題,我已經研究了好幾個小時。

/etc/mysql/my.cnf
+0

我能夠通過telnet在54.221.103.104連接到端口3306?你怎麼沒有? –

+0

哎呀,忘了刪除IP,但我真的不在乎。謝謝 - 也許我的本地網絡阻止了傳出端口,或者什麼的。 – collisionTwo

+1

它看起來像你做的一切權利。我會看你的本地網絡,看看它是否阻塞了輸出​​端口。你可以通過SSH隧道連接以及 – datasage

回答

3

註釋行,上面寫着:bind-address 127.0.0.1這是什麼原因,我花了一些20-30分鐘弄清楚爲什麼它禁用防火牆發生:)這條線讓你的服務器只從本地主機在該端口上監聽到通話。當然你必須在這之後重新啓動mysql服務。

+0

的Telnet是因此這失敗也不會在他的案子。 OP在他的第二點已經提到了這一點。 – Zeeshan

0

將/etc/mysql/my.cnf中的綁定地址從127.0.0.1更改爲0.0.0.0已解決了我的問題,並且我能夠在端口3306上遠程TELNET而沒有問題。

另外,還要確保您的MySQL用戶不僅設置爲本地主機的MySQL用戶,並具有適當的權限。