GNU/Linux >> Tutoriels Linux >  >> Linux

[Fixe] L'hôte n'est pas autorisé à se connecter à ce serveur MySQL

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. Par défaut, le serveur MySQL accepte uniquement les connexions provenant d'hôtes locaux et non d'autres hôtes.

Pour activer les connexions à distance, nous devons suivre les étapes suivantes -

  1. Activer les connexions à distance depuis la configuration
  2. 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)
  3. Privilèges de rinçage

Activer les connexions à distance à partir de la configuration MySQL

Ouvrez la configuration MySQL à l'aide de votre éditeur de texte préféré, tel que nano. Le fichier MySQL se trouve généralement dans /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

Nous créons un utilisateur mysql avec l'hôte comme 'localhost' pour une utilisation locale, mais lors de l'ajout d'un utilisateur pour les connexions à distance, nous devons remplacer le localhost par l'adresse IP de l'ordinateur distant.

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. Si vous utilisez la deuxième méthode, entrez le mot de passe de l'utilisateur racine MySQL ou le 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)

Nous allons maintenant accorder à l'utilisateur nouvellement créé des autorisations pour gérer une base de données spécifique sur le serveur. Nous pouvons également donner à cet utilisateur l'accès à toutes les bases de données du serveur, mais cela n'est pas recommandé. Je vous recommande de créer une ou plusieurs nouvelles bases de données pour vos applications et d'accorder à cet utilisateur les autorisations nécessaires pour gérer la ou les bases de données.

> 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'@'%';

Si votre serveur de base de données est en production, il est fortement recommandé de ne pas utiliser '%' caractère générique.

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.


Linux
  1. Impossible de se connecter à la base de données ; L'utilisateur existe dans la base de données, mais pas au niveau du serveur

  2. Connectez-vous à un serveur cloud

  3. Connectez-vous à distance à une base de données MySQL

  4. Impossible de se connecter au serveur MySQL erreur 111

  5. 404 not found , l'URL demandée <<url name>> est introuvable sur ce serveur dans wordpress

Erreur de serveur FTP RHEL7 :ftp :connexion :aucune route vers la solution hôte

Comment héberger un site Web sur le serveur Web NGINX

Comment utiliser SSH pour se connecter à un serveur distant

Serveur de base de données MySQL

Le client FTP ne se connecte pas au serveur FTP Microsoft

Comment se connecter à MySQL en utilisant PHP