ssh 上的端口 3306 是完美的,但当我使用 php 进行 MySQL 连接时却不行

ssh 上的端口 3306 是完美的,但当我使用 php 进行 MySQL 连接时却不行

我正在尝试设置我的服务器以接受到 MySQL 的远程连接。现在可以使用 ssh 中的此命令: mysql -u testuser -h my.ip.address.here -p但是当我尝试使用 php 执行 mysqli 连接时,我收到一条错误消息:

Can't connect to MySQL server on my.ip.address.here

如果我使用 mysql connect,我会得到Lost connection to MySQL server during query

如果我通过 telnet 连接到我的 IP 地址上的 3306 端口,我会得到以下信息:

Got packets out of order, connection to host lost

我以为这会很简单,而且很容易通过 ssh 连接。我也可以使用 HeidiSql 程序正常连接。我在 IP 地址上安装了 Plesk,所以这也许会造成干扰,但我不这么认为。

谁知道可能出了什么问题?

答案1

如果执行了sudo netstat -lntp | grep 3306,最后会出现什么进程?是mysqld,还是某个 Plesk 进程?如果是某个 Plesk 进程,则需要弄清楚如何将所有表加载到 Plesk 的 MySQL 实例中,或者弄清楚如何停止 Plesk 的 MySQL 并将其所有数据加载到 MySQL 实例中。将mysqldump是您的朋友。

你的 iptables 过滤器是什么样的?如果可以,请尝试iptables -I INPUT -p tcp --dport 3306 -d my.ip.address.here -s your.originating.ip.address -j ACCEPT。这将允许从你的 IP 地址到主机的流量通过 MySQL 使用的端口上的目标 IP 地址。

答案2

在 /etc/my.cnf 中,确保“skip-networking”没有被注释掉。

相关内容