Oracle_Day11
Oracle learning_Day11
本人学习视频用的是尚硅谷的,也在这里献上
视频链接:https://www.bilibili.com/video/BV17b411V75B
Oracle 数据库-sql plsql - Java 学习 - 尚硅谷
目录
常见的数据库对象
对象 | 描述 |
---|---|
表 | 基本的数据存储集合,由行和列组成 |
视图 | 从表中抽出的逻辑上相关的数据集合 |
序列 | 提供有规律的数值 |
索引 | 提高查询的效率 |
同义词 | 给对象起别名 |
一、权限
- 数据库安全性:
- 系统安全性
- 数据安全性
- 系统权限: 对于数据库的权限
- 对象权限: 操作数据库对象的权限
1.系统权限
- 超过一百多种有效的权限
- 数据库管理员具有高级权限以完成管理任务,例如:
- 创建新用户
- 删除用户
- 删除表
- 备份表
2.创建用户
- DBA 使用 CREATE USER 语句创建用户
CREATE USER user
IDENTIFIED BY password;
举例:
CREATE USER scott
IDENTIFIED BY tiger;
--User created.
3.用户的系统权限
- 用户创建之后, DBA 会赋予用户一些系统权限
- 以应用程序开发者为例, 一般具有下列系统权限:
- CREATE SESSION(创建会话)
- CREATE TABLE(创建表)
- CREATE SEQUENCE(创建序列)
- CREATE VIEW(创建视图)
- CREATE PROCEDURE(创建过程)
GRANT privilege [, privilege...]
TO user [, user| role, PUBLIC...];
5.赋予系统权限
DBA 可以赋予用户特定的权限
GRANT create session, create table,
create sequence, create view
TO scott;
--Grant succeeded.
*6.创建用户表空间
用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表
ALTER USER exampleuser QUOTA UNLIMITED
ON users
--User altered.
7.角色
使用角色可以方便权限的分配,无需每次单独分配权限给一个用户
8.创建角色并赋予权限
- 创建角色
CREATE ROLE manager;
--Role created.
- 为角色赋予权限
GRANT create table, create view
TO manager;
--Grant succeeded.
- 将角色赋予用户
GRANT manager TO user1, user2;
--Grant succeeded.
9.修改密码
- DBA 可以创建用户和修改密码
- 用户本人可以使用 ALTER USER 语句修改密码
ALTER USER scott
IDENTIFIED BY lion;
--User altered.
10.对象权限
- 不同的对象具有不同的对象权限
- 对象的拥有者拥有所有权限
- 对象的拥有者可以向外分配权限
GRANT object_priv [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
对象权限 | 表 | 视图 | 序列 | 过程 |
---|---|---|---|---|
修改(alter) | √ | √ | ||
删除(delete) | √ | √ | ||
执行(execute) | √ | |||
索引(index) | √ | |||
插入(insert) | √ | √ | ||
关联(reference) | √ | √ | ||
选择(select) | √ | √ | √ | |
更新(update) | √ | √ |
1)分配对象权限
- 分配表 EMPLOYEES 的查询权限
GRANT select
ON table1
TO user1, user2;
--Grant succeeded.
- 分配表中各个列的更新权限
GRANT update
ON user1.table
TO user2
--Grant succeeded.
2)WITH GRANT OPTION和PUBLIC关键字
- WITH GRANT OPTION 使用户同样具有分配权限的权利
GRANT select, insert
ON table1
TO user2
WITH GRANT OPTION;
--Grant succeeded.
- 向数据库中所有用户分配权限
GRANT select
ON user1.table1
TO PUBLIC;
--Grant succeeded.
*3)查询权限分配情况
数据字典视图 | 描述 |
---|---|
ROLE_SYS_PRIVS | 角色拥有的系统权限 |
ROLE_TAB_PRIVS | 角色拥有的对象权限 |
USER_TAB_PRIVS_MADE | 用户拥有的角色 |
USER_TAB_PRIVS_RECD | 用户分配的关于表对象权限 |
USER_COL_PRIVS_MADE | 用户分配的关于列的对象权限 |
USER_COL_PRIVS_RECD | 用户拥有的关于列的对象权限 |
USER_SYS_PRIVS | 用户拥有的系统权限 |
以 USER_TAB_PRIVS_RECD 为例:
SELECT *
FROM USER_SYS_PRIVS;
4)收回对象权限
- 使用 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.