我正在尝试设置我的服务器以接受到 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”没有被注释掉。