【发布时间】:2016-08-26 22:02:49
【问题描述】:
现在我正在创建一个 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 $sshuser@$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
【问题讨论】:
-
ssh 隧道是否保持活动状态?数据库服务器是否已经在端口 3307 上本地运行?该用户真正的 MySQL 服务器连接/身份验证权限是什么?
-
您找到解决方案了吗?
标签: php database pdo connection ssh-tunnel