![](/img/trans.png)
[英]PHP Laravel - How to dynamically connect Via SSH to a MySQL database
[英]Connect to a mysql database via SSH through PHP
我已經編寫了一個在本地連接到mysql數據庫的php文件。 現在,我想通過SSH連接到遠程數據庫。 目前我的數據庫的連接函數在php中如下:
$this->db = new mysqli(_SERVR_URL, _SERVR_USER , _SERVR_PASS, _SERVR_DB);
if ($this->db->connect_errno) {
echo "Failed to connect to MySQL: (" . $this->db->connect_errno . ") " . $this->db->connect_error;
}
else{
//echo "Successfully connected!! <BR><BR>";
}
我只想更改連接函數(上面),以便其余的代碼仍然有效。 我已經成功安裝了phpseclib並且對安裝php的ssh擴展不感興趣,因為經過近5個小時的努力,這些擴展無法正常工作。 phpseclib正在工作,我認為這是因為當我使用require時它不會死。
但是,當我嘗試開始使用ssh的東西時,它會拋出一個服務器錯誤:
$ssh = new Net_SSH1(myURL);
我通常SSH到我的服務器的方式是使用.pem文件。 我可以得到一些指導:
我覺得你在這個上運氣不好。 您可以在PHP代碼中使用ssh擴展,或者如果您有權訪問服務器,則可以嘗試在命令行上創建ssh隧道。
但是,您可能需要特殊權限才能執行此操作。 看起來您還沒有ssh訪問此主機帳戶。
副本由@jpm回答
設置 @ÓlafurWaage 在PHP上通過SSH連接到MySQL服務器時發布的隧道
這個由@Sosy進行隧道挖掘
shell_exec(“ssh -f -L 3307:127.0.0.1:3306 user@remote.rjmetrics.com sleep 60 >> logfile”);
$db = mysqli_connect(’127.0.0.1′, ‘sqluser’, ‘sqlpassword’, ‘rjmadmin’, 3307);
mysql擴展目前不支持這個。 修改擴展本身可能並不困難,但在那一點上,它必須是一個自定義的PECL擴展,充其量。 這個想法在一段時間后在PHP Internals郵件列表中進行了討論:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.