簡體   English   中英

使用 ssh 隧道連接的用戶 'root'@'localhost' 的訪問被拒絕(使用密碼:YES)

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

我正在使用 phpseclib 連接到 mysql 數據庫,並為我的應用程序使用 php。 我可以使用 TCP/IP over SSH 使用工作台連接到 mysql 沒有問題,但我無法將我的代碼連接到它。 我首先創建一個 ssh 連接,然后我從 mysql 連接和查詢開始,但我有這個錯誤

mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (使用密碼: 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"');

使用 phpseclib 庫連接到 mysql 數據庫討論了如何稍微改進它,但即使這樣,您也無法使用(例如) 准備好的語句甚至mysqli_real_escape_string

恕我直言,最好的解決方案是使用AutoSSH 之類的東西

我已閱讀您的所有答案,並嘗試以傳統方式連接,而不使用 ssh 函數。 像這樣:

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

使用服務器 ip 作為“主機”,來自 mysql 的用戶名和密碼,但我現在收到此消息:

mysqli_connect(): (HY000/2002):連接嘗試時出錯,因為連接方一段時間沒有響應,或者連接主機沒有響應建立連接錯誤。

這種方式在我使用 localhost 時有效,但在這種情況下不適用於遠程服務器。 所有登錄數據都可以,我可以通過工作台毫無問題地連接到數據庫(我必須通過 SSH 使用 TCP/IP 與工作台連接)但我不知道為什么我無法連接到 php。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM