web-dev-qa-db-fra.com

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

Pourquoi oh pourquoi je ne peux pas me connecter à mysql?

mysql -u root -ptest101 -h xxx.xxx.xxx.xxx
ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server

Dans my.cnf j'ai le dessous

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 0.0.0.0

J'ai aussi couru le dessous ...

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

Je peux accéder à 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 ça se passe? Je ne suis pas 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)
116
Tampa

Votre compte root, et cette déclaration s'applique à tout compte, n'a peut-être été ajouté qu'avec un accès localhost (recommandé).

Vous pouvez vérifier cela avec:

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

Si vous ne voyez que les résultats avec localhost et 127.0.0.1, vous ne pourrez 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 aussi 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: il s'agit de "toute source distante". Si toutefois vous souhaitez que tous/tous les systèmes se connectent via root, utilisez le caractère générique % 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;
254
newfurniturey

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

  1. Mettez en commentaire l'adresse de liaison du fichier /etc/mysql/my.cnf:

    #bind-address = 127.0.0.1

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

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

17
Ravi Garg
$mysql -u root --Host=127.0.0.1 -p

mysql>use mysql

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

mysql>FLUSH PRIVILEGES;

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

mysql> CREATE USER 'name' @ '%' IDENTIFIED BY 'passWord'; Requête OK, 0 ligne affectée (0.00 sec)

mysql> DONNEZ TOUS LES PRIVILEGES SUR . TO 'name' @ '%'; Requête OK, 0 ligne affectée (0.00 sec)

mysql> FLUSH PRIVILEGES; Requête OK, 0 ligne affectée (0.00 sec)

mysql>

  1. Assurez-vous que vous avez bien votre nom et le bon sens
  2. Assurez-vous que vous avez ajouté votre port 3306 à tout pare-feu que vous utilisez peut-être (bien que cela donne un message d'erreur différent)

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

2
HappyCoder