在MySQL中查看用户权限,可以通过系统自带的命令和表来实现。最常用的方法是使用 SHOW GRANTS 命令,也可以直接查询 mysql.user 表或 information_schema 相关视图。
1. 使用 SHOW GRANTS 查看指定用户的权限
这是最简单直接的方式。执行以下命令即可查看某个用户的权限:SHOW GRANTS FOR '用户名'@'主机名';
例如,查看用户 'john' 从本地登录的权限:SHOW GRANTS FOR 'john'@'localhost';
如果用户是从任意主机登录,可以写成:SHOW GRANTS FOR 'john'@'%';
执行结果会列出该用户的所有授权语句,包括全局权限、数据库级别权限等。2. 查看当前登录用户的权限
如果你只想查看自己当前用户的权限,可以直接运行:SHOW GRANTS;
这条命令不需要指定用户名,默认显示当前会话用户的权限。3. 查询 mysql.user 表查看全局权限
mysql.user 表存储了每个用户的全局权限信息。你可以用 SELECT 查询特定用户的权限字段:SELECT * FROM mysql.user WHERE User = '用户名' AND Host = '主机名'\G
例如:SELECT User, Host, Select_priv, Insert_priv, Update_priv, Delete_priv, Super_priv FROM mysql.user WHERE User = 'john';注意:这些 _priv 字段值为 'Y' 表示有权限,'N' 表示没有。
4. 查看数据库或表级别的权限
更细粒度的权限(如某数据库或某张表)存储在其他系统表中: 数据库级别权限:查询 mysql.db 表 表级别权限:查询 mysql.tables_priv 表 列级别权限:查询 mysql.columns_priv 表 例如查看某用户在某个数据库的权限:SELECT * FROM mysql.db WHERE User = 'john' AND Db = 'test_db';
基本上就这些方法。日常使用推荐优先用 SHOW GRANTS,清晰直观。需要批量检查或脚本处理时,再查系统表更灵活。
