在mysql数据库管理中,查看用户权限是日常运维和安全的常见需求。通过正确的命令和查询,可以清楚知道某个账号能访问哪些库表以及拥有什么操作能力。

使用SHOW GRANTS查看权限
最简单直接的方式是使用SHOW GRANTS语句,它可以显示指定用户被赋予的全部权限语句。
-- 查看当前登录用户的权限 SHOW GRANTS; -- 查看指定用户的权限,注意用户名和主机要用引号 SHOW GRANTS FOR 'testuser'@'localhost';
执行后返回的结果类似GRANT SELECT, INSERT ON `db1`.* TO 'testuser'@'localhost',这就是该用户的授权情况。
查询mysql系统权限表
如果需要更底层的信息,可以直接查询mysql系统库中的权限表。常用表包括user、db、tables_priv和columns_priv。
| 表名 | 说明 |
|---|---|
| user | 全局级别权限,如是否允许连接、超级权限 |
| db | 数据库级别权限 |
| tables_priv | 表级别权限 |
| columns_priv | 列级别权限 |
-- 查询用户全局权限 SELECT user, host, Select_priv, Insert_priv FROM mysql.user WHERE user = 'testuser'; -- 查询用户在具体库的权限 SELECT user, host, db, Select_priv FROM mysql.db WHERE user = 'testuser';
使用information_schema查看
还可以通过information_schema.USER_PRIVILEGES来获取用户权限概要。
SELECT * FROM information_schema.USER_PRIVILEGES WHERE GRANTEE LIKE "'testuser'@'localhost'";
注意事项
- 查看其他用户权限需要有足够的系统权限,通常管理员账号才可执行。
- 主机部分必须与创建用户时一致,如'user'@'127.0.0.1'和'user'@'localhost'被视为不同账号。
- 权限修改后,已连接会话可能不会立即生效,必要时使用
FLUSH PRIVILEGES。
掌握mysql如何查看用户权限,有助于快速定位访问异常并规范账号管理。