当前位置: 首页>>技术教程>>正文


端口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/article/8403.html,未经允许,请勿转载。