news 2026/7/14 17:10:05

GRANT SELECT, DELETE ON 职工 TO USER1 WITH GRANT OPTION权限授予命令详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GRANT SELECT, DELETE ON 职工 TO USER1 WITH GRANT OPTION权限授予命令详解

一、语句结构分解

GRANT SELECT, DELETE ON 职工 TO USER1 WITH GRANT OPTION;

各部分含义:

部分含义
GRANT授权命令关键字
SELECT, DELETE授予的权限类型
ON 职工权限作用的对象(职工表)
TO USER1权限授予的用户
WITH GRANT OPTION特殊权限选项

二、授予的具体权限

1.SELECT 权限

USER1 可以:

-- 可以执行所有查询操作SELECT*FROM职工;SELECT姓名,年龄FROM职工WHERE性别='男';SELECTCOUNT(*)FROM职工;

2.DELETE 权限

USER1 可以:

-- 可以删除记录DELETEFROM职工WHERE职工号='001';DELETEFROM职工WHERE年龄>60;

3.WITH GRANT OPTION 权限(最关键!)

USER1 可以:

-- 把自己获得的权限再授予别人GRANTSELECTON职工TOUSER2;GRANTDELETEON职工TOUSER3;GRANTSELECT,DELETEON职工TOUSER4WITHGRANTOPTION;-- 甚至可以传递授权权

三、权限层次关系图

管理员(执行原始语句) ↓ USER1(获得:SELECT, DELETE + 授权权) ↓ ↓ ↓ USER2 USER3 USER4 (SELECT)(DELETE)(SELECT+DELETE+授权权)

注意:USER4 因为有WITH GRANT OPTION,可以继续授权给 USER5、USER6…


四、实际应用场景

场景1:部门主管管理权限

-- 管理员授予销售主管权限GRANTSELECT,INSERT,UPDATE,DELETEON销售订单TO销售主管WITHGRANTOPTION;-- 销售主管可以给下属授权GRANTSELECTON销售订单TO销售员1;GRANTSELECT,INSERTON销售订单TO销售员2;

场景2:项目协作

-- 项目经理需要管理项目表GRANTALLON项目表TO项目经理WITHGRANTOPTION;-- 项目经理给团队成员授权GRANTSELECTON项目表TO开发人员;GRANTSELECT,UPDATEON项目表TO测试人员;

五、重要注意事项

1.权限范围限制

USER1 只能:

  • 授予自己已经拥有的权限
  • 授予的权限不能超过自己的权限范围
-- 假设USER1只有SELECT和DELETE权限GRANTINSERTON职工TOUSER2;-- ❌ 失败!USER1没有INSERT权限

2.权限回收问题

-- 如果管理员回收USER1的权限REVOKESELECT,DELETEON职工FROMUSER1CASCADE;-- CASCADE选项会级联回收所有USER1授予的权限-- USER2、USER3等从USER1获得的权限也会被自动回收

3.安全风险

WITH GRANT OPTION可能导致:

  • 权限泛滥:权限被无限传递
  • 管理混乱:难以追踪权限流向
  • 回收困难:需要级联回收

六、不同权限组合示例

只读权限(无授权权):

GRANTSELECTON职工TOUSER1;-- 只能查询,不能授权给他人

读写权限(无授权权):

GRANTSELECT,INSERT,UPDATE,DELETEON职工TOUSER1;

完全控制(有授权权):

GRANTALLPRIVILEGESON职工TOUSER1WITHGRANTOPTION;

七、查看权限信息

1.查看自己的权限:

-- MySQLSHOWGRANTS;SHOWGRANTSFORUSER1;-- SQL ServerSELECT*FROMsys.fn_my_permissions('职工','OBJECT');-- OracleSELECT*FROMUSER_TAB_PRIVS;

2.查看所有用户权限:

-- MySQLSELECT*FROMmysql.tables_privWHERETable_name='职工';-- SQL ServerSELECT*FROMsys.database_permissions;

八、最佳实践建议

  1. 最小权限原则:只授予必要的最小权限
  2. 谨慎使用 WITH GRANT OPTION:只在确实需要权限委派时使用
  3. 定期审计权限
    -- 定期检查谁有授权权SELECTgrantee,privilege_type,is_grantableFROMinformation_schema.table_privilegesWHEREtable_name='职工'ANDis_grantable='YES';
  4. 使用角色管理权限(更安全的方式):
    -- 创建角色CREATEROLE 职工管理员;-- 给角色授权GRANTSELECT,DELETEON职工TO职工管理员WITHGRANTOPTION;-- 将角色赋予用户GRANT职工管理员TOUSER1;

九、常见问题

Q: USER1 可以修改表结构吗?
A: 不可以。只有ALTER权限才能修改表结构,这里只授予了 SELECT 和 DELETE。

Q: USER1 可以删除整个表吗?
A: 不可以。DELETE只能删除记录,DROP TABLE需要DROP权限。

Q: 如果 USER1 离职了怎么办?
A: 管理员应该立即执行:

REVOKEALLPRIVILEGESON职工FROMUSER1CASCADE;

Q: WITH GRANT OPTION 可以只针对部分权限吗?
A: 不可以。WITH GRANT OPTION应用于整个 GRANT 语句授予的所有权限。

这个授权语句在数据库安全管理中非常重要,合理使用可以实现灵活的权限管理,但也需要注意安全风险。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 16:33:35

从机械傀儡到具身智能:机器人控制模型的演变实录

大众往往容易被波士顿动力早期的机器人视频误导,认为机器人技术的进步主要源于液压系统或机械结构的优化。这种观点忽略了问题的本质。机器人进化的核心始终在于控制算法的迭代,即“大脑”的处理逻辑如何从简单的指令执行转变为对物理世界的复杂理解。 确…

作者头像 李华