设计并创建角色并授权给其它用户(如SCOTT用户) 被授权的用户(如SCOTT用户)拥有你在4中创建的模式对象(STU)的select, insert和delete权限,但不立即激活delete权限 被授权用户拥有管理select和insert权限的权力
时间: 2023-12-06 15:39:35 浏览: 96
你可以按照以下步骤来完成角色的创建和授权:
1. 首先,以管理员身份登录到Oracle数据库中。
2. 创建一个新的角色,命名为“STU_ACCESS”:
```
CREATE ROLE STU_ACCESS;
```
3. 授权给SCOTT用户:
```
GRANT STU_ACCESS TO SCOTT;
```
4. 授权STU表的select、insert和delete权限给STU_ACCESS角色:
```
GRANT SELECT, INSERT, DELETE ON STU TO STU_ACCESS;
```
5. 禁用STU_ACCESS角色的delete权限:
```
REVOKE DELETE ON STU FROM STU_ACCESS;
```
6. 授权STU_ACCESS角色的管理select和insert权限的权力给SCOTT用户:
```
GRANT STU_ACCESS TO SCOTT WITH ADMIN OPTION;
```
这样,SCOTT用户就可以通过STU_ACCESS角色,拥有STU表的select和insert权限,并且有权管理这些权限。但是,他不会立即拥有STU表的delete权限,因为我们在第5步中禁用了该权限。如果需要激活该权限,可以通过以下命令来完成:
```
GRANT DELETE ON STU TO STU_ACCESS;
```
相关问题
Oracle数据库增加账户授权一张表
在Oracle数据库中,增加账户对特定表的操作涉及以下几个步骤:
1. **登录数据库**:首先,你需要通过sqlplus或其他客户端工具连接到Oracle数据库服务器,通常使用管理员账号如SYSDBA。
2. **选择模式(Schema)**:如果要为某个用户增加权限,需要指定该用户的模式名,例如`hr`、`scott`等。使用命令`ALTER SESSION SET CURRENT_SCHEMA = hr;`
3. **创建角色或直接授权**:
- 如果想授予用户直接操作某张表的权限,可以使用`GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO username;` 这里`table_name`是你要授权的表名,`username`是要授权的用户名。
- 如果想创建一个角色,并将这个权限添加到角色中,然后分配给用户,可以这样做:
```
CREATE ROLE role_name;
GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO role_name;
GRANT role_name TO username;
```
4. **检查权限**:完成授权后,使用`SELECT * FROM user_permissions;` 或 `SELECT * FROM dba_tab_privs;` 来验证权限是否已经生效。
5. **保存并退出**:最后别忘了关闭当前会话或者用`COMMIT;`提交事务,确保更改生效。
阅读全文