如何在 PHP 中通过 SSH 连接到 MySQL 服务器:故障排除和最佳实践

Mary-Kate Olsen
发布: 2024-10-21 22:30:30
原创
615 人浏览过

How to Connect to a MySQL Server Over SSH in PHP: Troubleshooting and Best Practices

在 PHP 中通过 SSH 连接到 MySQL 服务器

概述

通过 SSH 连接到远程 MySQL 服务器需要在本地之间建立安全隧道机和 MySQL 数据库服务器。本指南概述了使用 PHP 设置 SSH 隧道和连接到数据库所涉及的步骤。

错误解决

错误“mysqli_connect() 期望参数 6 为字符串,给定资源”当 mysqli_connect() 的第六个参数不是表示 MySQL 隧道的字符串时,会发生这种情况。要解决此问题,请将第六个参数更改为 ssh2_tunnel 函数的输出,如下所示:

<code class="php">$connection = ssh2_connect('SERVER IP', 22);

ssh2_auth_password($connection, 'username', 'password');

$tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307);

$db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 
                         'dbname', 3307, stream_get_contents($tunnel))
    or die ('Fail: '.mysql_error());</code>
登录后复制

安全端口转发

通过以下方式连接到 MySQL 服务器的推荐解决方案SSH是建立SSH隧道。以下是设置隧道的两个选项:

GUI 工具

使用提供内置 SSH 隧道支持的 GUI MySQL 客户端,例如 Visual Studio Code 或 TablePlus。

命令Line

使用以下命令设置本地端口转发:

<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email&#160;protected] </code>
登录后复制

建立隧道后,通过 PHP 脚本中的本地端口 (3307) 连接到 MySQL 服务器:

<code class="php"><?php
      $smysql = mysql_connect( &quot;127.0.0.1:3307&quot;, &quot;dbuser&quot;, &quot;passphrase&quot; );
      mysql_select_db( &quot;db&quot;, $smysql ); 
?></code>
登录后复制

安全注意事项

通过 Jumpbox 服务器建立隧道以防止将数据库服务器直接暴露到 Internet 至关重要。此外,请考虑使用 SSH 密钥身份验证代替密码身份验证以增强安全性。

以上是如何在 PHP 中通过 SSH 连接到 MySQL 服务器:故障排除和最佳实践的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!