[英]Connect to MySQL over SSH
我必须连接到远程数据库。 我必须使用 SSH 连接到远程服务器才能连接到数据库。 我可以使用 MySQLWorkbench 做到这一点:访问数据库没有问题。
我可以告诉我的网站连接到远程服务器:(我使用 phpseclib,因为 PHP libssh2 拒绝与我合作)
$ssh = new SSH2('111.222.333.444', 12345);
if (!$ssh->login("SSH-username", "SSH-password")) {
echo 'Error';
} else {
echo 'Tadam !';
}
这个短代码(上面)工作正常。 我确实可以访问远程服务器。
如果我添加这个(使用默认的 MySQL 端口 3306):
new PDO('mysql:host=111.222.333.444;port=3306;dbname=DB-name', 'DB-username', 'DB-password');
PHP 显示“致命错误”(仅此而已...)
如果我尝试这样做(使用端口 12345,用于 SSH 连接):
new PDO('mysql:host=111.222.333.444;port=12345;dbname=DB-name', 'DB-username', 'DB-password');
PHP 显示:
致命错误:未捕获的 PDOException:数据包乱序。 预计收到 0 45。数据包大小=4739923
Next PDOException: SQLSTATE[HY000] [2006] MySQL server has gone away
另一个信息:我可以使用 $ssh->exec() 读取数据库,但我想使用 PDO 来执行此操作
$ssh->exec('mysql -uDB-username -pDB-password DB-name -e "SELECT * FROM table"');
我必须承认所有这些 SSH 的东西都不是我的领域......我真的不明白它是如何工作的或我必须做什么......
我知道在 stackoverflow 上已经提出了一些类似的问题,我阅读了它们,但我仍然无法连接到这个远程数据库。
请帮我。
引用https://marc.info/?l=php-internals&m=136320712022835&w=2 :
使用类似 autossh 的东西来维护您的 ssh 隧道并让 PHP 连接到您的隧道端点不是更有意义吗? PHP 中的 mysqli_connect() 只是底层库顶部的一个薄包装器。
我的猜测是 PDO 可能工作方式类似。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.