我有两台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.
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 模式也是一个好主意。
我用这个方法:
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.1为bind-address 0.0.0.0in /etc/mysql/mysql.conf.d(以便 MySQL 侦听所有端口)来解决此问题。
另外,我设置了一个远程使用的 mysql 用户帐户(参见/sf/answers/1691977521/)。