首页  >  文章  >  后端开发  >  如何修复 PHP 通过 SSH 连接 MySQL 时的 mysqli_connect() 参数问题?

如何修复 PHP 通过 SSH 连接 MySQL 时的 mysqli_connect() 参数问题?

Barbara Streisand
Barbara Streisand原创
2024-10-21 22:30:02731浏览

How to Fix mysqli_connect() Parameter Issue When Connecting to MySQL over SSH with PHP?

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

使用 PHP 函数通过 SSH 建立与远程 Linux 计算机上托管的 MySQL 数据库的连接可能具有挑战性。使用提供的代码时,可能会出现错误“mysqli_connect() Expectsparameter 6 to be string, Resource给定的”。

理解问题

代码尝试使用 mysqli_connect() 函数来通过 SSH 隧道连接到数据库。但是,mysqli_connect() 函数需要一个字符串作为第六个参数(表示隧道),而 ssh2_tunnel() 函数返回一个资源。

使用 SSH 隧道解决问题

要解决解决此问题,请设置到 MySQL 数据库服务器的 SSH 隧道。一种有效的方法是使用 Jumpbox 代理来增强安全性。此方法涉及使用 SSH 客户端创建本地端口转发隧道,从而有效地在本地计算机和数据库服务器之间创建安全通道。

分步指南

使用命令行工具(SSH 隧道设置):

  1. 从本地终端执行以下 SSH 命令:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • 替换 '3307 ' 替换为您首选的本地端口号。
  • 将 '10.3.1.55:3306' 替换为您的 MySQL 数据库服务器的 IP 地址和端口。
  • 将 '[email protected]' 替换为您的 Jumpbox登录凭据。

连接到数据库:

  1. 在 PHP 脚本中,使用 mysqli_connect() 建立数据库连接:
<code class="php">$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");</code>
  • 使用 SSH 隧道设置中指定的本地端口号(本例中为 3307)。

其他注意事项:

  • 使用支持 SSH 隧道的 GUI MySQL 客户端(例如 Visual Studio Code)可以简化设置过程。
  • 私钥身份验证可以增强安全性。使用 SSH 命令中的“-i”开关指定您的私钥路径。
  • 通过 Jumpbox/Bastion 主机进行隧道流量以缓解直接数据库访问漏洞。

以上是如何修复 PHP 通过 SSH 连接 MySQL 时的 mysqli_connect() 参数问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn