php模拟ssh方式登录执行mysql语句

如何使用php模拟实现ssh方式登录执行mysql语句输出结果?类似于navicat的SSH连接数据库


查询php.net SSH文档先验证SSH:

$conn=ssh2_connectSSH IP,22;
ssh2_auth_password$conn,SSH USER,SSH PASS;

然后看网上几种不知道是否正确的写法:
1.使用ssh2_tunnel

$tunnel = ssh2_tunnel$conn, REMOTE MYSQL IP, 3307;
$mysqli=new mysqli127.0.0.1,MYSQL USER,MYSQL PASS,MYSQL DB,3307,$tunnel;
$result=$mysqli->query$SQL;

2.使用ssh2_exec

$stream=ssh2_exec$connection,echo "select * from db.table where id="1";" | mysql;

3.使用shell_exec

shell_exec"ssh -f -L 127.0.0.1:3307:127.0.0.1:3306 user@remote.rjmetrics.com sleep 60 >> logfile"; $db = mysqli_connect127.0.0.1, MYSQL USER,MYSQL PASS,MYSQL DB, 3307;

…好像还有使用ssh2_shell的,在不知道数据库服务器可以执行那些脚本的情况下怎么写这个连接?

可以参看我的笔记介绍SSH2的

连接到远程shell:

$connection = ssh2_connectexample.com, 22; if ssh2_auth_password$connection, root, password { echo "Authentication Successful!
";
} else { dieAuthentication Failed...;
}

执行命令:

$stream = ssh2_exec$connection, mysql -uroot -p密码;use 数据库名;select * from table_name;

获取返回结果:

stream_set_blocking$stream, true;
$stream_out = ssh2_fetch_stream$stream, SSH2_STREAM_STDIO;
echo stream_get_contents$stream_out;

发表评论

电子邮件地址不会被公开。 必填项已用*标注