Les développeurs d'applications peuvent rencontrer des difficultés pour se connecter à une base de données hébergée sur un serveur autre que le serveur local. Dans cet article, nous allons résoudre une erreur courante qui se produit lors de la connexion à distance à une base de données MySQL depuis l'extérieur du réseau ou depuis un autre hôte.
SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server
L'erreur se produit lorsque la demande de connexion est rejetée par le serveur MySQL.
Pour activer les connexions à distance, nous devons suivre les étapes suivantes -
- Activer les connexions à distance depuis la configuration
- Créez un nouvel utilisateur et autorisez-le à se connecter au serveur de base de données à partir de l'hôte spécifique (ou de tous les hôtes)
- Privilèges de rinçage
Activer les connexions à distance à partir de la configuration MySQL
/etc/mysql/my.cnf
ou /etc/my.cnf
ou /etc/mysql/mysql.conf.d/mysqld.cnf
. L'emplacement du fichier de configuration MySQL dépend de la version de MySQL que vous utilisez. Vérifiez tous ces emplacements pour voir si vous pouvez trouver le fichier de configuration. Veuillez rejoindre notre serveur Discord et faites-nous savoir si vous n'avez pas encore trouvé le fichier de configuration. Peut-être pouvons-nous vous aider.
Une fois trouvé le fichier de configuration, ouvrez-le et commentez la ligne bind-address = 127.0.0.1
.
Ajoutez simplement # avant la ligne pour la commenter.
# bind-address = 127.0.0.1
Créer un nouvel utilisateur MySQL
Connectez-vous à MySQL en tant que root –
sudo mysql
Or
mysql -u root -p
Selon la méthode que vous sélectionnez, vous serez invité à entrer votre mot de passe. sudo
mot de passe si vous vous connectez avec sudo
.
Une fois dans la ligne de commande MySQL, créez un nouvel utilisateur –
> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
Veuillez remplacer "nom d'utilisateur ' avec le nom d'utilisateur souhaité, 'set-password ‘ avec le mot de passe fort, et ‘adresse IP ' avec l'adresse IP distante dans la commande ci-dessus. Vous devriez voir le message suivant si le nouvel utilisateur est créé –
Query OK, 0 rows affected (0.02 sec)
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
Veuillez remplacer le nom d'utilisateur dans la commande précédente par le nom d'utilisateur réel et l'adresse IP avec l'adresse IP de l'ordinateur distant (hôte). Une fois cela fait, veuillez vider les privilèges pour que les modifications prennent effet.
> FLUSH PRIVILEGES;
Autoriser toutes les connexions à distance
Comme dans la commande précédente, j'ai demandé de remplacer l'adresse IP par l'adresse IP de l'ordinateur distant. Seules les connexions à partir de cet ordinateur distant seront autorisées. Cependant, nous pouvons également utiliser le caractère générique '%' pour autoriser toutes les connexions, qu'elles proviennent de votre ordinateur ou de ce gars du sous-sol qui a besoin d'accéder à votre base de données pour des raisons personnelles. 😉 Ils devront cependant entrer les bons identifiants pour accéder à la base de données.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
Autoriser les connexions à partir d'une plage d'adresses IP
Si les serveurs distants se trouvent sur le même réseau, leurs adresses IP peuvent facilement être autorisées pour autoriser les connexions à distance sans avoir besoin de plusieurs utilisateurs MySQL.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';
Remarquez comment le dernier octet de l'adresse IP a été remplacé par * dans la commande ci-dessus. Cela permet à tous les serveurs avec cette adresse IP de commencer par 172.19.0.