grant和revoke的区别

坦白讲,GRANT和REVOKE是数据库的“权力分配者”。
它们比你想象的更灵活,但很容易陷入麻烦。
GRANT语法看似简单,但“with grant option”这个东西尤为关键。
去年我们启动这个项目的时候,在授权开发团队的时候忘记加上这句话了。
结果,他们甚至无法更改新员工的数据——授权转移被中断。
用行话来说,这称为“授权链断裂”。
事实上,正是前面的一个小小的延误导致后面的一切都倒塌了。
此外,权限类别也很混乱。
例如,SELECT 和 UPDATE 不能混淆。
去年,因为这个,团队想用UPDATE修改数据,结果权限不够。
检查了很久才发现语法错误。

我最初以为REVOKE只是删除权限,但后来我发现这是错误的。
有一种场景需要特别注意——比如使用REVOKE SELECT ON SC FROM PUBLIC时,如果后来删除了SC表,这个命令会直接报错。
很多人都没有注意到这一点,说实话,这还挺坑人的。

建议新手先在测试环境中练习一下,尤其是与WITH GRANT OPTION和CASCADE/RESTRICT的结合。
如果你过多地使用 REVOKE 命令,你的手可能会发抖,所以不用担心。

oracle如何授权

哎,说到Oracle数据库授权,就需要讲一下了。
我多年来一直访问问答论坛,并看到很多人在这个论坛上犯了错误。

首先,您需要使用特权帐户(例如 SYSDBA 或对象所有者)连接到数据库。
我曾经有一位同事使用的帐户权限不足。
结果账号授权的时候出现了问题。
我当时不明白其中的原因。

确认您的帐户后,您应该知道您要授权给谁。
Oracle中有多种类型的权限,例如SELECT、INSERT和UPDATE,所有这些权限都是针对特定的数据库对象(例如表或视图)的。
还有系统权限,例如CREATE SESSION,允许用户连接到数据库。

那么就需要定义授权对象。
它是表、视图还是角色?例如,如果要对用户进行授权,则需要知道哪个表或视图或哪个角色。

接下来,使用 GRANT 运算符进行授权。
非常简单,只有几行代码。
例如,如果要授予用户 Scott 查询和插入 emp 表的权限,请编写 GRANT SELECT, INSERT ON emp TO scott;。
我以前做过这个。
当时数据库中的数据并不多,授权也很快。

系统权限的授权也类似,就是直接向用户写入GRANT系统权限;。
我记得有一天,一位新同事想要创建一个表,所以我给了他 CREATETABLE 权限。

如果要授权角色,那就更简单了:直接GRANT角色名给用户;。
之前我帮助团队授权自定义角色,整合多个权限,方便管理。

授权后,不要忘记提交更改。
Oracle GRANT语句通常会自动提交,但有时我还是显式写COMMIT;万一。

如果需要撤销权限,请使用REVOKE语句。
例如,如果要撤销用户 scott 查询 emp 表的权限,请编写 REVOKE SELECT ON emp FROM斯科特;.
注意事项:首先是最小权限原则。
仅授予必要的权限,不要滥用它们。
权限的继承也很重要,可以通过基于角色的授权来简化管理。
另外,使用 GRANT OPTION 时要小心,因为它可能会导致权限滥用。

最后给大家举个例子。
创建hr_clerk角色,然后向employees表授予SELECT和INSERT权限,然后将该角色授予user1 并直接向user2 授予UPDATE权限。
这样,您就可以灵活控制数据库权限的分配。

MySQL中GRANT授权详解mysql中gran授权

哎,还记得2 02 2 年的那个项目,当时我们用的是MySQL授权,真是头疼。
当时我很困惑,不知道如何使用ALLOW作为只是往返。
后来我发现权限列表里已经清楚了权限key。

您可以看到 SELECT 是给定查询,INDO 是插入,UPDATE 是更新,DELETE 是删除。
您必须维护这些基本权限。
那么CREATE就是创建数据库或者表,DROP就是删除。
这两个权限应该小心使用,以免人们随意删除东西。

曾几何时,国家是我们社会的一部分,许可证是必要的。
我写了这样的语句:GRANTSELECT、INSERT、UPDATE、DELETEONtestdb.TOmary@1 9 2 .1 6 8 .0.1 00IDENTIFIEDBY'password';为此我后来发现我走得更远,人人都可以结婚。
如果出了问题怎么办?
然后我添加了CREATE和DROP权限,同样是这句话:CONCRETE, DROPONtestdb.TOmary@1 9 2 .1 6 8 .0.1 00IDENTIFIEDBY'password';但玛丽拥有所有的操作权限。

后来公司总部要求我把所有权限都给root用户,于是我写道:GRANTALLPRIVILEGESON.TOroot@localhostIDENTIFIEDBY'password';嘿嘿,这次他可真是负全责了。

然后权限也被撤销。
你将能够利用这个事实,否则,如果发生什么事情,你将很快撤回你的赦免。
我刚刚写道:REVOKESELECT,INSERTONtestdb.FROMjohn@localhost;该语句的意思是撤消选择并插入 John 的权限。

总之,牌照发放的时候,一定要小心,不要误事。
不然万一出了什么事,你就麻烦了。
我们必须保证数据库的安全,对吗?

oracle 将一个已有用户的所有权限给另一个用户,怎么快速实现

我记得上次我帮助邻居小组的一位新 DBA 时。
他接管了旧系统,用户权限变得一团糟。
我告诉他,不要更改每个权限,而是将旧用户的所有权限都给新用户,以免出现麻烦。

当我在键盘上打字时,SQLPlus 界面刚刚打开。
他坐在我旁边,手指还在敲击着键盘,似乎还有点紧张。
我说,别担心。
授予授权后,您可以转到 DBA_TAB_PRIVS 并检查是否包含所有内容。

他检查完后,我让他再试一次,看是否可以向表中插入数据。
当他这样做时,嘿,它成功了。
当时他笑着说,原来事情就是这么简单。
我看着他,突然想到,如果给了这个力量,万一他的手滑了,又变了怎么办?