只有“授予使用权”,但仍然可以选择、删除、创建?

Pau*_*nch 5 mysql permissions

我有一个 mysql 用户(我将称之为)“user5”,他在“show grants”的输出中只有“grant usage”(即没有特权),但仍然可以对数据库“app_db”进行选择(这就是我想要,但我确实理解它是如何拥有这种特权的)。没有匿名用户。user5 如何通过这种配置使用其数据库?

以 user5 登录时:

mysql> show grants;
+--------------------------------------------------------------------------------------------------------------+
| Grants for user5@10.14.%                                                                                   |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user5'@'10.14.%' IDENTIFIED BY PASSWORD '*long hash' |
+--------------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

以 root 身份登录时,查看 User 表:

mysql> select User, Host, Select_priv from mysql.user;
+----------+---------------+-------------+
| User     | Host          | Select_priv |
+----------+---------------+-------------+
| root     | localhost     | Y           |
| root     | 127.0.0.1     | Y           |
| root     | 10.14.12.8    | Y           |
| user5    | 10.14.%       | N           |
| (other named non-root users)           |
+----------+---------------+-------------+
Run Code Online (Sandbox Code Playgroud)

...然而,作为 user5,“select * from app_db.users”返回结果。

Jos*_*ber 5

最有可能的是,您的 user5 具有数据库(即模式)权限,而不是服务器范围的权限。所以看这里。

USE app_db;
SHOW GRANTS FOR user5;
Run Code Online (Sandbox Code Playgroud)

或在数据字典中检查相同:

SELECT *
FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
WHERE GRANTEE LIKE '%user5%';
Run Code Online (Sandbox Code Playgroud)

如果没有,那么也许也检查

SELECT *
FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
WHERE GRANTEE LIKE '%user5%';
Run Code Online (Sandbox Code Playgroud)