![php 无法通过 SSH 隧道连接到 MySQL](https://linux22.com/image/683305/php%20%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20SSH%20%E9%9A%A7%E9%81%93%E8%BF%9E%E6%8E%A5%E5%88%B0%20MySQL.png)
我已经通过 SSH 执行了这两个命令,没有任何错误,然后当我尝试通过 SSH 隧道连接到 MySQL 服务器时,即使我执行像这样的简单查询,也没有得到任何结果select * from table
。
当我访问实时站点中的 php 脚本时没有收到任何错误。
我收到此错误: mysqli::mysqli(): (HY000/2002): Operation timed out
当我访问本地托管的 php 脚本时。
当然,它们都连接到远程 MySQL 服务器。如果这有变化的话,我会在本地安装 Apache 和 MySQL。
当我通过 MySQL 工作台连接时,一切都运行正常。
我也评论了这一行my.cnf
:#bind-address = 127.0.0.1
ssh -fNg -L 3307:127.0.0.1:3306 root@server_ip
mysql -h 127.0.0.1 -P 3307 -u root -p database_name
//php
$mysqli = new mysqli("127.0.0.1:3307", "root", "root", "database_name");
答案1
mysqli
构造函数接受指定端口的第 5 个可选参数。您应该使用$mysqli = new mysqli("127.0.0.1", "root", "root", "database_name", "3307");
反而。
您是否已验证可以从其他主机连接到端口?Mysql 通常使用 unix 域套接字而不是端口(您也可以转发)。
ssh -fNg -L /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock root@server_ip