【问题标题】:Using mysql via SSH (php)通过 SSH 使用 mysql (php)
【发布时间】:2017-07-14 12:07:40
【问题描述】:

尝试通过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 的操作系统窗口。

【问题讨论】:

标签: php mysql mysqli ssh


【解决方案1】:
$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);

【讨论】:

    【解决方案2】:

    创建私钥/公钥并使用 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);
    

    【讨论】:

    • 如果你安装 cygwin 并将 cygwin 的 bin 文件夹附加到你的路径变量,它就可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2014-02-10
    • 2019-02-06
    • 2017-06-19
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多