web-dev-qa-db-fra.com

L'ajout d'un utilisateur à MySQL avec 'name' @ '%' échoue avec ERREUR 1396

J'ai juste essayé d'ajouter un nouvel utilisateur à MySQL en utilisant

CREATE USER 'name'@'%' IDENTIFIED BY '...'

Cependant, il échoue avec l'erreur suivante:

ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%'

Ajouter l'utilisateur juste pour localhost fonctionne très bien:

CREATE USER 'name'@'localhost' IDENTIFIED BY '...'

Je n'ai aucune idée de ce qui pourrait être le problème. Je serais reconnaissant pour toutes les idées.

(J'utilise mysql Ver 14.14 Distrib 5.1.66.)

9
Petr Pudlák

Selon la documentation si vous omettez le @ 'hostname' (c'est-à-dire CREATE USER 'name') MySQL l'interprétera comme s'il avait un @ '%'. Le message d'erreur que vous avez fourni suggère qu'il existe déjà un utilisateur 'nom' @ '%' dans le système:

mysql> CREATE USER 'name'@'%' IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.04 sec)

mysql> CREATE USER 'name'@'%' IDENTIFIED BY 'test';
ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%'
mysql> CREATE USER 'name' IDENTIFIED BY 'test';
ERROR 1396 (HY000): Operation CREATE USER failed for 'name'@'%'

Si vous supprimez l'utilisateur et obtenez toujours le message, essayez d'exécuter FLUSH PRIVILEGES.

Voir aussi this SO question pour des informations supplémentaires.

13
redguy

J'étais confronté à cette même erreur lors de l'utilisation de l'image docker mysql: 5.7. L'erreur principale a été de créer un utilisateur root qui existe par défaut. Plus d'informations: https://github.com/docker-library/mysql/issues/129

Comme indiqué dans le lien ci-dessus, la solution était de ne PAS définir MYSQL_USER et MYSQL_PASSWORD dans les variables d'environnement lors du démarrage de l'image docker.

1
rahuljain1311