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)
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;
Suivre les deux étapes a parfaitement fonctionné pour moi:
Mettez en commentaire l'adresse de liaison du fichier /etc/mysql/my.cnf
:
#bind-address = 127.0.0.1
Exécutez la requête suivante dans phpMyAdmin:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
$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';
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>
espérons que cela aide quelqu'un ...