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用戶模式