Dans PHP, la fonction connect () (ou la fonction de connexion similaire, telle que mysqli_connect () de mysqli) est une étape clé pour implémenter les connexions de la base de données. L'échec de la connexion est un problème courant dans le développement, en particulier pour les débutants, les problèmes de dépannage peuvent être délicats. Cet article analysera en détail les dix principales causes courantes de défaillance de connexion et fournira des solutions correspondantes pour vous aider à localiser les problèmes plus rapidement.
Raison: le nom d'hôte (hôte) de la fonction connect () est incorrectement rempli, qui est souvent écrit comme la mauvaise adresse IP ou nom de domaine.
Solution:
Confirmez si l'adresse du serveur de base de données est correcte. Par exemple, la bonne façon de l'écrire devrait être similaire:
$conn = mysqli_connect('m66.net', 'username', 'password', 'database');
Si la base de données est sur la machine locale, il est recommandé d'utiliser «127.0.0.1» ou «localhost» .
Cause: le compte ou le mot de passe de la base de données est rempli de manière incorrecte, entraînant la défaillance de la vérification d'identité.
Solution:
$conn = mysqli_connect('m66.net', 'Nom d'utilisateur correct', 'Mot de passe correct', 'Nom de base de données');
if (!$conn) {
die('Échec de la connexion,message d'erreur:' . mysqli_connect_error());
}
Assurez-vous que le nom d'utilisateur et le mot de passe sont corrects et ont des droits d'accès.
Cause: MySQL ou un autre service de base de données ne s'exécute pas, ce qui n'a pas pu être établi la connexion.
Solution:
Confirmez que le service de base de données a été démarré. Peut être exécuté via la ligne de commande:
sudo service mysql status
Ou utilisez l'outil de gestion des services du système pour démarrer le service.
Cause: le pare-feu bloque l'accès au port de base de données (par défaut 3306).
Solution:
Vérifiez les paramètres du pare-feu du serveur pour vous assurer que le port 3306 (ou le port personnalisé) est ouvert. Commandes couramment utilisées dans Linux:
sudo ufw allow 3306
Les serveurs cloud peuvent également avoir besoin de modifier les règles de groupe de sécurité.
Cause: le mauvais numéro de port a été spécifié lors de la connexion.
Solution:
Le port par défaut est 3306. Si la base de données utilise un port personnalisé, il est nécessaire de le spécifier clairement:
$conn = mysqli_connect('m66.net', 'username', 'password', 'database', 3307);
Cause: l'utilisateur n'est pas autorisé à accéder à la base de données à partir de l'hôte actuel.
Solution:
Connectez-vous à la base de données et exécutez la commande d'autorisation:
GRANT ALL PRIVILEGES ON database.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Ici, «%» signifie que tout hôte est autorisé à accéder et qu'une adresse IP spécifique peut également être spécifiée.
Cause: l'extension MySQLI ou PDO n'est pas installée dans l'environnement PHP, ou la version est incompatible.
Solution:
Vérifiez si l'environnement PHP a correctement installé les extensions pertinentes:
php -m | grep mysqli
Si vous n'êtes pas installé, vous devez utiliser le gestionnaire de packages pour l'installer, tel que:
sudo apt-get install php-mysqli
Cause: retard de réseau ou instabilité, demande de connexion exprimée.
Solution:
Essayez de pinging sur le serveur de base de données et confirmez que le réseau est fluide:
ping m66.net
Optimisez l'environnement réseau ou ajoutez les paramètres de délai d'expiration de la connexion si nécessaire.
Cause: le nom de domaine ne peut pas être résolu correctement, entraînant la défaillance de la connexion.
Solution:
Essayez de vous connecter avec une adresse IP à la place, ou vérifiez la configuration DNS native:
$conn = mysqli_connect('192.168.1.100', 'username', 'password', 'database');
Cause: la version de la base de données du serveur restreint certaines méthodes de connexion ou des fichiers de configuration tels que My.cnf restreint les connexions distantes.
Solution:
Vérifiez le fichier de configuration de la base de données et confirmez l'adresse de liaison:
bind-address = 0.0.0.0
Indique que toutes les connexions IP sont autorisées et efficaces après le redémarrage du service de base de données.