當前位置: 首頁>>技術教程>>正文


端口3306在我的Ubuntu服務器上似乎已關閉

,

問題描述

我有兩台VPS服務器,並且都安裝了MySQL服務器,一台用於測試,一台用於開發。我的一台服務器不允許我從外部連接。與用戶;

‘mytestuser’@’%’

根據an open port finder,有問題的服務器的端口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  -

最佳回答

問題在於服務器僅在內部進行偵聽。

/etc/mysql/my.cnf刪除行bind-address 127.0.0.1解決了該問題。

較新版本的Ubuntu(≥16.04)在/etc/mysql/mysql.conf.d/mysqld.cnf中可能有此行。

次佳回答

我的建議是,如果您確定端口已關閉(對於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中的所有內容隻是為了重新開始)或任何其他firewall-enabled選項。

由於它們是VPS,因此我還將檢查“ VPS控製麵板”以查看是否有任何選項可以阻止端口。

除此之外,我將在VPS上運行nmap來查看您打開了哪些端口。您需要從VPS外部運行它,以查看它們打開了哪些端口。

netstat -tuplen也是一個好主意,以查看服務器上有哪些打開的端口以及哪些處於偵聽模式。

第三種回答

我通過將/etc/mysql/mysql.conf.d中的bind-address 127.0.0.1更改為bind-address 0.0.0.0來解決此問題(以便MySQL偵聽所有端口)。

另外,我設置了一個供遠程使用的mysql用戶帳戶(請參閱https://stackoverflow.com/a/24171107/132374)。

第四種回答

我使用這種方法:

sudo ufw status
sudo ufw allow XXXX/tcp
# use a port other than the default/predictable 3306
# work outside, and close the door when you are done
sudo ufw deny XXXX/tcp

無需更改其他配置文件,默認情況下也無需打開其他端口。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8403.html,未經允許,請勿轉載。