簡體   English   中英

通過PHP通過SSH連接到mysql數據庫

[英]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文件。 我可以得到一些指導:

  1. 為什么當前代碼可能會拋出錯誤?
  2. 如果這是可能的。
  3. 您將如何使用.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郵件列表中進行了討論:

http://comments.gmane.org/gmane.comp.php.devel/79520

暫無
暫無

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

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