簡體   English   中英

通過SSH使用mysql(php)

[英]Using mysql via SSH (php)

嘗試通過ssh2和php連接到遠程mysql。

$ssh_server='';
$ssh_port='';
$ssh_user='';
$ssh_password='';

$ssh_connection=ssh2_connect($ssh_server, $ssh_port);
$ssh_auth=ssh2_auth_password($ssh_connection, $ssh_user, $ssh_password);
$ssh_tunnel = ssh2_tunnel($ssh_connection, $ssh_server, $ssh_port);

$db_hostname = 'localhost';
$db_database = '';
$db_username = '';
$db_password = '';
$db_port = '3306';

$connection_mysql = new mysqli($db_hostname, $db_username, $db_password, $db_database, $db_port);

隧道是可以的,但是我看到mysql使用我的本地mysql數據庫,而不是通過SSH遠程。 那么,如何通過SSH使用mysql?

帶有WAMP的OS窗口。

創建私鑰/公鑰並使用ssh設置密鑰認證(又名無密碼認證)。

然后在您的php腳本中運行此代碼

shell_exec("ssh -f -L 3307:localhost:3306 myuser@10.0.0.1 sleep 10 >> logfile");

然后像這樣創建數據庫連接:

$pdo = new PDO("mysql:host=$servername;dbname=$dbname;port=3307", $username, $password);
$ssh_connection = ssh2_connect($ssh_server, $ssh_port);
ssh2_auth_password($ssh_connection, $ssh_user, $ssh_password);
$query="SET CHARACTER SET utf8; use ${db_database}; ${query};";
$query=str_replace('"', '\'', stripslashes($query));
$ssh_query="ssh -L 3307:${ssh_server}:${ssh_port}; echo \"${query}\" | mysql -u ${db_username} -h ${db_hostname} --password=${db_password}";
$result=ssh2_exec($ssh_connection, $ssh_query);

暫無
暫無

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

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