2026各大厂Java面试高频题汇总(附答案),今年面试官就问这些
2026/6/8 18:03:47
在 MySQL 中,用户查看自己的权限和设置(修改)权限是两个不同的操作:
GRANT OPTION)下面分两部分详细说明:
SHOW GRANTS(最推荐)-- 查看当前用户的全部权限SHOWGRANTS;✅ 输出示例:
+------------------------------------------------------------------+|Grantsfor'app_user'@'%'|+------------------------------------------------------------------+|GRANTUSAGEON*.*TO`app_user`@`%`||GRANTSELECT,INSERT,UPDATEON`shop_db`.*TO`app_user`@`%`|+------------------------------------------------------------------+
USAGE表示“能连接”,无实际数据权限- 第二行表示:对
shop_db库的所有表有查询、插入、更新权限
-- 查看当前会话使用的账号SELECTUSER();-- 你登录时用的账号(如 'app_user'@'192.168.1.50')SELECTCURRENT_USER();-- MySQL 实际用于权限校验的账号(如 'app_user'@'%')💡 通常
CURRENT_USER()才是权限匹配的依据。
-- 检查是否对某个库有 SELECT 权限SELECTTABLE_SCHEMAASdatabase_name,PRIVILEGE_TYPEFROMINFORMATION_SCHEMA.SCHEMA_PRIVILEGESWHEREGRANTEE=CONCAT('''',REPLACE(CURRENT_USER(),'@','''@'''),'''')ANDPRIVILEGE_TYPE='SELECT';⚠️ 普通用户一般用不到,
SHOW GRANTS已足够。
🔒重要前提:
普通用户无法给自己授权!必须由具有GRANT OPTION权限的管理员(如 root)执行。
mysql -u root -pGRANT语句授予权限-- 授予 app_user 对 shop_db 库的 增删改查 权限GRANTSELECT,INSERT,UPDATE,DELETEONshop_db.*TO'app_user'@'%';-- 刷新权限(MySQL 8.0+ 通常不需要,但安全起见可加)FLUSHPRIVILEGES;GRANTSELECTONshop_db.*TO'readonly_user'@'192.168.1.%';GRANTALLPRIVILEGESONshop_db.*TO'admin_user'@'localhost';GRANTSELECTONshop_db.*TO'user'@'%'WITHGRANTOPTION;| 权限 | 作用 |
|---|---|
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
CREATE | 创建表/库 |
DROP | 删除表/库 |
ALTER | 修改表结构 |
INDEX | 创建/删除索引 |
EXECUTE | 执行存储过程 |
ALL PRIVILEGES | 所有权限(不含GRANT OPTION) |
📌 语法格式:
GRANT权限列表ON数据库.表TO'用户名'@'主机';
管理员可查看刚授予的权限:
SHOWGRANTSFOR'app_user'@'%';用户重新连接后即可使用新权限。
管理员也可随时收回权限:
-- 撤销 app_user 的 DELETE 权限REVOKEDELETEONshop_db.*FROM'app_user'@'%';-- 撤销所有权限REVOKEALLPRIVILEGES,GRANTOPTIONFROM'app_user'@'%';SHOW GRANTS;快速了解自己能做什么mysql.user表(会导致权限不一致)DROP)'app_user'@'10.0.0.%'而非'app_user'@'%'GRANT报错 “Access denied”?A:你当前用户没有
GRANT OPTION权限。请联系 DBA 或用 root 操作。
A:检查:
- 是否连接的是正确的数据库?
- 用户 host 是否匹配?(
'user'@'localhost'≠'user'@'%')- 是否需要重启应用?(某些连接池会缓存权限)
A:可以,但极少用:
GRANTSELECT(name,email)ONshop_db.usersTO'user'@'%';
| 操作 | 谁执行 | 命令 |
|---|---|---|
| 查看自己权限 | 任意用户 | SHOW GRANTS; |
| 授予/修改权限 | 管理员 | GRANT ... TO 'user'@'host'; |
| 撤销权限 | 管理员 | REVOKE ... FROM 'user'@'host'; |
🔐核心原则:
权限管理 = 安全基石,务必遵循最小权限、明确范围、定期审计。