Heim >Backend-Entwicklung >PHP-Tutorial >shell - php模拟ssh方式登录执行mysql语句

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

WBOY
WBOYOriginal
2016-06-06 20:09:521606Durchsuche

如何使用php模拟实现ssh方式登录执行mysql语句输出结果?类似于navicat的SSH连接数据库
shell - php模拟ssh方式登录执行mysql语句
shell - php模拟ssh方式登录执行mysql语句
查询php.net SSH文档先验证SSH:

<code>$conn=ssh2_connect('SSH IP',22);
ssh2_auth_password($conn,'SSH USER','SSH PASS');
</code>

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

<code>$tunnel = ssh2_tunnel($conn, 'REMOTE MYSQL IP', 3307);
$mysqli=new mysqli('127.0.0.1','MYSQL USER','MYSQL PASS','MYSQL DB',3307,$tunnel);
$result=$mysqli->query($SQL);
</code>

2.使用ssh2_exec

<code>$stream=ssh2_exec($connection,'echo "select * from db.table where id=\"1\";"  | mysql');
</code>

3.使用shell_exec

<code>shell_exec("ssh -f -L 127.0.0.1:3307:127.0.0.1:3306 user@remote.rjmetrics.com sleep 60 >> logfile");  
$db = mysqli_connect('127.0.0.1', 'MYSQL USER','MYSQL PASS','MYSQL DB', 3307);
</code>

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

回复内容:

如何使用php模拟实现ssh方式登录执行mysql语句输出结果?类似于navicat的SSH连接数据库
shell - php模拟ssh方式登录执行mysql语句
shell - php模拟ssh方式登录执行mysql语句
查询php.net SSH文档先验证SSH:

<code>$conn=ssh2_connect('SSH IP',22);
ssh2_auth_password($conn,'SSH USER','SSH PASS');
</code>

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

<code>$tunnel = ssh2_tunnel($conn, 'REMOTE MYSQL IP', 3307);
$mysqli=new mysqli('127.0.0.1','MYSQL USER','MYSQL PASS','MYSQL DB',3307,$tunnel);
$result=$mysqli->query($SQL);
</code>

2.使用ssh2_exec

<code>$stream=ssh2_exec($connection,'echo "select * from db.table where id=\"1\";"  | mysql');
</code>

3.使用shell_exec

<code>shell_exec("ssh -f -L 127.0.0.1:3307:127.0.0.1:3306 user@remote.rjmetrics.com sleep 60 >> logfile");  
$db = mysqli_connect('127.0.0.1', 'MYSQL USER','MYSQL PASS','MYSQL DB', 3307);
</code>

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

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

连接到远程shell:

<code>$connection = ssh2_connect('example.com', 22);

if (ssh2_auth_password($connection, 'root', 'password')) {
    echo "Authentication Successful!\n";
} else {
    die('Authentication Failed...');
}
</code>

执行命令:

<code>$stream = ssh2_exec($connection, 'mysql -uroot -p密码;use 数据库名;select * from table_name');
</code>

获取返回结果:

<code>stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn