2014-01-21 132 views
0

我想連接到服務器上的MySQL,但服務器只能通過SSH訪問。 我使用phpseclib與SSH連接。這是成功的。 但是,當嘗試連接到MySQL它說:訪問被拒絕。 所以,我有這些代碼。任何人都請幫助我..使用phpseclib通過SSH連接MySQL的PHP​​代碼

<?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'); 

?> 
+0

嘗試登錄到服務器使用SSH,然後嘗試連接到MySQL,看看這是否工作。 –

+0

什麼是完整的MySQL錯誤代碼?另外,如果這是一個遠程數據庫,MySQL必須具有遠程訪問權限。 –

+0

@PanamaJack:沒有錯誤,但它仍然加載很長時間。仍然沒有結果。 當這段代碼被刪除時: echo $ ssh-> exec('mysql -h 10.81.229.31 -u root -p testing'); 它會顯示消息:登錄成功。 如何知道服務器上的MySQL有遠程訪問權限?我嘗試使用'PUTTY'並且它是成功的... –

回答

0

嘗試沒有空格。例如。

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

從 「人MySQL的」 引用:

--password [=密碼],-P [口令]

+0

這是正確的,不能相信我沒有聽清楚 – sunshinekitty

+0

我會嘗試..感謝.. –

+0

三江源非常多......這是正確的.. 更迭登錄到MySQL 我會後正確的代碼。 –

1

當你在盒子裏面SSH方式登錄,你應該引用數據庫爲localhost

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

命令:'mysql -h localhost -u root -p testing' 它與PUTTY一起工作,但它爲什麼不能從php代碼中工作.. 我很困惑^ _^ –

+0

您也可以嘗試不包括-h論點 – sunshinekitty

+0

仍然沒有工作.. 我可以問你,你知道如何使用代碼$ ssh-> write()嗎? 你能舉個例子嗎..先謝謝 –

0
<?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"; 
} 

?> 

\ r \ n是使用了ENTER 結果:

Login to Server SuccessLogin to MySQL Success 

謝謝大家,誰已經幫我..

+0

如果你正在做'$ ssh-> write',你只需要\ r \ n;)否則,看起來不錯! – neubert