【Oracle11g】04_用戶和權限管理


1.默認用戶

以上只是默認用戶的其中三個,還有其他默認用戶

SYS用戶:數據庫中所有數據字典表和視圖都存儲在 SYS 模式中。SYS用戶主要用來維護系統信息和管理實例。
SYSTEM用戶:SYSTEM 是默認的系統管理員,該用戶擁有Oracle管理工具使用的內部表和視圖。通常通過SYSTEM用戶管理數據庫用戶、權限和存儲等。
SCOTT用戶:SCOTT用戶是Oracle 數據庫的一個示范帳戶,在數據庫安裝時創建。
scott是oracle公司第一個員工的名字。

2.創建用戶

  • 要連接到Oracle數據庫,就需要創建一個用戶賬戶。
  • 每個用戶都有一個默認表空間和一個臨時表空間

語法:

CREATE USER username
IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace];

注意:創建用戶設置的密碼不能以數字開頭。

3.profile概要文件

通過https://localhost:1158/em可以打開em,然后找到【服務器】TAB,即可看到下圖

C:\Users\QIN>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 1 21:23:22 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

SQL> conn system/admin@orcl
已連接。
SQL> create user test1 identified by test1;

用戶已創建。
SQL> alter user test1 profile prol;

用戶已更改。

此時,在em中已經生成了profile文件,如下圖:可以看到設置的參數同時也生效了。

根據上圖可以知道,登錄失敗2次,則賬戶鎖定2天。因此,做以下測試

SQL> conn test1/abc@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


警告: 您不再連接到 ORACLE。
SQL> conn test1/abcd@orcl
ERROR:
ORA-01017: invalid username/password; logon denied


SQL> conn test1/abcde@orcl
ERROR:
ORA-28000: the account is locked

測試發現,確實是登錄失敗2次,則鎖定2天。

賬戶被鎖定了,那么如何解鎖呢?

SQL> conn system/admin@orcl
已連接。
SQL> alter user test1 account unlock;

用戶已更改。

同時,也可以通過概要文件設置登錄密碼的失效時間與最大容忍天數(即密碼最多寬限2天)

SQL> alter profile prol limit password_life_time 10 password_grace_time 2;

配置文件已更改

刪除prfile:drop profile prol cascade; 刪除后,test1用戶的profile會指向default。

4.權限

  • 權限指的是執行特定命令或訪問數據庫對象的權利
  • 權限有兩種類型,系統權限和對象權限
    • 系統權限允許用戶執行某些數據庫操作,如創建表就是一個系統權限
    • 對象權限允許用戶對數據庫對象(如表、視圖、序列等)執行特定操作

4.1 系統權限

授予用戶權限,可以是系統權限或者對象權限。

   GRANT privilege [,privilege…]
   TO  user [, user|role, PUBLIC…] 
    [WITH ADMIN OPTION];
說明:包含了WITH ADMIN OPTION,只能是系統權限。
   收回系統權限REVOKE
例:REVOKE create session FROM test1;

那么,系統權限被收回時,會不會把級聯收回下游用戶的權限呢?通過下圖即可說明

首先,我們創建了test2用戶,並且授予with admin option,那么,此時的test2用戶即可對新建用戶授予create session的權限,新建test3用戶並授予create session權限,此時,test3是可以登錄的,但是當收回test2的權限的時候,test3還是可以正常登錄,說明系統權限在收回的時候,不會級聯收回。

4.2 對象權限

對象權限:訪問某個用戶的特定對象(如表、視圖等)的對象權限(select on scott.student)

 GRANT object_privilege [columns…]
   ON  object  TO  user [, user|role, PUBLIC…] 
    [WITH GRANT OPTION];

  收回對象權限REVOKE:
   REVOKE privilege     ON object 
   FROM {user|role|PUBLIC};
例:revoke select on scott.student from test2;

授予對象權限可以精確到列的權限上

grant update(ename,sal) on scott.emp to wang;

與系統權限不一樣的是,對象權限被收回權限的時候,會級聯收回權限,通過下圖可以看出

補充知識:
select * from tab -- 查看當前用戶中所有的表(TAB是一個同義詞)
select * from dba_sys_privs d where d.grantee = 'TEST1' --查看test1用戶的系統權限

5.角色

角色管理:角色是一組相關權限的組合,可以將權限授予角
色,再把角色授予用戶,以簡化權限管理。
(1)創建角色CREATE ROLE,應該具有CREATE ROLE系統權限。
CREATE ROLE role_name;
(2) 授予角色權限,可以是系統權限或者對象權限。
GRANT privilege TO ROLE;
例: grant create session ,create any table, drop any table to role1;
(3) 將角色授予用戶
GRANT role TO user;
例: grant role1 to test2;
(4) 從用戶收回角色
REVOKE role FROM user;

5.1 查看角色權限

1)查看角色具有什么對象權限

select * from dba_sys_privs where role='ROLE1' 

2)查看角色具有什么對象權限

select * from dba_tab_privs

3)查看用戶具有什么樣的對象權限

select * from dba_tab_privs d where d.grantee='TEST1'

4)查看用戶具有什么樣的系統權限

select * from dba_sys_privs d where d.grantee='TEST1'

6.更改和刪除用戶

--ALTER USER 命令可用於更改口令 
ALTER USER wang IDENTIFIED BY wangnewpwd; --修改 wang用戶的密碼

--DROP USER 命令用於刪除用戶 
DROP USER wang [CASCADE];  --刪除 wang用戶模式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM