我的 Ubuntu 服务器上的端口 3306 似乎已关闭

And*_*ndy 40 server mysql

我有两台VPS服务器,都安装了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    -
Run Code Online (Sandbox Code Playgroud)

工作服务器

tcp        0      0 *:mysql                 *:*                     LISTEN      mysql      1847519288  -
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 88

问题是服务器仅在内部侦听。

删除线bind-address 127.0.0.1/etc/mysql/my.cnf解决问题。

较新版本的 Ubuntu (?16.04) 可能在/etc/mysql/mysql.conf.d/mysqld.cnf.

  • 这对我有用。注意正确的文件名是`/etc/mysql/my.cnf`,而不是`/etc/mysql/my.conf`。 (2认同)

Lui*_*ado 10

我的建议是,如果您确定端口已关闭(我发现 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
Run Code Online (Sandbox Code Playgroud)

如果该service命令不起作用,请执行以下操作:

sudo /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)

如果问题仍然存在,那么在我的情况下,我会检查iptables(如果这可能是一个选项,我实际上会删除 iptables 中的所有内容只是为了重新开始)或任何其他启用防火墙的选项。

由于它们是 VPS,我还会检查 VPS 控制面板,看看它是否有任何可以阻止端口的选项。

除此之外,我会nmap在 VPS 上运行以查看您打开了哪些端口。您需要从 VPS 外部运行它以查看它们打开了哪些端口。

netstat -tuplen 查看服务器上有哪些打开的端口以及哪些处于 LISTEN 模式也是一个好主意。


ftc*_*sta 9

我用这个方法:

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
Run Code Online (Sandbox Code Playgroud)

无需更改其他配置文件,默认不开启额外端口。


小智 8

我通过更改bind-address 127.0.0.1bind-address 0.0.0.0in /etc/mysql/mysql.conf.d(以便 MySQL 侦听所有端口)来解决此问题。

另外,我设置了一个远程使用的 mysql 用户帐户(参见/sf/answers/1691977521/)。