ITPub博客

首页 > Linux操作系统 > Linux操作系统 > user,role,权限,profile

user,role,权限,profile

Linux操作系统 作者:mzd75 时间:2013-12-04 17:47:40 0 删除 编辑
oracle
第三天视频1(user)
SQL> create user test2 identified by test2 default tablespace test temporary tab
lespace temp;
以这个用户连接时,若不指定表空间,默认就放在缺省表空间里。
10g以前默认表空间system
10开始放在数据库的缺省表空间,就放在users里。
如果不指定表空间,就放在数据库的默认表空间
     select * from database_properties;--DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace
--user表空间不能删除,默认表空间不能删除。如下
SQL> drop tablespace users;
drop tablespace users
*
ERROR at line 1:
ORA-12919: Can not drop the default permanent tablespace;

SQL> alter database default tablespace test1;--将默认表空间更改为test1

Database altered.

SQL> create user test3 identified by test3 temporary tablespace temp;--此时不指定默认表空间,缺省表空间就放在test1里。

User created.
select * from dba_users;--和用户相关的视图test3,default tablespace test1

若用test3连接,会提示没有create session权限
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 8 11:16:36 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-01045: user TEST3 lacks CREATE SESSION privilege; logon denied

用sys用户登录,授予test3 create session权限
C:\Users\HP>sqlplus / as sysdba
SQL> grant create session to test3;

此时再用test3连接,就连上了。
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 8 11:18:51 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

看一个用户具有哪些系统权限--SYS登录
select * from dba_sys_privs where grantee='TEST3';

这个地方有个缺点,口令是明码
SQL> alter user test3 password expire;--下次登录口令过期

User altered.
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 8 11:36:17 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-28001: the password has expired


Changing password for test3
New password:
Retype new password:
Password changed

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

还有一个特性,用户锁定,不希望这个用户登录
--sys用户登录
SQL> alter user test3 account lock;--锁定,可以从dba_users里查看到ACCOUNT_STATUS,之前是OPEN

User altered.
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Oct 8 11:39:39 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-28000: the account is locked

解锁
SQL> alter user test3 account unlock;--解锁

User altered.
SQL> select status from v$instance;--必须是OPEN状态才能用

STATUS
------------
OPEN

再用test3登录,就没问题啦。
--TEST3
SQL> create table t(id int);--此时没有创建表的权限,不指定表空间,就放在TEST3用户的缺省表空间
create table t(id int)
*
ERROR at line 1:
ORA-01031: insufficient privileges

select * from system_privilege_map;--create session,create table
--sys
SQL> grant create table to test3;

Grant succeeded.
系统权限授给用户后,不需要重新连接。
--test3
SQL> create table t(id int);--提示对表空间TEST1无权限
create table t(id int)
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'TEST1'
--可通过两种方式quota
--sys
SQL> alter user test3 quota 10m on test1 quota 20m on users;
SQL> alter user test3 quota unlimited on system;--也可以不限制

User altered.
select *from dba_ts_quotas

--test3此时再创建表,就没有问题啦。
SQL> create table t(id int);

Table created.

select * from dba_roles;CONNECT,RESOURCE,DBA;角色权限

为什么CONNECT能连上数据库,因为CONNECT封装了CREATE SESSION 权限
select * from dba_sys_privs where grantee='CONNECT';--CREATE SESSION

select * from dba_sys_privs where grantee='RESOURCE';
CREATE TRIGGER
CREATE SEQUENCE ,CREATE TYPE ,CREATE PROCEDURE ,CREATE CLUSTER, CREATE OPERATOR, CREATE INDEXTYPE, CREATE TABLE
没有创建包,视图,序列。

UNLIMITED TABLESPACE不能授给角色,只能授给用户,可以使用数据库里所有的表空间,对表空间没限制。
当把RESOURCE授给用户的时候,UNLIMITED TABLESPACE就自动的授给用户啦。
SQL> grant UNLIMITED TABLESPACE to resource;--UNLIMITED TABLESPACE不能授给角色
grant UNLIMITED TABLESPACE to resource
*
ERROR at line 1:
ORA-01931: cannot grant UNLIMITED TABLESPACE to a role
SQL> grant resource to test3;

Grant succeeded.
--select * from dba_sys_privs where grantee='TEST3';--增加了一个UNLIMITED TABLESPACE

. select * from dba_role_privs where grantee='TEST3';--RESOURCE,但RESOURCE包含的权限不会单独体现在这里。

SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
角色授给用户后,需要重新连接。
SQL> select * from session_privs;--这里面把角色打开了,一个SESSION 具有哪些权限

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER--角色包含的系统权限
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

SQL> select * from session_roles;

ROLE
------------------------------
RESOURCE
--test3
SQL> create table tt(id int) tablespace users;--创建表的时候直接指定表空间

Table created.

--sys回顾一下创建用户
SQL> create user test4 identified by test4 default tablespace users temporary ta
blespace temp password expire account unlock quota unlimited on users;

User created.

