使用 ssh 隧道连接拒绝用户 'root'@'localhost'(使用密码:YES)的访问

Access denied for user 'root'@'localhost' (using password: YES) using ssh tunnel connection

我正在使用 phpseclib 为我的应用程序连接到 mysql 数据库和 php。 我可以通过 SSH 使用 TCP/IP 连接到 mysql 和 workbench 而没有问题,但我无法将我的代码连接到它。 我首先创建了一个 ssh 连接,然后我从 mysql 连接和查询开始,但是我有这个错误

mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)

我发现有些人使用类似“$ssh->exec('mysql -u user -p password') 的命令来连接到 mysql 但在那之后,我该如何进行所有查询?因为我理解,"exec" 命令是向服务器控制台发送命令?

这是我的代码,希望你能帮助我: 这是conexion.php

include('Net/SSH2.php');
include('remote_conexion.php');

$db_host="127.0.0.1"; 
$db_user="root";
$db_password=" ";
$db_name="mascotas"; 
$ssh = new Net_SSH2($host);
if (!$ssh->login($sftp_user, $sftp_password)) {
    exit('Login Failed');
}
$connection = mysqli_connect($db_host, $db_user, $db_password, $db_name);

这是 remote_conexion.php(忽略 "sftp" 东西,我用它来管理文件)

include('Net/SFTP.php');
$host="***.***.**.***";              
$sftp_user="user";              
$sftp_password="*******";   
$port="22";

   $sftp = new Net_SFTP($host);
if (!$sftp->login($sftp_user, $sftp_password)) {
    exit('Login Failed');
}

phpseclib(目前)不支持隧道。即使可以,您也无法使用 mysqli_connect - 您必须有一个纯 PHP MySQL 实现,有点像 https://github.com/amphp/mysql .

取而代之的是你能做的最好的事情(使用 phpseclib)是这样的:

echo $ssh->exec('mysql -uUSER -pPASSWORD DATABASE -e "SQL COMMAND"');

connect to the mysql database using phpseclib library talks about how to improve on that slightly but even with that you're not going to be able to make use of (for example) prepared statements or even mysqli_real_escape_string.

恕我直言,最好的解决方案是使用类似 AutoSSH

的方法

我已经阅读了您的所有回答,并尝试通过传统方式进行连接,而不使用 ssh 功能。就像这样:

 $connection = mysqli_connect($host, $db_user, $db_password, $db_name);

使用服务器 ip 作为 "host",用户名和密码来自 mysql 但我现在收到此消息:

mysqli_connect(): (HY000/2002):An error occurred during the connection attempt since the connected party does not respond after a period of time, or an established connection error occurred that the connected host has not responded.

这种方式在我使用本地主机时有效,但在这种情况下不适用于远程服务器。 所有登录数据都没问题,我可以通过 workbench 连接到数据库没有问题(我必须通过 SSH 使用 TCP/IP 连接到 workbench)但我不知道为什么我可以'连接 php.