「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。
Oracle的用户授权
1. 授权
sql格式:
GRANT 权限/角色列表 TO 用户名 [WITH ADMIN OPTION];
例如1:
GRANT dba TO nowashing;
授权dba角色给nowashing这个用户。
后续篇章将权限,角色统称为权限。
例如2:
权限或角色有多项用逗号分隔:
GRANT connect,resource,dba TO nowashing;
例如3:
被授权用户拥有此权限后是否可以再将此权限授予别人:
GRANT dba TO nowashing WITH ADMIN OPTION;
不加WITH ADMIN OPTION是不允许授予别人的。
例如4:
将某授权授予给所有用户:
GRANT 权限 TO PUBLIC;
2. 撤消授权
sql格式:
REVOKE 权限/角色列表 FROM 用户
例如:REVOKE dba TO nowashing;
收回(撤消)dba角色从nowashing这个用户。
权限或角色有多项用逗号分隔:
REVOKE connect,resource,dba TO nowashing
3. 查询已拥有的权限
SELECT * FROM dba_sys_privs; --查询所有用户和角色被授予的系统权限
SELECT * FROM user_sys_privs; --查询当前登录用户被授予的系统权限
SELECT * FROM user_role_privs—查询当前登录用户拥有的角色
4. 常见系统权限
- 系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等。
- 对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等。
Oracle的系统权限有206种(SELECT * FROM system_privilege_map),以下仅列出常用的一些:
| 权限名称 | 描述 | |
|---|---|---|
| create session | 连接到数据库 | |
| create sequence | 创建序列 | |
| create synonym | 创建同义词 | |
| create public synonym | 创建公用的同义词 | |
| create table | 创建表 | |
| create any table | 在任何模式中创建表 | |
| drop table | 删除表 | |
| drop any table | 删除任何模式中的表 | |
| create procedure | 创建存储过程 | |
| execute any procedure | 运行任务模式中的存储过程 | |
| create user | 创建用户 | |
| alter user | 修改用户 | |
| drop user | 删除用户 | |
| create view | 创建视图 |
模式(schema):是某个用户拥有所有对象的集合。
5. 常见系统角色
| 角色名称 | 拥有权限 |
|---|---|
| dba | 所有权限 |
| connect | create session 连接到数据库alter session --修改会话 create sequence --建立序列 create synonym --建立同义词 create view --建立视图create cluster --建立聚簇 create database link --建立数据库链接 |
| resource | create trigger--建立触发器create sequence --建立序列create procedure --建立存储过程create cluster --建立聚簇create operator --建立操作员create index --建立索引create indextype --建立索引类型create table --建立表 |