权限
- 数据库安全性
--系统安全性
--数据安全性
- 系统权限: 对于数据库的权限
- 对象权限: 操作数据库对象的权限
系统权限
- 超过一百多种有效的权限
- 数据库管理员具有高级权限以完成管理任务,例如:
- 创建新用户
- 删除用户
- 删除表
- 备份表
创建用户
DBA 使用 CREATE USER 语句创建用户
CREATE USER user IDENTIFIED BY password;
注:oracle 12c在结构上做出了调整,引入了CDB和PDB的概念,CDB中的操作,用sys默认登录的是CDB,但是如果想在CDB中创建用户(可以理解为公共用户)的话,那么必须在用户名前面加上“c##”,否则会报错:
正确写法:
用户的系统权限
用户创建之后, DBA 会赋予用户一些系统权限
GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...];
以应用程序开发者为例, 一般具有下列系统权限:
- CREATE SESSION(创建会话)
- CREATE TABLE(创建表)
- CREATE SEQUENCE(创建序列)
- CREATE VIEW(创建视图)
- CREATE PROCEDURE(创建过程)
DBA 可以赋予用户特定的权限
GRANT create session, create table, create sequence, create view TO c##loaderman;
创建用户表空间
- 用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表
ALTER USER c##loaderman QUOTA UNLIMITED ON users;
角色
创建角色并赋予权限
- 创建角色
CREATE ROLE c##manager;
- 为角色赋予权限
GRANT create table, create view TO c##manager;
- 将角色赋予用户
GRANT c##manager TO c##loaderman;
修改密码
- DBA 可以创建用户和修改密码
- 用户本人可以使用 ALTER USER 语句修改密码
ALTER USER c##loaderman IDENTIFIED BY loaderman;
对象权限
- 不同的对象具有不同的对象权限
- 对象的拥有者拥有所有权限
- 对象的拥有者可以向外分配权限
GRANT object_priv [(columns)] ON object TO {user|role|PUBLIC} [WITH GRANT OPTION];
- 分配对象权限
- 分配表 EMPLOYEES 的查询权限
分配表中各个列的更新权限
GRANT update ON system.departments TO c##loaderman
WITH GRANT OPTION和PUBLIC关键字
- WITH GRANT OPTION 使用户同样具有分配权限的权利
GRANT select, insert ON departments TO c##loaderman WITH GRANT OPTION;
向数据库中所有用户分配权限
GRANT select ON system.departments TO PUBLIC;
查询权限分配情况
收回对象权限
- 使用 REVOKE 语句收回权限
- 使用 WITH GRANT OPTION 子句所分配的权限同样被收回
REVOKE {privilege [, privilege...]|ALL} ON object FROM {user[, user...]|role|PUBLIC} [CASCADE CONSTRAINTS];
REVOKE select, insert ON departments FROM c##loaderman;
使用新建的用户连接数据库: