然后,我开始想我应该问每个人这个问题:
多年来,我一直注意到在安装 MySQL 5.0+ 时,mysql.db填充了两个条目,允许匿名用户访问测试数据库。
您可以通过运行此查询来查看它:
mysql> select * from mysql.db where SUBSTR(db,1,4) = 'test'\G
*************************** 1. row ***************************
Host: %
Db: test
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
*************************** 2. row ***************************
Host: %
Db: test\_%
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y …Run Code Online (Sandbox Code Playgroud) 我以前在 MySQL 中访问 root 用户就好了。但最近,我再也不能了。
我可以正常登录:
mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
这是登录后的mysql状态:
mysql> status
--------------
mysql Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (i686) using readline 6.2
Connection id: 37
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 4 min 16 sec
Threads: 1 …Run Code Online (Sandbox Code Playgroud) 我试图从我的 mysql.users 数据库中删除匿名用户。但是,我一直有奇怪的行为。当我输入命令时:
DROP User ''@'WOPR';
Run Code Online (Sandbox Code Playgroud)
我收到一条通用错误消息。所以,我重新启动了我的机器,并再次尝试。这次我得到了回应
Query OK, 0 rows affected.
Run Code Online (Sandbox Code Playgroud)
但是当我投入
SELECT User, Host, Password FROM mysql.user WHERE User='';
回报是:
+------+------+----------+
| User | Host | Password |
+------+------+----------+
| | WOPR | |
+------+------+----------+
Run Code Online (Sandbox Code Playgroud)
(WOPR 是我的主机名)
我运行命令
DROP User ''@'WOPR';
并得到相同的结果。
我正在 Arch Linux 内核版本 2.6.33 上运行全新安装的 MySQL 5.5。
有谁知道什么会导致这种行为?
在本地测试 wamp 设置上使用 phpmyadmin,以及几乎标题所述,有 3 个用户标记为 user = ANY,password = NO,例如:
USER | HOST | Password | Global Priv | Grant
-----+---------+----------+-------------+------
Any | % | No | USAGE | No
Any | Local | No | USAGE | No
Any | Domain | No | USAGE | No
-----+---------+----------+-------------+------
Run Code Online (Sandbox Code Playgroud)
3 个任何用户都没有任何表的任何特定权限,因此看起来他们无能为力。这是某种通用安全措施,明确声明不属于任何其他用户组的“任何”用户没有特权吗?