ORACLE使用者管理與許可權設定

wzhalal發表於2013-11-26
建立使用者:
CREATE USER user_name
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace_name] 
[TEMPORARY TABLESPACE tablespace_name]
[QUOTA ... ON tablespace_name]  --設定磁碟空間配額
[PASSWORD EXPIRE]--密碼過期,使用者登入時,提示使用者改密碼
[ACCOUNT LOCK|UNLOCK]--設定使用者是否鎖定

unlimited tablespace 許可權,可以忽略磁碟空間配額
建立時,需要有管理員許可權。

SQL> create user hh
 2  identified by abc;


剛建立的使用者沒有任何許可權,也無法登入,這裡為方便操作,給其先授權,讓
其能登入。

SQL> grant create session to hh;

使用者登入:
    1、在作業系統提示符下:
[oracle@t184 ~]$ sqlplus user_name/password 
如:
[oracle@t184 ~]$ sqlplus hh/abc
    2、在sqlplus環境下:
SQL> connect user_name/password
如:
SQL> connect hh/abc;

    注:對於SYS使用者登入時要在末尾加AS SYSDBA,如:
SQL> connect sys/oracle as sysdba
[oracle@t184 ~]$ uniread sqlplus sys/oracle as sysdba

檢視當前使用者:
SQL> show user;
如果是空的話,表示當前沒使用者連線。


使用者的認證方式:
    1、普通使用者密碼存放在資料庫中。可採用密碼認證和作業系統認證。
但作業系統認證比較麻煩,故很少使用。
所以普通一般採用密碼認證,使用這種方式登入 
sqlplus user_name/password 

    2、SYSDBA 的密碼不存放在資料庫中,而放在密碼檔案中。
密碼檔案:$ORACLE_HOME/dbs/orapw+SID

SYS使用者的認證方式也有:作業系統認證和密碼檔案認證,預設操作系
統認證是開啟的。所以經常有 sqlplus "/as sysdba" (作業系統認證)
如果採用密碼檔案認證 sqlplus user_name/password as sysdba

可以嘗試,取消作業系統認證
vim $ORACLE_HOME/network/admin/sqlnet.ora  新增一行
SQLNET.AUTHENTICATION_SERVICES=(NONE)

SYSDBA使用者密碼丟失的處理:
    方法一:開啟作業系統認證
vim $ORACLE_HOME/network/admin/sqlnet.ora  新增一行(如有修改)
SQLNET.AUTHENTICATION_SERVICES=(ALL)

    方法二:重建密碼檔案
orapwd file=$ORACLE_HOME/dbs/orapwocp password=abcd entries=5

修改使用者密碼
    ALTER USER user_name IDENTIFIED BY password

SQL> alter user hh identified by oracle;

管理員使用者可以修改其它使用者密碼,其他使用者只能修改自己的。

給使用者分配磁碟配額
ALTER USER user_name QUOTA ... ON tablespace_name

SQL> alter user hh quota 10m on users;

授權:
    ORACLE許可權分為兩種型別:系統許可權和物件許可權

授予系統許可權:
GRANT 許可權名 TO 使用者名稱 [WITH ADMIN OPTION]

    許可權名可以檢視資料字典:system_privilege_map

SQL> GRANT CREATE TABLE TO HH ;

收回(取消)許可權:
REVOKE 許可權名 FROM 使用者名稱

檢視系統的使用者許可權:
    1、使用者自己
SQL> select * from session_privs;

    2、管理員(dba_sys_privs)
SQL> select * from dba_sys_privs where grantee='HH';

物件許可權管理
    物件許可權:是對特定的物件所具有的許可權,物件許可權有:

物件許可權 檢視序列 過程
修改(alter) * *
刪除(delete) *  *
執行(execute)  *
索引(index) *
插入(insert) *  *
關聯(reference) *  *
選擇(select) *  * *
更新(update) *  *

物件授權:
GRANT privs_name ON object_name TO user_name 
[WITH GRANT OPTION];

SQL> grant update on scott.emp to hh;

物件許可權回收:
REVOKE privs_name ON object_name FROM user_name;
SQL> revoke update on scott.emp from hh;

注:物件許可權的回收是級聯的。


檢視使用者的物件許可權(DBA_TAB_PRIVS):
    DBA查:

SQL> select GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE 
from dba_tab_privs where grantee='HH';

    使用者自己查:
SQL> select GRANTEE,OWNER,TABLE_NAME,GRANTOR,PRIVILEGE
 2  from user_tab_privs;

授予SYSDBA許可權:
SQL> grant sysdba to h2;       
 
注:授予SYSDBA許可權後,使用者在登入時還要注意,如果不以as sysdba
   登入,仍然是普通使用者,而非SYSDBA。

檢視當前系統有哪些SYSDBA
SQL> SELECT * FROM V_$PWFILE_USERS;


角色
     許可權的集合,主要是方便許可權和管理與維護。

建立角色
CREATE ROLE role_name [IDENTIFIED BY password]

SQL> create role t1;

SQL> create role t2 identified by abcd;

為角色授權
GRANT priv_name TO role_name

SQL> grant create session to t1,t2;
SQL> grant create table to t1;
SQL> grant create view to t2;

將角色授予使用者
SQL> grant t1,t2 to hh;

DBA使用者檢視使用者許可權:
    1、檢視直接授權
SQL> select * from dba_sys_privs where grantee='HH';

    2、檢視該使用者授予哪些角色(DBA_ROLE_PRIVS)
SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='HH';

    3、檢視角色有哪些許可權(ROLE_SYS_PRIVS)
SQL> select * from role_sys_privs where role in ('T1','T2');

ORACLE 為了方便使用者的使用提供了兩個預設角色:CONNECT,RESOURCE。
為了使使用者更快的工作起來,可將這兩個角色授予使用者。但之後要仔細稽核
其許可權。

使用者許可權=單個授予+角色繼承(角色授予)

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28894640/viewspace-1061105/,如需轉載,請註明出處,否則將追究法律責任。

相關文章