Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de paramètre mysqli_connect() lors de la connexion à MySQL via SSH avec PHP ?

Comment résoudre le problème de paramètre mysqli_connect() lors de la connexion à MySQL via SSH avec PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 22:30:02731parcourir

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

Connectez-vous à un serveur MySQL via SSH en PHP

Établir une connexion à une base de données MySQL hébergée sur une machine Linux distante via SSH à l'aide des fonctions PHP peut être difficile. L'erreur "mysqli_connect() s'attend à ce que le paramètre 6 soit une chaîne, ressource donnée" peut se produire lors de l'utilisation du code fourni.

Comprendre le problème

Le code tente d'utiliser la fonction mysqli_connect() pour connectez-vous à la base de données via un tunnel SSH. Cependant, la fonction mysqli_connect() attend une chaîne comme sixième paramètre (indiquant le tunnel), tandis que la fonction ssh2_tunnel() renvoie une ressource.

Résoudre le problème avec le tunnel SSH

Pour résoudre ce problème, configurez un tunnel SSH vers votre serveur de base de données MySQL. Une méthode efficace consiste à utiliser un proxy Jumpbox pour améliorer la sécurité. Cette approche consiste à créer un tunnel de redirection de port local à l'aide du client SSH, créant ainsi un canal sécurisé entre votre machine locale et le serveur de base de données.

Guide étape par étape

Utilisation Outils de ligne de commande (configuration du tunnel SSH) :

  1. Depuis votre terminal local, exécutez la commande SSH suivante :
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • Remplacez '3307 ' par votre numéro de port local préféré.
  • Remplacez '10.3.1.55:3306' par l'adresse IP et le port de votre serveur de base de données MySQL.
  • Remplacez '[email protected]' par votre Jumpbox identifiants de connexion.

Connexion à la base de données :

  1. Dans votre script PHP, établissez la connexion à la base de données à l'aide de mysqli_connect() :
<code class="php">$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");</code>
  • Utilisez le numéro de port local (3307 dans cet exemple) spécifié dans la configuration du tunnel SSH.

Considérations supplémentaires :

  • L'utilisation d'un client GUI MySQL avec prise en charge du tunneling SSH (par exemple, Visual Studio Code) peut simplifier le processus de configuration.
  • L'authentification par clé privée peut améliorer la sécurité. Utilisez le commutateur « -i » dans la commande SSH pour spécifier le chemin de votre clé privée.
  • Acheminez le trafic via un hôte Jumpbox/Bastion pour atténuer les vulnérabilités d'accès direct à la base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn