”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何修复 PHP 通过 SSH 连接 MySQL 时的 mysqli_connect() 参数问题?

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

发布于2024-11-06
浏览:579

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

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

使用 PHP 函数通过 SSH 建立与远程 Linux 计算机上托管的 MySQL 数据库的连接可能具有挑战性。使用提供的代码时,可能会出现错误“mysqli_connect()期望参数6为字符串,给定资源”。

理解问题

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

使用 SSH Tunnel 解决问题

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

分步指南

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

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

连接到数据库:

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

其他注意事项:

  • 使用支持 SSH 隧道的 GUI MySQL 客户端(例如 Visual Studio Code)可以简化设置过程。
  • 私钥身份验证可以增强安全性。使用 SSH 命令中的“-i”开关指定您的私钥路径。
  • 通过 Jumpbox/Bastion 主机的隧道流量可缓解直接数据库访问漏洞。
版本声明 本文转载于:1729520899如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3