首页 > 解决方案 > 授予 Oracle 用户只读到特定视图

问题描述

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

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

然后,使用 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

标签: databaseoraclestandards

解决方案


下面创建一个具有查询另一个模式中的视图/表所需的最低权限集的用户。如果用户能够查询其他表/视图,那么他们必须通过其他授权或角色在其他地方获得授权。

create user MyUser identified by testpassword account unlock;

grant create session to MyUser;

grant read on MyApp.MyView to MyUser;

推荐阅读