Oracle OCP笔记(14)管理用户及权限
1.用户、用户帐户、模式术语
用户、用户帐户、模式常替换使用,但这些术语并不完全相同.
用户通过建立到实例的会话连接到用户帐户,并基于用户帐户名登录。
模式(schema)是用户帐户拥有的一组对象。
2.创建和删除用户帐户
创建用户帐户:
create user scott identified by tiger
default tablespace users temporary tablespace temp
quota 100m on users, quota unlimited on example
profile default
password expire
account unlock;
删除用户帐户:
drop user scott cascade;
3.用户帐户属性
·用户名: 字母开头、只能包含字母、数字、美元符$、下划线_,不能是保留字,字母自动转化成大写,不按规则则需要双引号指定,不能超过30个字符。
·身份验证方法:
·默认表空间 alter database default tablespace tablespace_name; -- 修改数据库的默认表空间
alter user username default tablespace tablespace_name; -- 修改用户帐户的默认表空间
·临时表空间 alter user username temporary tablespace tablespace_name; -- 修改用户的临时表空间.用户不需要临时表空间上的配额.
·表空间配额 alter user username quota unlimited on tablespace_name; -- 修改用户帐户的表空间配额
·用户配置文件
·帐户状态(dba_users.account_status)
OPEN: 打开
LOCKED: 锁定
EXPIRED: 过期
EXPIRED & LOCKED: 过期并锁定
EXPIRED(GRACE): 正常过期,在配置的时间段内,可以更改口令
LOCKED(TIMED): 登录尝试失败,帐户被锁定
EXPIRED & LOCKED(TIMED): 过期并超时锁定
EXPIRED(GRACE) & LOCKED(TIMED): 正常过期并超时锁定
alter user username account lock; -- 锁定帐户
alter user username account unlock; -- 解锁帐户
alter user username password expire; -- 强制用户更改口令
alter user username identified by password; -- 更改用户口令
alter user username identified by value password; -- 更改用户口令(直接更改加密后的值).
4.身份验证方法
(1)操作系统和口令文件身份验证
要启用操作系统和口令文件身份验证(二者是相配的),必须为用户授予SYSDBA或SYSOPER权限:
grant [sysdba|sysoper] to username;
如果向用户授予这些权限之一或所有权限,则会将用户口令从数据字典复制到外部口令文件中,此时,即使数据库未处于打开状态,实例也可以读取口令。
select * from v$pwfile_users; -- 口令文件用户,查看哪些用户被授予SYSDBA或SYSOPER
-- 重建口令文件(口令文件默认位置:$ORACLE_HOME/dbs/orapwSID)
orapwd file=
passwod= entries=
操作系统身份验证:
connect / as [sysdba|sysoper];
口令文件身份验证
connect username/password[@db_alias] as [sysdba|sysoper];
(2)口令身份验证
connect username/password[@db_alias];
使用口令身份验证进行连接时,数据库必须处于打开状态,实例将验证数据字典中存储的用户口令。
不允许SYS用户以口令身份验证的方式进行连接,SYS只能使用口令文件、操作系统或LDAP身份验证。
任何用户都可以随时更改自己的用户帐户口令,有充足权限的用户(如SYSTEM)可以更改任何用户帐户口令。
alter user username identified by password; -- 更改用户口令
(3)外部身份验证:
如果使用外部身份验证创建用户帐户,Oracle会将身份验证委托给外部服务。
启用Advanced Security选项: 可用外部服务: Kerberose服务器、Radius服务器、Windows本地身份验证服务.
未启用Advanced Security选项,只能使用操作系统身份验证,普通用户也适用.
普通用户使用操作系统身份验证:
使用与操作系统用户帐户同样的名称创建Oracle用户帐户,但创建的用户需要加上前缀ops$,前缀默认设置为参数os_authent_prefix的值:
select value from v$parameter where name='os_authent_prefix';
create user ops$username identified externally;
grant create session to ops$username;
以username身份登录linux,以操作系统身份登录Oracle数据库。
sqlplus /
(4)全局身份验证
使用LDAP服务器.
5.授予和撤消权限
系统权限: 允许用户执行影响数据字典的操作.
对象权限: 允许用户执行影响数据的操作.
(1)系统权限
常用系统权限:
·CREATE SESSION
·RESTRICTED SESSION
·ALTER DATABASE
·ALTER SYSTEM
·CREATE TABLESPACE, ALTER TABLESPACE, DROP TABLESPACE
·CREATE TABLE
·GRANT ANY OBJECT PRIVILEGE
·CREATE ANY TABLE
·DROP ANY TABLE
·INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
·SELECT ANY TABLE
用户的系统权限:
select privilege from dba_sys_privs where grantee='username'; -- 查看用户拥有的系统权限
授权与撤消语法:
grant privilege[,privilege...] to username [with admin option]; -- 授予权限
revoke privilege[,privilege...] from username; -- 撤消权限
grant create session, alter session, create table to username;
允许权限传递(with admin option),撤消权限时不会级联撤消.
connect system/oracle;
grant create table to scott with admin option;
connect scott/tiger;
grant create table to username;
connect system/oracle;
revoke create table from scott;
(2)对象权限
·SELECT: 授权对象为表、视图、同义词、序列
·INSERT: 授权对象为表、视图、同义词
·UPDATE: 授权对象为表、视图、同义词
·DELETE: 授权对象为表、视图、同义词
·ALTER: 授权对象为表、序列
·EXECUTE: 授权对象为过程、函数、包、同义词
select grantee,privilege,grantor,grantable from dba_tab_privs; -- 查看表权限
授权与撤消语法:
grant privilege[,privilege...] on schema.object to username [with grant option]; -- 授予权限
revoke privilege[,privilege...] on schema.object from username; -- 撤消权限
grant select on hr.employees to scott;
grant update(salary) on hr.employees to scott;
grant all on hr.regions to scott;
允许权限传递(with grant option),撤消权限时级联撤消.
connect hr/hr;
grant select on employees to scott with grant option;
connect scott/tiger;
grant select on hr.employees to username;
connect hr/hr
revoke select on employees from scott;
6.创建和管理角色
角色不是模式对象,不属于任何人,与用户共享同一命名空间,角色与用户不能同名。
预定义角色:
·CONNECT: 只有CREATE SESSION权限,11g前还具有创建数据存储对象的系统权限.
·RESOURCE: 可以创建数据对象和过程对象,12c前还有UNLIMITED TABLESPACE权限.
·DBA: 拥有大多数系统权限,及多个对象权限和角色,可以管理数据库的所有方面,不能启动和关闭数据库.
·SELECT_CATALOG_ROLE
·SCHEDULER_ADMIN
·PUBLIC: 此角色将授予每个用户,比较特殊,不会出现在dba_roles视图中.
select role from dba_roles; -- 查看角色
select * from dba_role_privs; -- 查看角色权限
创建角色:
create role rolename;
grant create session to rolename [with admin option|with grant option];
revoke rolename from rolename2;
grant select on hr.regions to rolename;
grant rolename to rolename2 with admin option;
revoke rolename from rolename2
7.创建和管理配置文件
配置文件(profile)功能: 实施口令策略,限制会话可以占用的资源.
配置文件的口令策略始终实施,而配置文件的资源限制只有在实例参数resource_limit=true时才实施。
select username,profile from dba_users; -- 为用户帐户分配的配置文件,默认的配置文件为DEFAULT
select * from dba_profiles where profile='DEFAULT'; -- 配置文件的内容
口令限制:
·FAILED_LOGIN_ATTEMPTS 登录时口令允许连续错误次数
·PASSWORD_LOCK_TIME 到达FAILED_LOGIN_ATTEMPTS后,锁定帐户的天数
·PASSWORD_LIFT_TIME 口令过期前的天数
·PASSWORD_GRACE_TIME 口令过期后第一次成功登录后的天数
·PASSWORD_REUSE_TIME 可以重新使用口令前的天数
·PASSWORD_REUSE_MAX 允许重新使用口令的次数
·PASSWORD_VERIFY_FUNCTION 检验口令的复杂程度的函数
资源限制:
·SESSIONS_PER_USER
·CPU_PER_SESSION
·CPU_PER_CALL
·LOGICAL_READS_PER_SESSION
·LOGICAL_READS_PER_CALL
·PRIVATE_SGA
·CONNECT_TIME
·IDLE_TIME
·COMPOSITE_LIMIT
打开实例参数设置的资源限制参数
alter system set resource_limit=true;
配置文件的创建和分配
create profile dba_profile limit sessions_per_user unlimited
password_lift_time 7 password_grace_time 1;
alter user sys profile dba_profile;
alter user system profile dba_profile;
alter profile default limit sessions_per_user 1; -- 修改配置文件
启用更高级口令管理的方式,运行脚本:
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
删除配置文件,重新分配DEFAULT配置文件.
drop profile profile_name cascade;