Lorsque vous utilisez la fonction connect () pour se connecter à une base de données en PHP, la rencontre de l'erreur "Accès refusée" est un problème courant. Cette erreur indique généralement que les autorisations de connexion à la base de données ne sont pas autorisées, entraînant la défaillance de la connexion. Cet article présentera en détail les idées et les méthodes spécifiques pour dépanner de tels problèmes, vous aidant à localiser et à résoudre rapidement les problèmes.
"Accès refusé" est généralement le serveur de base de données rejette la demande de connexion, ce qui peut être dû:
Nom d'utilisateur ou mot de passe incorrect
L'hôte connecté n'est pas autorisé à accéder à la base de données
Autorisations utilisateur de la base de données insuffisantes
Restrictions de configuration du serveur de base de données
Ce type de problème est courant dans les bases de données relationnelles telles que MySQL.
Dans le code PHP, le code se connectant à la base de données est similaire à ce qui suit:
<?php
$servername = "m66.net";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
echo "Connexion avec succès";
?>
Confirmez que le nom d'utilisateur $ et le mot de passe $ sont corrects. Un nom d'utilisateur ou un mot de passe incorrect peut provoquer "l'accès refusé".
Les autorisations d'utilisateur MySQL sont basées sur une combinaison de nom d'utilisateur et d'hôte, telles que user @ localhost et user@192.168.1.1 sont des comptes différents.
Si vous utilisez une adresse IP ou un hôte distant pour vous connecter, confirmez que l'utilisateur de la base de données a accès à l'hôte correspondant:
SELECT user, host FROM mysql.user WHERE user='your_username';
Si les autorisations sont insuffisantes, vous pouvez utiliser la commande suivante pour ajouter des autorisations:
GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'your_client_ip' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
Par défaut, les serveurs MySQL permettent uniquement les connexions locales. Vous devez confirmer si le paramètre Bind-Address dans le fichier de configuration MySQLD permet l'accès à distance.
Habituellement, le fichier de configuration /etc/mysql/my.cnf est en:
bind-address = 0.0.0.0
Indique que toutes les connexions IP sont autorisées. S'il s'agit de 127.0.0.1 , seules les connexions locales sont autorisées.
Le pare-feu peut empêcher le port de base de données (généralement 3306) de s'ouvrir au public, ce qui entraîne l'incapacité de se connecter. Vous pouvez essayer d'utiliser des commandes pour détecter la connectivité du port:
telnet m66.net 3306
Si la connexion échoue, vérifiez les paramètres du pare-feu.
Lorsque la connexion échoue, mysqli_connect_error () peut donner un message d'erreur spécifique:
<?php
$conn = new mysqli("m66.net", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
?>
En combinaison avec des invites d'erreur, effectuez un dépannage ciblé.
Lorsque vous rencontrez une erreur "Accès refusé" dans PHP à l'aide de la fonction connect () , vous devez le vérifier dans les aspects suivants:
Confirmez si le nom d'utilisateur et le mot de passe sont corrects
Confirmez si l'utilisateur de la base de données a accès à l'hôte correspondant
Vérifiez la configuration d'accès à distance du serveur de base de données
Vérifiez les paramètres du réseau et du pare-feu
Utilisez un message d'erreur pour aider à positionner
Grâce aux étapes ci-dessus, vous pouvez essentiellement trouver et résoudre le problème du rejet de connexion.