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

9

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

Petr Pudlák
la source
J'ai rencontré le même problème, alors que CREATE / DROP l'utilisateur, j'ai vérifié toutes les tables d'octroi des informations utilisateur, je n'ai trouvé aucune information utilisateur, j'ai essayé de révoquer tous les accès et j'ai supprimé l'utilisateur, après un certain temps, l'opération fonctionne, sans faire tout changement, j'ai écrit ma réponse détaillée ici rathishkumar.in/2018/10/…
Rathish

Réponses:

13

Selon les documents, 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 également cette question SO pour plus d'informations.

redguy
la source
1

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 rootutilisateur 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 consistait à ne PAS définir MYSQL_USERet MYSQL_PASSWORDdans les variables d'environnement lors du démarrage de l'image docker.

rahuljain1311
la source
Cela m'a beaucoup aidé! Je ne savais pas pourquoi je ne pouvais pas me connecter à la base de données dans Docker et je n'ai jamais soupçonné que c'était la raison.
dingo_d