php 无法通过 SSH 隧道连接到 MySQL

php 无法通过 SSH 隧道连接到 MySQL

我已经通过 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

  1. mysqli构造函数接受指定端口的第 5 个可选参数。您应该使用

    $mysqli = new mysqli("127.0.0.1", "root", "root", "database_name", "3307");
    

反而。

  1. 您是否已验证可以从其他主机连接到端口?Mysql 通常使用 unix 域套接字而不是端口(您也可以转发)。

    ssh -fNg -L /var/run/mysqld/mysqld.sock:/var/run/mysqld/mysqld.sock root@server_ip
    

相关内容