簡體   English   中英

通過 SSH PHP 連接 MySQL 數據庫

[英]Connecting to a MySQL database through SSH PHP

對於我的大學項目,我正在連接到 MySQL 數據庫。 從 covid 19 開始,我不能去大學,所以必須遠程進行,有人可以幫助處理 PHP 連接嗎?

SSH 主機名:ssh.University.uk:2223 SSH 用戶名:s4905304 SHH 密碼:.... SSH 密鑰文件:空白

MySQL 主機名:127.0.0.1 MySQL 服務器端口:3306 用戶名:s4905304 密碼:.....

嘗試這個:

第1步。

設置到MySQL數據庫服務器的SSH tunnel (最好通過Jumpbox以確保安全)。

ssh -fNg -L 3307:10.3.1.55:3306 username@ssh_jumpbox.com 

這里的關鍵是 -L 表示我們正在進行本地端口轉發。

本地端口轉發語法

<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end>
username@ssh_proxy_host.com 

其他開關有:

  • -f(轉到后台)
  • -N(不執行遠程命令)
  • -g(允許遠程主機連接到本地轉發端口)

私鑰認證,在上面添加(-i)開關:

-i /path/to/private-key

第2步。

告訴您的本地MySQL客戶端通過您機器上的本地端口3307 ( -h 127.0.0.1 ) 通過您的SSH tunnel進行連接,它現在通過您在步驟 1 中建立的SSH tunnel轉發發送給它的所有流量。

mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase

客戶端和服務器之間的數據交換現在通過加密的 SSH 連接發送並且是安全的。

不建議直接通過隧道連接到您的數據庫服務器 - 直接從 Internet 訪問數據庫服務器是一項巨大的安全責任。 將隧道目標地址設為 Jumpbox/堡壘主機的 Internet 地址(參見步驟 1 中的示例),並將數據庫設為遠程網絡上數據庫服務器的內部IP 地址。 SSH 將完成剩下的工作。

感謝 Chris Snyder 在http://chxo.com/be2/20040511_5667.html 上的精彩文章

第 3 步。

連接。 DSN

PDO有一種稱為 DSN 的奇特連接方法。 但這並不復雜PDO要求您在三個不同的地方輸入不同的配置指令,而不是一個簡單明了的選項列表:

  • database driverhostdb (schema) namecharset ,以及不太常用的portunix_socket進入 DSN;
  • usernamepassword轉到構造函數;
  • 所有其他選項進入選項數組。

其中DSN是一個以分號分隔的字符串,由param=value對組成,從驅動程序名稱和冒號開始:

 mysql:host=localhost;dbname=test;port=3306;charset=utf8mb4 driver^ ^ colon ^param=value pair ^semicolon

請注意,遵循正確的格式很重要 - 在 DSN 中不必使用空格或引號或其他裝飾,而只需使用參數、值和分隔符,如手冊中所示。

這里有一個MySQL的例子:

 $host = '127.0.0.1'; $db = 'test'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\\PDOException $e) { throw new \\PDOException($e->getMessage(), (int)$e->getCode()); }

引自: https : //phpdelusions.net/pdo#dsn

暫無
暫無

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

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