Maison >développement back-end >tutoriel php >Comment résoudre l'erreur « mysqli_connect() s'attend à ce que le paramètre 6 soit une chaîne, ressource donnée » lors de la connexion à MySQL via SSH en PHP ?

Comment résoudre l'erreur « mysqli_connect() s'attend à ce que le paramètre 6 soit une chaîne, ressource donnée » lors de la connexion à MySQL via SSH en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-21 22:32:02485parcourir

How to Resolve

Connexion à un serveur MySQL via SSH en PHP

Problème :

Vous avez rencontré une erreur lors de la connexion à votre base de données à l'aide de SSH et du bibliothèque ssh2. Plus précisément, l'erreur est "mysqli_connect() s'attend à ce que le paramètre 6 soit une chaîne, ressource donnée."

Explication du problème :

Le message d'erreur ci-dessus suggère que vous avez transmis un type incorrect au sixième paramètre de la fonction mysqli_connect.

Solution :

Pour résoudre le problème, transmettez une chaîne au lieu d'une ressource comme sixième paramètre. Dans votre cas, ce paramètre devrait être le chemin d'accès au socket du tunnel SSH.

Configuration du tunnel SSH :

Pour vous connecter à un serveur MySQL via SSH, vous devrez configurer un tunnel SSH en suivant les étapes suivantes :

1. Commande du tunnel SSH :

ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • '-f' : Exécuter en arrière-plan
  • '-N' : Ne pas exécuter de commande à distance
  • '-L' : Activer la redirection de port local
  • '3307' : Port local sur votre machine
  • '10.3.1.55' : Adresse du serveur MySQL distant
  • '3306' : Port du serveur MySQL distant
  • '[email protected]' : hôte proxy SSH et nom d'utilisateur

2. Connexion client MySQL :

Une fois le tunnel configuré, vous pouvez vous connecter à votre serveur MySQL à l'aide de votre client MySQL local :

mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
  • '- h' : Adresse du serveur MySQL local
  • '-P' : Numéro de port local
  • '-u' : Nom d'utilisateur MySQL
  • '-p' : Mot de passe MySQL

3. Connexion PHP :

Enfin, connectez-vous à votre serveur MySQL dans votre application PHP :

<code class="php"><?php
$smysql = mysql_connect("127.0.0.1:3307", "dbuser", "passphrase");
mysql_select_db("db", $smysql); 
?></code>

Note de sécurité :

Pour une utilisation améliorée sécurité, utilisez un hôte bastion (Jumpbox) comme proxy SSH au lieu de vous connecter directement à votre serveur MySQL.

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