MySQL で root としても、削除した単純なユーザーを再作成できないようです。
私の場合: ユーザー「jack」は以前存在していましたが、再作成するために mysql.user から削除しました。そのテーブルにはこの痕跡は見当たりません。このコマンドを他のランダムなユーザー名、たとえば「jimmy」に対して実行すると、正常に動作します (「jack」に対して最初に動作したときと同じように)。
ユーザー「jack」を破損させるために何をしましたか? また、この MySQL インストールの有効なユーザーとして「jack」を再作成するために、その破損を元に戻すにはどうすればよいですか?
以下の例を参照してください。(もちろん、もともと「ジャック」が作成されてから削除されるまでには長い時間がかかりました。)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jack | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
mysql> delete from user where user = 'jack';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
4 rows in set (0.00 sec)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost'
mysql> CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jimmy | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
ベストアンサー1
はい、このバグは存在します。ただし、小さな回避策を見つけました。
- ユーザーがそこにいると仮定して、ユーザーを削除します
- ユーザーを削除した後、mysql権限をフラッシュする必要があります。
- 次にユーザーを作成します。
これで解決するはずです。ユーザー admin @ localhost を作成すると仮定すると、コマンドは次のようになります。
ユーザー admin@localhost を削除します。 権限をフラッシュします。' admins_password ' で識別されるユーザー admin@localhost を作成します。