oracle
第三天视频2(user,role)
--SQL> show user
USER is "TEST3"
SQL> grant create session to test4;--test3不能授予test4权限
grant create session to test4
*
ERROR at line 1:
ORA-01031: insufficient privileges
--sys select * from dba_sys_privs where grantee='TEST3';
SQL> grant create session to test3 with admin option;--此时    


Grant succeeded.
此时,test3就可以授权给test4啦
--test3
SQL> grant create session to test4;

Grant succeeded.

此时若把test3的create session 的权限收回,test4的create session 仍然存在

--sys
SQL> revoke create session from test3;--不需要加admin option 
此时test3没有create session 的权限,test4 仍然有。


--sys 角色就是一个空的目录,可以把权限授给目录,再把角色授给用户
SQL> create role role_test;--创建角色

Role created.

SQL> grant create session ,resource to role_test;--给角色授权,角色也可以授予角色,UNLIMITED TABLESPACE不能授给角色

Grant succeeded.

SQL> grant role_test to test4;--将角色授权给用户

Grant succeeded.

select * from dba_role_privs where grantee='TEST4';--
SQL> alter user test4 default role none;--缺省的角色不起作用啦

User altered.
连一下test4

SQL> select * from session_privs;--只剩下create session了

PRIVILEGE
----------------------------------------
CREATE SESSION
--sys
SQL> alter user test4 default role role_test;--再将角色改完缺省的,改完后default_role 变成yes啦

User altered.
select * from dba_role_privs where grantee='TEST4';
再连一下test4(需要断开重新连)
SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

9 rows selected.

--角色也可以加口令
alter role role_test identified by role_test;--防止有人随便none


--test4
SQL> set role none;

Role set.

SQL> set role role_test;--没加口令
set role role_test
*
ERROR at line 1:
ORA-01979: missing or invalid password for role 'ROLE_TEST'


SQL> set role role_test identified by role_test;--ok啦

Role set.


Profile--对资源的限制和对口令的限制
每个用户创建几个SESSION
每个SESSION使用多少CPU
每次调用需要CPU


比较有用的:空闲时间 Idle time,空闲多长时间不工作,session断开一段时间
新建一个profile,名叫profile_test,将idle_time设置为1分钟,关联一下用户(默认的都是系统的DEFAULT)
--sys
SQL> alter user test4 profile profile_test;

User altered.
select * from dba_users where username='TEST3';--PROFILE 变为PROFILE_TEST
要想让整个PROFILE起作用,还需要修改个参数
--sys
SQL> show parameter RESOURCE_LIMIT

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
resource_limit                       boolean     FALSE
SQL> alter system set resource_limit=true;

SQL> select sysdate from dual;

SYSDATE
-------------------
2012/11/16 09:51:01

SQL> select sysdate from dual;--过段时间再查询
select sysdate from dual
*
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again
口令里不要包含@,F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlpwdmg.sql

SQL> @F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlpwdmg.sql

Function created.


Profile altered.
再看下profile

--sys
SQL> alter user test3 identified by test3;
alter user test3 identified by test3
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20001: Password same as or similar to user
SQL> alter user test3 identified by test3!;
alter user test3 identified by test3!
                                    *
ERROR at line 1:
ORA-00922: missing or invalid option

SQL> alter user test3 identified by test3$;

User altered.

SQL> alter user test3 identified by test3#;

User altered.
把^放进来看看--修改utlpwdmg.sql
重新执行下脚本,还是不行,但也可以让它行,加上双引号可以
SQL> alter user test3 identified by test3^;
alter user test3 identified by test3^
                                    *
ERROR at line 1:
ORA-00922: missing or invalid option


SQL> alter user test3 identified by "test3^";

User altered.
--脚本
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 60
PASSWORD_GRACE_TIME 10
PASSWORD_REUSE_TIME 1800
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME 1/1440
PASSWORD_VERIFY_FUNCTION verify_function;
--连续三次口令错误,什么时候解除锁定呢?到时间后,再连接的时候解除锁定
锁定的时间是,实际上是PASSWORD_LOCK_TIME 1/1440
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 16 10:10:17 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-01017: ???/????; ?????


Enter user-name:
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 16 10:10:23 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-01017: ???/????; ?????


Enter user-name:
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 16 10:10:25 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-01017: ???/????; ?????


Enter user-name:
C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 16 10:10:28 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-28000: ??????
select * from dba_users;--LOCKED(TIMED)


C:\Users\HP>sqlplus test3/test3

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Nov 16 10:12:31 2012

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

ERROR:
ORA-01017: ???/????; ?????
select * from dba_users;--OPEN,再连接的时候解除锁定

口令能用60天(口令的生命),还有10天宽限(grace time),到达60天后,每次都警告
password reuse time:1800天,5年,在5年内不能重复使用口令
password reuse max:如果想在5年重新使用,必须修改过几次以上,就限制不住5年了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/148459/viewspace-1062208/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: schema
请登录后发表评论 登录
全部评论

注册时间:2013-11-30

  • 博文量
    74
  • 访问量
    213509