如何解决通过 SSH 连接到 MySQL
我必须连接到远程数据库。我必须使用 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 !';
}
这个短代码(上面)工作正常。我确实可以访问远程服务器。
new PDO('MysqL:host=111.222.333.444;port=3306;dbname=DB-name','DB-username','DB-password');
如果我尝试(使用端口 12345,用于 SSH 连接):
new PDO('MysqL:host=111.222.333.444;port=12345;dbname=DB-name','DB-password');
致命错误:未捕获的 PDOException:数据包乱序。预期 0 收到 45。数据包大小=4739923
下一个 PDOException: sqlSTATE[HY000] [2006] MysqL 服务器已经消失
另一个信息: 我可以使用 $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 的工作方式可能类似。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。