[英]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
其他開關有:
私鑰認證,在上面添加(-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 driver
、host
、db (schema) name
和charset
,以及不太常用的port
和unix_socket
進入 DSN;username
和password
轉到構造函數;- 所有其他選項進入選項數組。
其中
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()); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.