2016-05-02 58 views
2

が、今私はSSHトンネルを作成していますので、私は私のリモート・データベースに接続できますが、何らかの理由で接続がまだ拒否している... 私のスクリプト:PHPの - PDO SSHトンネル

try { 

    $host = 'remote host'; 
    $sshuser = 'ssh user'; 
    $sshpass = 'ssh password'; 
    $dbuser = 'db user'; 
    $dbpass = 'db user'; 
    $dbname = 'db name'; 

    shell_exec("ssh -p$sshpass ssh -o StrictHostKeyChecking=no -f -L 3307:127.0.0.1:3306 [email protected]$host"); 

    $dbh = new PDO('mysql:host=127.0.0.1;port=3307;dbname=' .$dbname. '', $dbuser, $dbpass); 

    $sth = $dbh->prepare("SELECT * from table"); 

    $sth->execute(); 

    $result = $sth->fetchAll(); 

    print_r ($result); 

    shell_exec("kill $(ssh-pid)"); 

    $dbh = null; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

そして、結果として私は得る:

Error!: SQLSTATE[HY000] [1130] Host 'host' is not allowed to connect to this MySQL server 
+0

sshトンネルはアクティブのままですか? dbサーバーはポート3307でローカルに実行されていますか?そのユーザの本当のMySQLサーバ接続/認証アクセス権は何ですか? – mario

+0

解決策を見つけましたか? – PeMa

答えて

1

それはかなりのエラーメッセージです。 MySQLユーザは、ユーザ名とIPアドレスに基づいて許可を与えられます。データベースユーザーのデータベース権限は、ローカルホストのみに制限されている可能性があります。データベースサーバーで

、このコマンドの結果を確認してください:あなたはあなたのユーザー IPアドレスのエントリが表示されない場合

SELECT User, Host FROM mysql.User; 

、あなたが適切な権限を持つcreate a userする必要があります。

+0

私はこの回答を得られません。つまり、OPはsshを使用してデータベースサーバーにログインします。したがって、localhostだけを聞くだけでいいはずですか?ちょうどそのトンネルの背後にあるアイデアではなく、直接mysqlデータベースへのリモートアクセスを許可していませんか? – PeMa

関連する問題