2017-01-03 79 views
0

注意。操作系統是Ubuntu 14. *數據庫不能通過公共IP連接

我在我的MYSQL服務器上打破了我的頭。我嘗試通過公共IP連接到我的MYSQL服務器內部。但我無法連接。雖然我能夠連接當我連接到本地主機,當我連接外部。

# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
#bind-address   = 127.0.0.1 

我評論了bind-address,這應該將地址綁定到0.0.0.0。我也嘗試將綁定地址設置爲0.0.0.0。這也不起作用。

我的主機文件設置,如下所示:

127.0.0.1 MY-IP 

當我在端口80 telnet到我的公網IP是沒有問題的。

telnet MY-IP 80 

我得到:

Trying MY-IP... 
Connected to MY-IP. 
Escape character is '^]'. 

但是當我嘗試這個端口3306它不斷:

Trying MY-IP... 

我還授予了所有正確的權限,以我的MySQL用戶。我可以連接externaly和internaly。但是我不可能把我的公共IP連接到內部。

另外我試圖找到一個解決方案與netstat。

netstat -tln 

給MES

tcp  0  0 0.0.0.0:3306   0.0.0.0:*    LISTEN 

編輯:只是禁用UFW。它仍然無法正常工作。

ufw status 
Status: inactive 

編輯2:是否有可能mysql忽略/ etc/hosts文件?

有人可以幫助我進一步瞭解問題的一些好點子。

+1

可能是防火牆產生的問題?打開防火牆上的端口:'sudo ufw allow 3306/tcp'和'sudo service ufw restart' –

+2

老實說,你不希望你的MySQL端口在微風輕拂,任何人都可以嘲笑。它不像'ssh'那樣安全,並且通常是驅動式攻擊的目標,甚至是DDOS類型。如果您不能使用VPN或SSH隧道,請對誰可以連接進行限制性白名單。 – tadman

+0

我現在無法解決問題。當我嘗試通過公共IP進行連接時仍然會出現問題。另外我可以在服務器上完全打開mysql的端口。因爲我的服務器和壞的互聯網之間有單獨的防火牆。 (我知道這不是最乾淨的方法) – Berend

回答

0

您應該將綁定地址更改爲0.0.0.0,然後重新啓動mysqld。另外,還要確保沒有啓用防火牆:

iptables -n -L 

如果有規則,阻止端口3306,刪除它們,或只是

iptables -F 

也用netstat來檢查服務器是否禁用firwall聽外部IP:

netstat -tupan |grep :3306 
+0

Ubuntu有'ufw',任何忽略這個問題的答案都是以醜陋的方式實現的。 – tadman

+0

我檢查了這個。還衝我的iptables。不知何故,這個問題不在這些地方。我將netstat的行添加到了我的帖子中。 「tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 19999/mysqld」 – Berend

+0

當你映射YOUR-EXTERNAL-IP -p3306 -Pn'時會發生什麼?如果它給你「過濾」,它可能是通往你的外部IP的途中的防火牆。 –