私は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
。)
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 も参照してください。
Mysql:5.7 docker imageを使用しているときに、私はこれと同じエラーに直面していました。主な間違いは、デフォルトで存在するroot
ユーザーを作成しようとしたことです。詳細: https://github.com/docker-library/mysql/issues/129
上記のリンクで示したように、解決策は、Dockerイメージの起動時に環境変数にMYSQL_USER
およびMYSQL_PASSWORD
を設定しないことでした。