Oracle 用户管理


    用户(user)与模式(schema)的区别

                     A user is a name defined in the database that can connect to and access objects.

                     Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。

                    

                     A schema is a collection of database objects (used by a user.).

                     Schema objects are the logical structures that directly refer to the database’s data.

                     模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。

          

           用户认证方式

                     OS vs DB(包含pwdfile)

                     $ORACLE_HOME/network/admin/sqlnet.ora 

                        SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)

                        none : 表示关闭操作系统认证,只能密码认证

                        all : 用于linux或unix平台,关闭本机密码文件认证,采用操作系统认证,但远程可以使用密码文件认证

                        nts : 用于windows平台

                    

                     pwdfile(v$pwfile_users)

                                进行DBA权限的身份认证(比如数据库未启动之前)

                               

                                Usage: orapwd file= entries= force= ignorecase= nosysdba=

                                           # 等号(=)两边不能有空格

                                           # file 指定密码文件名 orapw (不是orapwd)

                                                     windows平台上密码文件的名字为PWD.ora

                                           # password 指定密码

                                           # entries - maximum number of distinct DBA (optional),

                                           # force 密码文件已存在时,强制覆盖

                                           # ignorecase 11g,指定是否大小写敏感

                                           # nosysdba, Database Vault组件使用,指定sysdba是否可通过密码文件登录

                               

                                密码文件查找的顺序

                                ---&gtorapw---&gtorapw---&gtFailure

                    

                                remote_login_passwordfile = none | exclusive |shared  位于$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora参数文件中

                                   none : 不使用密码文件认证

                                   exclusive :要密码文件认证,自己独占使用(默认值)

                                   shared :要密码文件认证,不同实例dba用户可以共享密码文件  表示在RAC或者多实例公用host的情况下,使用一份passwordfile。这种方式下,sys的密码是不能够轻易修改的。此外,对于非sys用户加入到密码文件中,也有一些限制。

                                 

                                以sysdba登录时要加 as sysdba,否则不会有sysdba权限

                                往密码文件中增加用户和修改dba用户密码:

                                           grant dba to

                                           alter user identified by

          

           用户的创建

                     DB用户:

                     CREATE USER user_name

                     IDENTIFIED BY password|externally    // 如果密码是数字,请用双引号括起来

                     [DEFAULT TABLESPACE tbs_name]

                     [TEMPORARY TABLESPACE tbs_name]

                     [QUOTA n K|M|unlimited ON tbs_name]

                     [PASSWORD EXPIRE]

                     [ACCOUNT LOCK|UNLOCK]

                     [PROFILE profile_name]

          

                     CREATE USER jward

                      IDENTIFIED BY password

                      DEFAULT TABLESPACE data_ts

                      QUOTA 100M ON test_ts

                      QUOTA 500K ON data_ts

                      TEMPORARY TABLESPACE temp_ts

                      PROFILE clerk;

                     GRANT CREATE SESSION TO jward;

                    

                     OS用户:

                     外部认证  

               1、查看操作系统认证前辍

                     SQL> show parameter os_authent_prefix

 

                     NAME                                 TYPE        VALUE

                     ------------------------------------ ----------- -------

                     os_authent_prefix                    string      ops$

 

               2、在操作系统创建一个用户,并加入到相关的组中,设置环境变量

                     useradd huayd

                     gpasswd -a huayd oinstall            # id oracle 且 775 /u01

                     cp /home/oracle/.bash_profile /home/huayd/

 

               3、创建数据库用户,名字为 前辍+操作系统用户

                     SQL> create user ops$huayd identified externally;

                     SQL> grant create session to ops$huayd;

 

               4、登录

                     登录到操作系统

                     su - huayd

                     sqlplus /

                    

           用户状态

                     sys@oray>select * From USER_ASTATUS_MAP;

 

                        STATUS# STATUS

                     ---------- --------------------------------

                                 0 OPEN

                                 1 EXPIRED

                                 2 EXPIRED(GRACE)

                                 4 LOCKED(TIMED)

                                 8 LOCKED

                                 5 EXPIRED & LOCKED(TIMED)

                                 6 EXPIRED(GRACE) & LOCKED(TIMED)

                                 9 EXPIRED & LOCKED

                                10 EXPIRED(GRACE) & LOCKED

 

                     基本状态: open,expired,expired(grace),locked(timed),locked

                     组合状态: 5,6,9,10   # 位运算

 

                     这五种基本状态又可以分为三类:1.正常状态;2.锁定状态;3.密码过期状态。

                     1)OPEN状态不用多解释,表示用户处于正常状态。

                     2)用户被锁定状态,LOCKED和LOCKED(TIMED)两种状态都属于锁定状态

                     用户被锁定一般分为两种:一种是DBA显式的通过SQL语句对用户进行锁定;另外一种是被动的锁定,例如默认情况下如果密码输入错误超过10次(这个限制是由PROFILE中的FAILED_LOGIN_ATTEMPTS控制的,该信息可以通过DBA_PROFILES视图查询)

                     (1)显式锁定sec用户LOCKED状态演示

                     sys@oray>alter user scott account lock;

                     sys@oray>select username, account_status from dba_users where username = 'SCOTT';

 

                     USERNAME                          ACCOUNT_STATUS

                     ------------------------------ --------------------------------

                     SCOTT                                    LOCKED

 

                     (2)输入10次错误密码后被动锁定LOCKED(TIMED)状态演示

                     尝试输入10次错误密码后再次查询用户状态。

                     sys@oray>select username, account_status from dba_users where username = 'SCOTT';

 

                     USERNAME ACCOUNT_STATUS

                     ------------------------------ --------------------------------

                     SCOTT LOCKED(TIMED)

 

                     3)用户密码过期状态,EXPIRED和EXPIRED(GRACE)两种状态都属于密码过期状态

                     密码是否过期是通过修改PROFILE中的PASSWORD_LIFE_TIME实现的,密码过期后还可以使用的天数是通过PROFILE中的PASSWORD_GRACE_TIME控制的。

                     关于密码过期我们也可以使用SQL显式的去完成,简单演示一下。

                     sys@oray> alter user sec password expire;

                     sys@oray> select username, account_status from dba_users where username = 'SCOTT';

 

                     USERNAME ACCOUNT_STATUS

                     ------------------------------ --------------------------------

                     SCOTT EXPIRED

 

                     分别解释这四种组合状态

                     1)EXPIRED & LOCKED(TIMED)状态表示用户过期后,错误密码尝试次数超过PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;

                     2)EXPIRED(GRACE) & LOCKED(TIMED)状态表示用户在密码过期后的有效期内,不成功登录次数超过PROFILE中的FAILED_LOGIN_ATTEMPTS的限制;

                     3)EXPIRED & LOCKED状态表示用户过期的同时处于锁定状态

                     4)EXPIRED(GRACE) & LOCKED状态表示用户在密码过期后的有效期内被DBA手工锁定。

 

           用户管理

                     ALTER USER avyrros

                      IDENTIFIED EXTERNALLY

                      DEFAULT TABLESPACE data_ts

                      TEMPORARY TABLESPACE temp_ts

                      QUOTA 100M ON data_ts

                      QUOTA 0 ON test_ts

                      PROFILE clerk;

 

                     DROP USER user_name [cascade]

                    

                     profile

                                dba_profiles

                               

                                           1、对数据库资源做限制

                                           { { SESSIONS_PER_USER 每个用户名所允许的并行会话数

                                             | CPU_PER_SESSION   一个会话一共可以使用的CPU时间,单位是百分之一秒

                                             | CPU_PER_CALL      一次SQL调用(解析、执行和获取)允许使用的CPU时间

                                             | CONNECT_TIME      限制会话连接时间,单位是分钟

                                             | IDLE_TIME         允许空闲会话的时间,单位是分钟

                                             | LOGICAL_READS_PER_SESSION 限制会话对数据块的读取,单位是块

                                             | LOGICAL_READS_PER_CALL    限制SQL调用对数据块的读取,单位是块

                                             | COMPOSITE_LIMIT   “组合打法”

                                             }   { integer | UNLIMITED | DEFAULT }

                                             | PRIVATE_SGA   限制会话在SGA中Shared Pool中私有空间的分配  { size_clause | UNLIMITED | DEFAULT}

                                           }

                                           2、对密码做限制

                                           { { FAILED_LOGIN_ATTEMPTS 帐户被锁定之前可以错误尝试的次数

                                             | PASSWORD_LIFE_TIME    密码可以被使用的天数,单位是天,默认值180天

                                             | PASSWORD_REUSE_TIME   密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)

                                             | PASSWORD_REUSE_MAX    密码的最大改变次数(结合PASSWORD_REUSE_TIME)

                                             | PASSWORD_LOCK_TIME    超过错误尝试次数后,用户被锁定的天数,默认1天

                                             | PASSWORD_GRACE_TIME   当密码过期之后还有多少天可以使用原密码

                                             }  { expr | UNLIMITED | DEFAULT }

                                             | PASSWORD_VERIFY_FUNCTION  { function | NULL | DEFAULT }

 

                                创建profile

                                           create profile new_profile limit password_reuse_max 10 password_reuse_time 30;

                                修改用户profile

                                           alter user scott profile new_profile;

                                修改profile

                                           alter profile limit PASSWORD_LOCK_TIME 2;

                               

                                profile生效

                                           sys@oray>show parameter resource

 

                                           NAME                                             TYPE VALUE

                                           ------------------------------------ ----------- ------------------------------

                                           resource_limit                              boolean      FALSE                                      

                    

           11g安全新增功能

                     大小写敏感

                                sys@oray>show parameter case

 

                                NAME                                             TYPE VALUE

                                ------------------------------------ ----------- ------------------------------

                                sec_case_sensitive_logon        boolean      TRUE                             

                    

                     默认输错密码10次,锁定账号

                                FAILED_LOGIN_ATTEMPTS 10    # dba_profiles

                               

                     密码复杂性校验

                                sys@oray>@?/rdbms/admin/utlpwdmg.sql

                                sys@oray>alter profile default limit password_verify_function verify_function_11g;

                     防止Dos攻击

                                sys@oray>show parameter sec_proto

 

                                NAME                                             TYPE VALUE

                                ------------------------------------ ----------- ------------------------------

                                sec_protocol_error_further_action    string        CONTINUE

                                           # 可指定 继续、断开连接或延迟接受请求

                                sec_protocol_error_trace_action      string       TRACE     

                                           # NONE、TRACE、LOG 或 ALERT。

                    

                     防止强力攻击

                                sys@oray>show parameter sec_ma

 

                                NAME                                             TYPE VALUE

                                ------------------------------------ ----------- ------------------------------

                                sec_max_failed_login_attempts       integer        10

                                           # 表示在连接尝试达到指定次数后会自动断开连接。即使未启用口令概要文件,也会强制实施此参数。

          

                     密码错误延迟验证

                    

                     无需密码,修改回原始密码

                                select name,PASSWORD from user$

                                alter user scott identified by values 'F894844C34402B67';

                    

                     默认密码用户管理

                                DBA_USERS_WITH_DEFPWD

                               

                     用户改名(11.2.0.2)

                                需要修改隐含参数"_enable_rename_user"

                                ALTER user testusr RENAME TO testusr1 IDENTIFIED BY password;

                               

           1.查看所有用户:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看用户系统权限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;

6.查看当前用户的缺省表空间
select username,default_tablespace from user_users;

7.查看某个角色的具体权限,如grant connect,resource,create session,create view to TEST;查看RESOURCE具有那些权限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';

例:
限制user1用户只允许100个并发连接
SQL> alter system set resource_limit=true;

System altered

SQL> create profile profile_user1 limit sessions_per_user 100;

Profile created

SQL> ALTER USER user1 profile profile_user1;

User altered

 

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

转载于:http://blog.itpub.net/203348/viewspace-1247309/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值