我有具有管理员权限的用户 admin 和默认的 oracle XE 用户 hr。用户 admin 创建了表 CAR,角色 S 并已授予此角色对表 CAR 的 SELECT。然后管理员将角色 S 授予用户 hr。但是当 hr 尝试 select * from admin.car
时,数据库会给出一个错误,指出这样的表或 View 不存在。
这是代码:
create role S;
grant select on admin.car to S;
grant S to hr;
问题是什么?
最佳答案
当用户登录 Oracle 时,将启用所有默认 角色,但必须使用 SET ROLE 语句启用非默认角色:
SET ROLE S;
将角色设置为默认角色
默认角色意味着该角色在登录时始终为当前 session 启用。它还使得不再需要发出 SET ROLE
语句。要将角色设置为 DEFAULT 角色,您需要发出 ALTER USER 语句:
ALTER USER hr
DEFAULT ROLE S;
引用:
关于sql - Oracle 10 中的 GRANT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4179081/