我有兩個虛擬專用伺服器伺服器,兩者都有MySQL已安裝,一台用於測試,一台用於開發。我的一台伺服器不允許我從外部連接。與用戶一起;
'mytestuser'@'%'
根據開放連接埠查找器,有問題的伺服器的連接埠 3306 似乎已關閉。我有自己的 C++ 和 Java 程序,可以在任意連接埠上監聽,沒有任何問題。為什麼會發生這種情況以及如何解決它?
安裝的Ubuntu是Ubuntu 11.10 (GNU/Linux 2.6.32-042stab072.10 x86_64)
netstat -tuple
每台伺服器上的結果
違規伺服器
tcp 0 0 localhost.lo:submission *:* LISTEN root 39967664 -
工作伺服器
tcp 0 0 *:mysql *:* LISTEN mysql 1847519288 -
答案1
問題在於伺服器僅在內部監聽。
刪除線解決bind-address 127.0.0.1
了/etc/mysql/my.cnf
問題。
較新版本的 Ubuntu(≥16.04)可能在/etc/mysql/mysql.conf.d/mysqld.cnf
.
答案2
我的建議是,如果您確定連接埠已關閉(我發現 VPS 關閉該連接埠很奇怪),則更改 MySQL 的設定檔以使用另一個連接埠。
只需在終端機中打開配置文件,sudo nano /etc/mysql/mysql.conf
然後查找該[mysqld]
部分。在其中尋找顯示為 的行port = 3306
。將其更改為另一個未使用的連接埠並儲存檔案。
然後只需重新啟動 VPS 或重新啟動服務,例如sudo service mysql restart
。
請注意,如果該文件mysql.conf
不在我上面提到的文件中,它可能位於其他位置:
/etc/my.conf
/etc/my.cnf
/etc/mysql/my.conf
如果該service
命令不起作用,請執行以下操作:
sudo /etc/init.d/mysql restart
如果問題仍然存在,那麼就我而言,我會檢查iptables(如果可以的話,我實際上會刪除 iptables 中的所有內容以重新開始)或任何其他啟用防火牆的選項。
由於它們是 VPS,我還會檢查 VPS 控制面板,看看它是否有任何可以阻止連接埠的選項。
除此之外,我會nmap
在 VPS 上運行來查看您打開了哪些連接埠。您需要從 VPS 外部運行它來查看它們打開了哪些連接埠。
netstat -tuplen
查看伺服器上開啟的連接埠以及哪些連接埠處於偵聽模式也是一個好主意。
答案3
我透過更改bind-address 127.0.0.1
為bind-address 0.0.0.0
in來修復此問題/etc/mysql/mysql.conf.d
,以便 MySQL 偵聽所有連接埠。
另外,我設定了一個 mysql 使用者帳戶以供遠端使用。如欲了解更多詳情,請參閱不允許主機“xxx.xx.xxx.xxx”連接到此 MySQL 伺服器。
答案4
您的配置可能位於目錄中/etc/mysql/mysql.conf.d/mysqld.cnf
,請驗證是否不是這種情況。