首頁  >  文章  >  後端開發  >  如何修復 PHP 透過 SSH 連接 MySQL 時的 mysqli_connect() 參數問題?

如何修復 PHP 透過 SSH 連接 MySQL 時的 mysqli_connect() 參數問題?

Barbara Streisand
Barbara Streisand原創
2024-10-21 22:30:02731瀏覽

How to Fix mysqli_connect() Parameter Issue When Connecting to MySQL over SSH with PHP?

在 PHP 中透過 SSH 連接到 MySQL 伺服器

使用 PHP 函數透過 SSH 建立與遠端 Linux 電腦上託管的 MySQL 資料庫的連接可能具有挑戰性。使用提供的程式碼時,可能會出現錯誤「mysqli_connect() Expectsparameter 6 to be string, Resource給定的」。

理解問題

程式碼嘗試使用 mysqli_connect() 函數來透過 SSH 隧道連接到資料庫。但是,mysqli_connect() 函數需要一個字串作為第六個參數(表示隧道),而 ssh2_tunnel() 函數傳回一個資源。

使用 SSH 隧道解決問題

要解決解決此問題,請設定到 MySQL 資料庫伺服器的 SSH 隧道。一種有效的方法是使用 Jumpbox 代理來增強安全性。此方法涉及使用 SSH 用戶端建立本機連接埠轉送隧道,從而有效地在本機電腦和資料庫伺服器之間建立安全通道。

分步指南

使用命令行工具(SSH 隧道設置):

  1. 從本地終端執行以下SSH 命令:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • 替換'3307 ' 替換為您首選的本地連接埠號碼。
  • 將 '10.3.1.55:3306' 替換為您的 MySQL 資料庫伺服器的 IP 位址和連接埠。
  • 將 '[email protected]' 替換為您的 Jumpbox登入憑證。

連接到資料庫:

  1. 在PHP 腳本中,使用mysqli_connect() 建立資料庫連線:
<code class="php">$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");</code>
  • 使用SSH 隧道設定中指定的本機連接埠號碼(本例為3307)。

其他注意事項:

  • 使用支援 SSH 隧道的 GUI MySQL 用戶端(例如 Visual Studio Code)可以簡化設定過程。
  • 私鑰驗證可以增強安全性。使用 SSH 命令中的“-i”開關指定您的私鑰路徑。
  • 透過 Jumpbox/Bastion 主機進行隧道流量以緩解直接資料庫存取漏洞。

以上是如何修復 PHP 透過 SSH 連接 MySQL 時的 mysqli_connect() 參數問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn