web-dev-qa-db-ja.com

'name' @ '%'を使用してMySQLにユーザーを追加すると、エラー1396で失敗する

私はMySQLに新しいユーザーを追加しようとしました

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

ただし、次のエラーで失敗します。

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

Localhostのためだけにユーザーを追加することはうまくいきます:

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

何が問題なのか、私にはわかりません。どんなアイデアでもありがたいです。

(私はmysql Ver 14.14 Distrib 5.1.66。)

9
Petr Pudlák

the docs によると、@ 'hostname'(つまり、CREATE USER 'name')を省略した場合、MySQLはそれを@ '%'があると解釈します。指定したエラーメッセージは、システムにすでにユーザー 'name' @ '%'が存在していることを示しています。

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'@'%'

ユーザーを削除してもメッセージが表示される場合は、FLUSH PRIVILEGESを実行してみてください。

詳細については this SO question も参照してください。

13
redguy

Mysql:5.7 docker imageを使用しているときに、私はこれと同じエラーに直面していました。主な間違いは、デフォルトで存在するrootユーザーを作成しようとしたことです。詳細: https://github.com/docker-library/mysql/issues/129

上記のリンクで示したように、解決策は、Dockerイメージの起動時に環境変数にMYSQL_USERおよびMYSQL_PASSWORDを設定しないことでした。

1
rahuljain1311