第十二章 用户控制权限
1.权限:
数据库安全性:系统安全性和数据安全性
系统权限: 对于数据库的权限
对象权限: 操作数据库对象的权限
2.系统权限
超过一百多种有效的权限
数据库管理员具有高级权限以完成管理任务,例如:
创建新用户
删除用户
删除表
备份表
2.1
DBA 使用 CREATE USER 语句创建用户
CREATE USER user
IDENTIFIED BY password;
CREATE USER scott
IDENTIFIED BY tiger;
2.2
用户创建之后, 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 scott;
2.3创建用户表空间,用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表
ALTER USER atguigu01 QUOTA UNLIMITED
ON users
3.角色
创建角色
CREATE ROLE manager;
为角色赋予权限
GRANT create table, create view
TO manager;
将角色赋予用户
GRANT manager TO DEHAAN, KOCHHAR;
修改密码:DBA 可以创建用户和修改密码,用户本人可以使用 ALTER USER 语句修改密码
ALTER USER scott
IDENTIFIED BY lion;
4.对象权限
不同的对象具有不同的对象权限
对象的拥有者拥有所有权限
对象的拥有者可以向外分配权限
GRANT object_priv [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
4.1分配对象权限
分配表 EMPLOYEES 的查询权限
GRANT select
ON employees
TO sue, rich;
分配表中各个列的更新权限
GRANT update
ON scott.departments
TO atguigu
WITH GRANT OPTION 使用户同样具有分配权限的权利
GRANT select, insert
ON departments
TO scott
WITH GRANT OPTION;
向数据库中所有用户分配权限
GRANT select
ON alice.departments
TO PUBLIC;
数据字典视图 描述
ROLE_SYS_PRIVS 角色拥有的系统权限
ROLE_TAB_PRIVS 角色拥有的对象权限
USER_ROLE_PRIVS 用户拥有的角色
USER_TAB_PRIVS_MADE 用户分配的关于表对象权限
USER_TAB_PRIVS_RECD 用户拥有的关于表对象权限
USER_COL_PRIVS_MADE 用户分配的关于列的对象权限
USER_COL_PRIVS_RECD 用户拥有的关于列的对象权限
USER_SYS_PRIVS 用户拥有的系统权限
收回对象权限
使用 REVOKE 语句收回权限
使用 WITH GRANT OPTION 子句所分配的权限同样被收回
REVOKE select, insert
ON departments
FROM scott;