Position actuelle: Accueil> Derniers articles> Comment résoudre le problème de l'erreur "hôte non autorisé à connecter" dans la fonction PHP Connect?

Comment résoudre le problème de l'erreur "hôte non autorisé à connecter" dans la fonction PHP Connect?

M66 2025-08-05

L'une des erreurs courantes lors de l'utilisation de PHP pour les connexions de la base de données, en particulier lors de l'utilisation de mysqli_connect () ou de l'OPD pour se connecter aux bases de données est:

 Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server

Ce message d'erreur signifie que le serveur de base de données rejette la demande de connexion de l'hôte client actuel, principalement parce que la configuration d'autorisation sur le serveur de base de données ne permet pas à l'adresse IP du client de se connecter.

Cet article expliquera en détail comment dépanner et résoudre ce problème.


1. Comprendre la cause de l'erreur

Lorsqu'un serveur MySQL permet aux utilisateurs de se connecter, il vérifie non seulement le nom d'utilisateur et le mot de passe, mais vérifie également l'adresse de l'hôte à partir de laquelle la connexion provient. Autrement dit, même si le nom d'utilisateur et le mot de passe sont corrects, il sera refusé si l'hôte de connexion n'est pas autorisé.

Par défaut, MySQL permet uniquement les connexions locales (natif) et les connexions distantes nécessitent une configuration supplémentaire.


2. Vérifiez le nom d'hôte ou la propriété intellectuelle utilisée par la connexion

Dans quel nom d'hôte ou IP est passé lors de la connexion? Généralement écrit en code PHP comme ceci:

 $mysqli = new mysqli('db.m66.net', 'user', 'password', 'database');

Assurez-vous que le nom d'hôte ici est le nom IP ou de domaine correct pour le serveur de base de données.


3. Autoriser la connexion à l'hôte

Pour résoudre le problème "hôte non autorisé à connecter", vous devez autoriser l'hôte client spécifié sur le serveur MySQL.

En supposant que votre nom d'utilisateur de base de données est DBUser , vous devez autoriser les connexions à partir de l'hôte distant IP 123.123.123.123 :

 GRANT ALL PRIVILEGES ON database.* TO 'dbuser'@'123.123.123.123' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Si vous souhaitez autoriser toutes les connexions de l'hôte (non recommandées pour les environnements de production), vous pouvez utiliser le caractère% générique:

 GRANT ALL PRIVILEGES ON database.* TO 'dbuser'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

4. Modifier la configuration MySQL pour permettre des connexions distantes

MySQL est lié à 127.0.0.1 par défaut, et seul l'accès natif est restreint.

Ouvrez le fichier de configuration MySQL (généralement /etc/mysql/my.cnf ou /etc/mysql/mysql.conf.d/mysqld.cnf ) et trouvez cette ligne:

 bind-address = 127.0.0.1

Changez-le en:

 bind-address = 0.0.0.0

Redémarrez ensuite le service MySQL:

 sudo service mysql restart

5. Configuration du pare-feu

Assurez-vous que le pare-feu du serveur permet un accès externe au port par défaut MySQL 3306.

Par exemple, utilisez UFW :

 sudo ufw allow 3306/tcp

6. Exemple de code PHP

En supposant que l'adresse du serveur de base de données est db.m66.net , le code de connexion Exemple:

 <?php
$host = 'db.m66.net';
$user = 'dbuser';
$password = 'password';
$dbname = 'database';

$mysqli = new mysqli($host, $user, $password, $dbname);

if ($mysqli->connect_error) {
    die('Échec de la connexion: (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

echo 'Connexion avec succès!';

$mysqli->close();
?>

7. Suggestions de dépannage supplémentaires

  • Confirmez que le nom d'utilisateur et le mot de passe sont corrects.

  • Confirmez que les réseaux PHP et MySQL Server sont interopérables, et vous pouvez utiliser Ping ou Telnet DB.M66.net 3306 pour tester.

  • Vérifiez les autorisations d'utilisateur de la base de données pour vous assurer que l'utilisateur a la permission d'accéder à la base de données spécifiée.

  • Vérifiez le journal d'erreur MySQL pour plus de détails.