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
.)
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.
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.