13、Oracle中的控制用户权限
最近项目要用到Oracle,奈何之前没有使用过,所以在B站上面找了一个学习视频,用于记录学习过程以及自己的思考。
视频链接:
【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用
如果有侵权,请联系删除,谢谢。
学习目标:
- 创建用户
- 创建角色
- 使用
GRANT 和 REVOKE
语句赋予和回收权限 - 创建数据库联接
1、权 限
- 数据库安全性:
- 系统安全性
- 数据安全性
- 系统权限: 对于数据库的权限
- 对象权限: 操作数据库对象的权限
1.1、系统权限
超过一百多种有效的权限
数据库管理员具有高级权限以完成管理任务,例如:
- 创建新用户
- 删除用户
- 删除表
- 备份表
2、创建用户
DBA 使用 CREATE USER 语句创建用户
CREATE USER user
IDENTIFIED BY password;
-- 示例
CREATE USER scott
IDENTIFIED BY tiger;
User created.
2.1、用户的系统权限
用户创建之后, DBA 会赋予用户一些系统权限
GRANT privilege [, privilege...]
TO user [, user| role, PUBLIC...];
以应用程序开发者为例, 一般具有下列系统权限:
- CREATE SESSION(创建会话)
- CREATE TABLE(创建表)
- CREATE SEQUENCE(创建序列)
- CREATE VIEW(创建视图)
- CREATE PROCEDURE(创建过程)
2.2、赋予系统权限
DBA 可以赋予用户特定的权限
GRANT create session, create table,
create sequence, create view
TO scott;
Grant succeeded.
2.3、创建用户表空间
用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间,用于创建的表
ALTER USER atguigu01 QUOTA UNLIMITED
ON users
User altered.
2.4、修改密码
DBA 可以创建用户和修改密码
用户本人可以使用 ALTER USER 语句修改密码
ALTER USER scott
IDENTIFIED BY lion;
User altered.
3、角 色
3.1、创建角色并赋予权限
- 创建角色
create role manager;
- 为角色赋予权限
grant create session, create table, create view to manager;
- 将角色赋予用户
grant manager to dehaan, kochhar;
4、对象权限
4.1、对象权限
- 不同的对象具有不同的对象权限
- 对象的拥有者拥有所有权限
- 对象的拥有者可以向外分配权限
GRANT object_priv [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
4.2、分配对象权限
分配表 EMPLOYEES 的查询权限
GRANT select
ON employees
TO sue, rich;
Grant succeeded.
分配表中各个列的更新权限
GRANT update
ON scott.departments
TO atguigu
Grant succeeded.
4.3、WITH GRANT OPTION和PUBLIC关键字
WITH GRANT OPTION 使用户同样具有分配权限的权利
GRANT select, insert
ON departments
TO scott
WITH GRANT OPTION;
Grant succeeded.
向数据库中所有用户分配权限
GRANT select
ON alice.departments
TO PUBLIC;
Grant succeeded.
4.4、查询权限分配情况
4.5、收回对象权限
使用 REVOKE 语句收回权限
使用 WITH GRANT OPTION 子句所分配的权限同样被收回
REVOKE {privilege [, privilege...]|ALL}
ON object
FROM {user[, user...]|role|PUBLIC}
[CASCADE CONSTRAINTS];
收回对象权限举例
REVOKE select, insert
ON departments
FROM scott;
Revoke succeeded.
总结:
使用 DCL 控制数据库权限,创建数据库联接: