我已经有这个问题好几个星期了。我不知道下一步该往哪里看。我已经清理,刷新,重新启动MySQL
服务,重新启动Ubuntu
服务器。什么会导致这个WARNING
和用户不显示在user
表中?我也尝试过DROP user
并得到0 rows affected
了结果。这是令人难以置信的令人沮丧!用户信息存储在架构中的其他位置以及如何清除它?
更新
当我 grep 中的用户名时,/var/lib/mysql/mysql
我在db.MYD
文件中找到了用户名。虽然我无法编辑它。所以我知道用户名存在于用户表之外的其他地方。
dig*_*jay 11
当用户被创建并被授予权限,然后从 mysql.user 中删除而不是被删除时,就会发生这种情况:
首先,创建一个用户admin_x@localhost
:
mysql> create user admin_x@localhost identified by 'abc123';
Query OK, 0 rows affected (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
检查用户是否在mysql.user
:
mysql> select user, host from mysql.user where user='admin_x';
+---------+-----------+
| user | host |
+---------+-----------+
| admin_x | localhost |
+---------+-----------+
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
好的。
现在我们授予该用户访问 db 的权限test
:
mysql> grant all on test.* to admin_x@localhost;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
并检查它:
mysql> show grants for admin_x@localhost;
+-----------------------------------------------------------+
| Grants for admin_x@localhost |
+-----------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin_x'@'localhost' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'admin_x'@'localhost' |
+-----------------------------------------------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
现在从以下位置不正确地删除用户mysql.user
:
mysql> delete from mysql.user where user='admin_x';
Query OK, 1 row affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
并且用户不再在mysql.user
:
mysql> select user from mysql.user where user='admin_x';
Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
但是当您现在尝试创建新的时,您会收到一个错误:
mysql> create user admin_x@localhost identified by 'abc123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'admin_x'@'localhost'
Run Code Online (Sandbox Code Playgroud)
那是因为admin_x@localhost
仍然有权限存储在mysql.db
:
mysql> select User from mysql.db where user='admin_x';
+---------+
| User |
+---------+
| admin_x |
+---------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
现在,当您删除用户时
mysql> drop user admin_x@localhost;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
它真的消失了,您可以再次创建它:
mysql> create user admin_x@localhost identified by 'abc123';
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1128 次 |
最近记录: |