Oracle复习(六)权限管理
用户管理;
-
Oracle数据库初始用户:
- SYS:数据库管理员
- SYSTEM:一般管理员无启动和关闭数据库权限,做辅助的功能
- SCOTT:普通用户,用于测试网络连接的用户
- PUBLIC:实质上一个用户组,数据库中任何一个用户都属于该组要给某个用户某个权限。只需要把权限授予PUBLIC就可以了。
-
用户属性:
- 安全属性
-
身份认证:
- 数据库身份认证
- 外部身份认证
- 全局身份认证(网络操作)
-
默认表空间
-
临时表空间
-
表空间配额
-
概要文件
-
账号状态(加解锁)
-
- 安全属性
-
创建用户:
CREATE USER 用户名 IDENTIFIED
[BY 密码| EXTERNALLY|(外部)GLOBALLY(全局) AS 'external_name']
[DEFAULT TABLESPACE table space_name] (设置默认表空间)
[TEMPOPARY TABLESPACE temp_tablespace_name](设置临时表空间)
[QUOTA n K | M | UNLLMITED ON tablespace_name]
[PROFILE profile_name]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK];
eg:创建一个用户user3, 默认表空间为USERS 口令为user3
CREATE USER user3 IDENTIFIED BY user3 DEFAULT TABLESPACE USERS QUOTA 10MB ON USERS ACCOUNT LOCK;
但是本次 创建没有授予权限
账户解锁:ALTER USER user3 account unlock;
- 修改账户:
ALTER USER 用户名 IDENTIFIED
[by 密码 | EXTERNALLY | GLOBALLY AS ‘external_name’]
[default tablespace tablespace_name] 设置默认表空间 [
temporary tablespace temp_tablespace_name]
[QUOTA n K| M | UNLIMITED on tablespace_name ]
[PROFILE profile_name]
[DEFAULT role_list all[except role_list] | none ]
[account lock|unlock];
eg:将 账号围殴user3密码修改为newuser3 同时将该用户解锁
ALTERUSER user3 IDENTIFIED BY newuser3 account UNLOCK;
eg:修改用户user3默认表空间为‘ORCLTBS1'该表空间配额为20M, 在USERS表空间配额为10M
ALTER user3 DEFAULT TABLESPACE ORCLTBS1 QUOTA 20MB ONORCLTBS1 QUOTA 10MB ON USERS;
- 用户删除:
drop user 用户名 [cascade];
注意:如果将 Cascade 关键字用于 drop user 命令的末尾,则 在从数据库中删除用户之前,删除用户的所有对象。该 关键字不仅可以删除所有的用户对象,而且还可以删除 其他用户模式中对已删除对象表进行引用的约束,使其 他用户所拥有的引用了已删除对象的对象无效。
- 查看用户:
selecct * from
ALL_USERS:包含数据库所有用户的用户名,用户ID, 用户创建时间
DEA_USERS:包含数据库所有的用户的详细信息
USER_users:包含当前用户的详细信息
DEA_TS_QUOTAS:包含所有用户的表空间配额信息
USER_TS_QUOTAS:包含当前用户的表空间的配额信息
V$S ESSION:包含用户会话信息
V$ OPEN_CURSOR:包含用的执行SQL语句信息
- 权限管理:
* 对象权限:对象级别权限是由用户赋予的访问或操作数据库对 象的权限。例如,如果需要向scott.emp表中插入行的数据库用户必须拥有完成这项工作的指定权限。
* 系统权限: 系统权限不是控制对指定数据库对象的访问,而是 用来许可对各种特性的访问,或许可Oracle数据库中的特定任务。
* 系统权限注意:
* 一般情况下,都应该将CREATE SESSION权限授予用户
* 用户需要CREATE TABLE权限来在自己的模式中创建、修 改、删除或查询任何表
* 如果要删除其他模式中的表,用户必须具有DROP ANY TABLE系统权限
* CREATE ANY PROCEDURE允许用户创建、修改、删除 或执行任何存储过程、程序包和函数
* 开发人员一般需要几个系统权限,包括CREATE TABLE,CREATE VIEW,CREATE TYPE等,以创建支持前 台应用程序的数据库模式
- 权限授予:
grant 权限 to 用户列表 角色列表 public [with admin option] 授权之后的角色是不是还有授权的权限
eg: 为public 组授权,具有创建视图的权限
grant create any view to public;
grant create session ,create table, ... to public; 权限之间用逗号间隔 用户之间也用逗号间隔
eg: grant create any view to user2 with admin option;
- 权限回收:
revoke 权限 from 用户列表 角色列表 public
eg:回收 user1 的create view 权限
revoke create table, create view from user1;
不可以传递回收: user1 -> user2 -> user3
user1 收回user2的某些权限 但是 user2给user3的权限还在
- 对象权限:
grant 对象权限 on 对象 to 用户列表 角色列表 [with grant option]
eg: 将emp表中的select insert update 授予 user1
grant select,update, insert on emp to user1;
revoke 对象权限 | ALL on 对象 form 用户列表 角色列表
对象权限 只要使用all 可以将其他人授予的权限也可以收回
- 权限查询:
select * from dba_tab_privs;
DBA_TAB_PRIVS
ALL_TAB_PRIVS
USER_TAB_PRIVS
DBA_COL_PRIVS 所有字段已授权的信息
USER_COL_PRIVS 当前字段已经授权的信息
DBA_SYS_SYSPRIVS 包含授权用户或者角色的系统角色信息
USER_SYS_PRIVS 包含授予当前用户的系统权限信息