"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo solucionar el problema del parámetro mysqli_connect() al conectarse a MySQL a través de SSH con PHP?

¿Cómo solucionar el problema del parámetro mysqli_connect() al conectarse a MySQL a través de SSH con PHP?

Publicado el 2024-11-06
Navegar:993

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

Conectarse a un servidor MySQL a través de SSH en PHP

Establecer una conexión a una base de datos MySQL alojada en una máquina Linux remota a través de SSH usando funciones de PHP puede ser un desafío. El error "mysqli_connect() espera que el parámetro 6 sea una cadena, recurso proporcionado" puede ocurrir al usar el código proporcionado.

Comprensión del problema

El código intenta usar la función mysqli_connect() para conectarse a la base de datos a través de un túnel SSH. Sin embargo, la función mysqli_connect() espera una cadena como sexto parámetro (que indica el túnel), mientras que la función ssh2_tunnel() devuelve un recurso.

Resolviendo el problema con el túnel SSH

Para resolver Para solucionar este problema, configure un túnel SSH hacia su servidor de base de datos MySQL. Un método eficaz es utilizar un proxy Jumpbox para mejorar la seguridad. Este enfoque implica crear un túnel de reenvío de puerto local utilizando el cliente SSH, creando efectivamente un canal seguro entre su máquina local y el servidor de base de datos.

Guía paso a paso

Uso Herramientas de línea de comandos (configuración del túnel SSH):

  1. Desde su terminal local, ejecute el siguiente comando SSH:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • Reemplace '3307' con su número de puerto local preferido.
  • Reemplace '10.3.1.55:3306' con la dirección IP y el puerto de su servidor de base de datos MySQL.
  • Reemplace '[correo electrónico protegido]' con sus credenciales de inicio de sesión de Jumpbox.

Conectándose a la base de datos:

  1. En su script PHP, establezca la conexión de la base de datos usando mysqli_connect():
$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");
  • Utilice el número de puerto local (3307 en este ejemplo) especificado en la configuración del túnel SSH.

Consideraciones adicionales:

  • El uso de un cliente GUI MySQL con soporte de túnel SSH (por ejemplo, Visual Studio Code) puede simplificar el proceso de configuración.
  • La autenticación de clave privada puede mejorar la seguridad. Utilice el modificador '-i' en el comando SSH para especificar la ruta de su clave privada.
  • Haga un túnel del tráfico a través de un Jumpbox/Bastion Host para mitigar las vulnerabilidades de acceso directo a la base de datos.
Declaración de liberación Este artículo se reimprime en: 1729520899 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3