"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-06
Parcourir:851

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

Se connecter à 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), alors 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 implique la création d'un tunnel de redirection de port local à l'aide du client SSH, créant ainsi un canal sécurisé entre votre ordinateur local 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 vos identifiants de connexion Jumpbox.

Connexion à la base de données :

  1. Dans votre script PHP, établissez la connexion à la base de données en utilisant mysqli_connect():
$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");
  • 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.
Déclaration de sortie Cet article est réimprimé à l'adresse : 1729520899. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3