167 votes

ERREUR 1130 (HY000) : L'hôte '' n'est pas autorisé à se connecter à ce serveur MySQL

Pourquoi diable je ne peux pas me connecter à mysql?

mysql -u root -ptest101 -h xxx.xxx.xxx.xxx
ERROR 1130 (HY000): L'hôte 'xxx.xxx.xxx.xxx' n'est pas autorisé à se connecter à ce serveur MySQL

Dans mon fichier my.cnf j'ai ceci

# Au lieu de skip-networking, la valeur par défaut est d'écouter uniquement sur
# localhost ce qui est plus compatible et pas moins sécurisé.
bind-address        = 0.0.0.0

J'ai également exécuté ceci...

'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root';
FLUSH PRIVILEGES;

Je peux y accéder sur la machine hôte en utilisant mysql -u root -ptest101 mais pas en utilisant mysql -u root -ptest101 -h xxx.xxx.xxx.xxx

Wow...pourquoi cela se produit-il? Je suis sur Ubuntu 12.04

mysql> SELECT host FROM mysql.user WHERE User = 'root';
+---------------------------------------------+
| host                                        |
+---------------------------------------------+
| %                                           |
| 127.0.0.1                                   |
| ::1                                         | |
| localhost                                   |
+---------------------------------------------+
5 rows in set (0.00 sec)

408voto

newfurniturey Points 16866

Votre compte root, et cette déclaration s'applique à tout compte, peut uniquement avoir été ajouté avec un accès en local (ce qui est recommandé).

Vous pouvez vérifier cela avec:

SELECT host FROM mysql.user WHERE User = 'root';

Si vous ne voyez que des résultats avec localhost et 127.0.0.1, vous ne pouvez pas vous connecter depuis une source externe. Si vous voyez d'autres adresses IP, mais pas celle à partir de laquelle vous vous connectez - c'est également une indication.

Vous devrez ajouter l'adresse IP de chaque système auquel vous souhaitez accorder l'accès, puis accorder des privilèges:

CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address';

Si vous voyez %, eh bien, il y a un autre problème car c'est "n'importe quelle source distante". Si toutefois vous souhaitez que tous les systèmes se connectent via root, utilisez le joker % pour accorder l'accès:

CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

Enfin, rechargez les autorisations, et vous devriez pouvoir avoir un accès à distance:

FLUSH PRIVILEGES;

28voto

Ravi Garg Points 84

Suivre les deux étapes suivantes a parfaitement fonctionné pour moi :

  1. Commentez l'adresse de liaison du fichier /etc/mysql/my.cnf :

    #bind-address = 127.0.0.1

  2. Exécuter la requête suivante dans phpMyAdmin :

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

22voto

Ouvrir MySQL via le terminal

mysql -u root --host=127.0.0.1 -p

Choisir la base de données

mysql>use mysql

Accorder l'accès

mysql>GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'redhat@123';

Actualiser les droits

mysql>FLUSH PRIVILEGES;

Vérifier le statut de l'utilisateur

mysql> SELECT host FROM mysql.user WHERE User = 'root';

2voto

HappyCoder Points 114

mysql> CRÉER UN UTILISATEUR 'nom'@'%' IDENTIFIÉ PAR 'motdepasse'; Requête OK, 0 lignes affectées (0,00 sec)

mysql> ACCORDER TOUS LES PRIVILÈGES SUR . À 'nom'@'%'; Requête OK, 0 lignes affectées (0,00 sec)

mysql> VIDAGE DES PRIVILÈGES; Requête OK, 0 lignes affectées (0,00 sec)

mysql>

  1. Assurez-vous d'avoir votre nom et % dans le bon sens
  2. Assurez-vous d'avoir ajouté votre port 3306 à tout pare-feu que vous pourriez exécuter (bien que cela donnera un message d'erreur différent)

espérons que cela aidera quelqu'un...

-1voto

peterpan1215 Points 17

Pour ceux qui peuvent accéder à cpanel, il y a une façon plus simple de contourner cela.

  1. connectez-vous à cpanel => "MySQL à distance" sous la section BASE DE DONNÉES :

  2. Ajoutez les IPs / nom d'hôte depuis lesquels vous accédez

  3. c'est fait!!!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X