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

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

WBOY
Freigeben: 2016-06-06 20:09:52
Original
1613 Leute haben es durchsucht

如何使用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>
Nach dem Login kopieren
Nach dem Login kopieren

然后看网上几种不知道是否正确的写法:
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>
Nach dem Login kopieren
Nach dem Login kopieren

2.使用ssh2_exec

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

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>
Nach dem Login kopieren
Nach dem Login kopieren

...好像还有使用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>
Nach dem Login kopieren
Nach dem Login kopieren

然后看网上几种不知道是否正确的写法:
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>
Nach dem Login kopieren
Nach dem Login kopieren

2.使用ssh2_exec

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

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>
Nach dem Login kopieren
Nach dem Login kopieren

...好像还有使用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>
Nach dem Login kopieren

执行命令:

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

获取返回结果:

<code>stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);
</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage