Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用phpseclib通过SSH连接到MySQL的PHP代码_Php_Mysql_Windows_Ssh_Phpseclib - Fatal编程技术网

使用phpseclib通过SSH连接到MySQL的PHP代码

使用phpseclib通过SSH连接到MySQL的PHP代码,php,mysql,windows,ssh,phpseclib,Php,Mysql,Windows,Ssh,Phpseclib,我想连接到服务器上的MySQL,但服务器只能通过SSH访问。 我使用phpseclib与SSH连接。这是成功的。 但当尝试连接到MySQL时,它说:访问被拒绝。 所以,我有这些代码。任何人都请帮帮我 <?php //data for connection to SSH //host : 10.81.229.31 //user : root //pass : abcde //here's data for connection to MySQL //host = 10.81.229.31

我想连接到服务器上的MySQL,但服务器只能通过SSH访问。 我使用phpseclib与SSH连接。这是成功的。 但当尝试连接到MySQL时,它说:访问被拒绝。 所以,我有这些代码。任何人都请帮帮我

<?php

//data for connection to SSH
//host : 10.81.229.31
//user : root
//pass : abcde

//here's data for connection to MySQL
//host = 10.81.229.31
//username = root
//password = abcde
//database name = testing


include('Net/SSH2.php');

//connecting to server with SSH
$ssh = new Net_SSH2('10.81.229.31');

if (!$ssh->login('root', 'abcde')) {
    exit('Login Failed');
}else{
    echo "Login Success";
}

//connecting to MySQL
echo $ssh->exec('mysql -h 10.81.229.31 -u root -p testing');

?>

当您在框中使用ssh时,您应该将数据库引用为localhost

echo $ssh->exec('mysql -h localhost -u root -ptesting');

不用空格就试试看。例如

echo $ssh->exec('mysql -h localhost -u root -ptesting');
引用《曼恩mysql》的话:

--密码[=密码],-p[密码]


非常感谢所有已经帮助过我的人。

尝试使用ssh登录服务器,然后尝试连接到mysql,看看是否有效。mysql的完整错误代码是什么?另外,如果这是一个远程数据库,MySQL必须具有远程访问权限。@PanamaJack:没有错误,但它仍然会加载很长时间。但仍然没有结果。删除此代码时:echo$ssh->exec('mysql-h10.81.229.31-u root-p testing');它将显示消息:登录成功。如何知道服务器上的MySQL有远程访问权限?我试过使用PUTTY,它成功了…你在PUTTY中使用了完全相同的命令吗?@MarcelBalzer:我使用这个命令'mysql-h localhost-u root-p testing',但当我使用它时,php代码不起作用…命令'mysql-h localhost-u root-p testing'它在PUTTY中起作用,但为什么它在php代码中不起作用。。我很困惑^ ^你也可以尝试不包括-h参数仍然不起作用。。请问,您知道如何使用代码$ssh->write()?你能给我举个例子吗。。在此之前感谢您,您必须在命令之后\n将其与
$ssh->write()
一起使用。但这不是唯一的问题。看到我的答案了。非常感谢。。。是的。。成功登录mySQL我将发布正确的代码。如果您正在执行
$ssh->write
;),则只需要\r\n否则,看起来不错!
<?php

//data for connection to SSH
//host : 10.81.229.31
//user : root
//pass : abcde

//here's data for connection to MySQL
//host = 10.81.229.31
//username = root
//password = abcde
//database name = testing


include('Net/SSH2.php');

//connecting to server with SSH
$ssh = new Net_SSH2('10.81.229.31');

if (!$ssh->login('root', 'abcde')) {
    exit('Login to Server Failed');
}else{
    echo "Login to Server Success";
}

//connecting to MySQL
if (!$ssh->exec('mysql -u root -ptesting \r\n')){
    exit('Login to MySQL Failed');
}else{
    echo "Login to MySQL Success";
}

?>
Login to Server SuccessLogin to MySQL Success