我正在使用 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/