我有一个表table1,我想给用户user1赋予table1的SELECT权限。
我将使用下面的查询来授予SELECT。
grant select on table1 to user1;
但是在生产中,我不知道所有grant user1对table1有什么。那么,如果user1已经对table1拥有SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER和INDEX权限,只执行SELECT权限,会发生什么呢?
SELECT
授权将被添加到该用户的任何现有授权中,如果它当前不存在。
"如果您授予用户权限,则数据库将该权限添加到用户的权限域中。">
请参阅以下文档,了解您的数据库版本(此版本为10g,但仍然适用):
适用的Oracle 10g文档
如果user1已经有SELECT, INSERT,(…)grant在表1上,只执行SELECT格兰特。
什么也不会发生。
GRANT
不工作作为一个开关(即打开一个特权-另一个GRANT
关闭它-另一个打开它…-不)。- 如果你想撤销一个特权,你应该这样做:
REVOKE SELECT ON some_table FROM my_user;
- 如果你想撤销一个特权,你应该这样做:
- 会被"双重授予"吗?(这样你就不得不撤销它两次?)-不,它不会
因此,如果user已经在该表上被授予了SELECT
权限,那么再授予一次权限是无用的,但不会造成任何损害。