oracle用户创建
SQL> CREATE USER username IDENTIFIED BY password
2 DEFAULT TABLESPACE table_spacename
3 TEMPORARY TABLESPACE temp_table_spacename;
用户删除
SQL> DROP USER username CASCADE;
用户锁定、解锁
SQL> ALTER USER username ACCOUNT LOCK; 锁定
SQL> ALTER USER username ACCOUNT UNLOCK; 解锁
查看用户状态
SQL> SELECT username,account_status from dba_users;
查询用户尝试登录错误密码次数阀值,超过这个值,账户将被锁定。默认为10次
SQL> select * from dba_profiles where resource_name='FAILED_LOGIN_ATTEMPTS';
更改错误密码次数为无限制
SQL> alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
SQL> ALTER profile default limit FAILED_LOGIN_ATTEMPTS 10; 更改为默认的10次
SQL> select name,lcount from user$; 查询错误登录次数
查询哪些用户使用缺省的口令
SQL> select * from DBA_USERS_WITH_DEFPWD;
查询用户口令管理版本
SQL> select username,password,password_versions from dba_users;
开启用户口令复杂度校验
SQL> @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
脚本主要内容如下
-- ALTER PROFILE DEFAULT LIMIT
-- PASSWORD_LIFE_TIME 60 密码有效期为60天
-- PASSWORD_GRACE_TIME 10 口令宽限期为10天
-- PASSWORD_REUSE_TIME 1800 口令可重用时间1800天
-- PASSWORD_REUSE_MAX UNLIMITED 口令重用之前需要改变的次数
-- FAILED_LOGIN_ATTEMPTS 3 连续登录的最大失败次数
-- PASSWORD_LOCK_TIME 1/1440 用户被锁定天数
-- PASSWORD_VERIFY_FUNCTION verify_function;
用户权限
授予用户连接到内部的权限
SQL> grant create session to username;
授予用户创建表的权限
SQL> grant create table to username;
授予用户test使用test表空间的权限
SQL> alter user test quota 10M on test;
oracle用户的权限可以分为两类:
系统权限,每个系统权限允许用户对schema对象执行一种或一类特定的数据库操作,如create sessiion、create tablespace、create table
数据库有超过100种不同的系统权限,DBA_SYS_PRIVS可以查询授予用户的系统权限。
对象权限,每个对象权限允许用户针对特定的对象执行一种特定的行为,如对某个表的查询 权限
常见的各类对象权限可以通过如下的方式进行授予:
表权限:select、delete、update、insert、alter
grant select on 表名 to 用户;
视图权限:select、delete、insert、update
grant select on 视图名 to 用户;
过程、函数、程序包权限:execute、debug
grant execute on 过程、包名称 to 用户;
grant和revoke是用来执行权限授予和回收的主要手段。
系统权限的授予可以通过oracle视图DBA_SYS_PRIVS来查询,这个视图包含被授予权限的用户信息以及具体的权限,如果授予权限时允许用户转授权限,那么ADMIN_OPTION就为yes
SQL> select * from dba_sys_privs where grantee='TEST';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
TEST CREATE TABLE NO
TEST CREATE SESSION
查询跟table有关的权限
SQL> select privilege from dba_sys_privs where privilege like '%TABLE';
回收用户的unlimited tablespace权限
SQL>revoke UNLIMITED TABLESPACE from 用户;
独立的空间授权可以通过dba_ts_quotas查询得到
SQL>select * from dba_ts_quotas where username=‘test’;
对象权限可以通过DBA_TAB_PRIVS来查询
角色
在数据库内部,用户和角色信息都存储在USER$表中,其中TYPE字段用来标识类型,0为角色,1为用户;
查询DBA_ROLES视图,得到数据库中定义的角色
SQL> select * from dba_roles;
查询ROLE_SYS_PRIVS视图获取角色具有的系统权限
SQL> select * from role_sys_privs where ROLE='RESOURCE';
查询角色的授权情况
SQL> select * from dba_role_privs where granted_role='CONNECT';