用户和权限管理 用户管理 创建用户不能于模式名或角色名同名。
密码策略 创建用户时要指定密码,用户密码策略由系统参数 PWD_POLICY. SQL> select * from v$dm_ini where para_name like '%PWD_POLICY' where para_name=‘PWD_POLICY’; 查看密码策略。 修改系统口令策略:SQL> sp_set_para_value(1,‘PWD_POLICY’,4);修改后的策略只针对新用户有用。 查看用户口令策略:SQL> select username,user_id,PASSWORD_VERSIONS from dba_users; 创建用户 SQL> create user DMOA identified by DM;
用户的锁定与解锁 当用户尝试登录,密码错误超过限制的尝试失败次数,用户会被自动锁定。 可以手动锁定和解锁: 锁定SQL> alter user user1 account lock; 解锁alter user user1 account unlock; 修改用户的资源限制(例如当密码错误超过 5 次时,锁定 10 分钟)SQL> alter user user1 limit failed_login_attemps 5,password_lock_time 10;
修改user1用户默认表空间为TBS、默认索引表空间为tbsidx: SQL> alter user user1 default tablespace tbs default index tablespace tbsidx;
用户删除,使用具有删除用户(DROPUSER)权限的用户删除其他用户,在删除前要保证用户里对象为空。 drop user user2;
权限管理 系统权限:create table; alter database; create tablespace; alter tablespace; drop tablespace; create user; create view; create procedure; create role; create schema; 授予系统权限:grant CREATE TABLE to USER1; 撤销系统权限:revoke 授予对象权限grant SELECT on DMHR CITY to USER1; 撤销:revoke
权限的查看: 系统权限(数据库权限)查看 DBA_SYS_PRIVS select * from dba_sys_privs; 对象权限查看 DBA_TAB_PRIVS select * from dba_tab_privs; 角色权限查看 DBA_ROLE_PRIVS select * from dba_role_privs; 对象权限的赋予和回收:可以赋给用户或角色 将dmhr.employee的查看权限赋予user1:(sysdba用户)SQL> grant select on dmhr.employee to user1; 从user1就可以查看dmhr.employee:SQL> select count(*) from dmhr.employee; 但user1不能查看dmhr.department,没有该权限,没有赋予 回收user1权限:从sysdba用户,revoke select on dmhr.employee from user1; 查询某张表的某些字段,可以赋给用户或角色 sysdba:SQL> grant select(employee_id,employee_name,salary) on dmhr.employee to user1; user1: 不能查询整个表:但是可以查询employee_id,employee_name,SQL> select employee_id,employee_name,salary from dmhr.employee limit 5; 如果想查询dmhr.employee中的其他列,也没有查询权限。 角色管理 查看角色信息: select * from dba_roles; 默认每种类型的管理员拥有五个角色(DBA、PUBLIC、RESOURCE、SOI、VTI) DBA:管理员角色,拥有几乎所有的权限。 RESOURCE:拥有创建表、创建视图等对数据库操作的权限,但没有创建用户的权限。 PUBLIC:拥有数据操作权限(增删改查)。 SOI:拥有查询系统表(sys 开头的) VTI:拥有动态视图(v$开头的查询权限)。 select * from DBA_SYS_PRIVS t where t.GRANTEE=‘PUBLIC’; select * from DBA_SYS_PRIVS t where t.GRANTEE=‘RESOURCE’; select * from DBA_TAB_PRIVS t where t.GRANTEE=‘VTI’; select * from DBA_TAB_PRIVS t where t.GRANTEE=‘SOI’; 新建角色:创建角色role1,并将create table权限赋给user1:(在SYSDBA用户) create role R1; grant create table to role1; grant role1 to user1; 登录user1,并创建表,因为赋予了user1创建表的角色。 回收权限:回收user1的role1的权限,user1不能创建表(在SYSDBA用户) SQL> revoke role1 from user1; 假如 user1 即拥有角色 role1,也拥有创建表 create table 的权限,此时回收 user1 的 create table 的权限,问 user1 是否还能创建表。 回收user1的create table的权限,但是角色role1的权限并没有禁用,因此还可以创建表。 查看role1的权限:select * from DBA_SYS_PRIVS t where t.GRANTEE=‘ROLE1’; 角色的启用和禁用: 禁用:SQL> sp_set_role(‘ROLE1’,0); 此时user1没有查询权限 启用:SQL> sp_set_role(‘ROLE1’,1); ————————————————
|