php - 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES) using ssh tunnel connection

标签 php mysql ssh phpseclib

我正在使用 phpseclib 为我的应用程序使用 php 连接到 mysql 数据库。 我可以使用 TCP/IP over SSH 连接到 mysql,但我无法将我的代码连接到它。 我首先创建 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讨论如何稍微改进,但即使这样,您也无法使用(例如)prepared statements甚至mysqli_real_escape_string .

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

关于php - 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES) using ssh tunnel connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685618/

相关文章:

mysql - 如何获得3个表列的总和

php - 来自 PHP 和直接在 PHPMyAdmin 的 MySQL 查询的不同 MySQL 行为

Windows 上的 SSH,无需明文存储密码

linux - 通过 ssh 在远程机器上运行 jq 并覆盖文件

php - 使用 php 一次一页地显示数据

java - 如何将变量从 Java 类发送到 PHP 脚本?

php - 为子文件夹安装 Composer

php - 如何在 Magento 1.7.0.2 中的product\view.phtml 中包含 jquery 选项卡

MYSQL一次查询中最常见的列值和AVG

linux - 在 Azure DevOps Pipeline 中提供 SSH 私钥的最佳方式是什么?