授予 Oracle 用户对特定视图只读

Grant Oracle user Read Only to Specific View

我正在尝试在 Oracle Database 12c 标准版 中创建一个新的数据库用户帐户,该帐户只能访问 运行 特定视图(我们称之为“MyApp.MyView").

我在主应用程序的架构下以管理用户身份创建了一个视图。我创建了用户(详情如下),但它似乎能够查询任何 table 或在应用程序架构中查看。我只希望他们能够查询我制作的特定视图。这能做到吗?

然后,使用 SQLDeveloper,我右键单击 MyView 并授予 MyUser 权限。我可以以 MyUser 的身份查询它,但我也可以查询任何内容,但我不想这样。

-- USER SQL
ALTER USER "MyUser"
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK ;

-- QUOTAS

-- ROLES
ALTER USER "MyUser" DEFAULT ROLE "CONNECT";

-- SYSTEM PRIVILEGES

下面创建了一个用户,该用户具有在另一个模式中查询 view/table 所需的最低权限集。如果用户能够查询其他 tables/views,那么他们一定是在其他地方通过额外的授权或角色被授予的。

create user MyUser identified by testpassword account unlock;

grant create session to MyUser;

grant read on MyApp.MyView to MyUser;