在oracle中,一個服務器上一般只有一個數據庫。在一個數據庫中,不同的用戶項目由不同的用戶訪問,每一個用戶擁有自身創建的數據庫對象,當一個用戶想訪問其它用戶下的數據庫對象時,必須由對方授予一定的權限,因此,用戶和權限在oracle中非常重要。下面是我總結的一些關於用戶和權限的知識,和大家一起分享一下。
連接數據庫前,必須保證oracle實例的服務與監聽開啟。在oracle中,默認有兩個數據庫管理員用戶(sys和system)和一個普通用戶(scott)。sys用戶具有所有數據庫管理的功能,system用戶除了不能用於數據庫的備份及恢復,scott表是為程序測試提供的用戶。
一、用戶
1.創建用戶
格式:create user 用戶名 identified by 密碼;
create user test1 identified by 123456;
創建用戶后並沒有連接數據庫,創建操作數據庫對象的權限,需要進行相應的授權。
grant connect to test1;--允許用戶連接數據庫 grant resource to test1;--允許用戶創建相關的數據庫對象,如表,序列等。
進行上面的授權后,就可以連接數據庫並且創建表等對象了。
2.常用系統權限
系統權限 | 允許用戶的操作 |
create session | 連接到數據庫 |
create sequence | 創建序列 |
create synonym | 創建同義詞 |
create table | 在用戶架構中創建表格 |
create any table | 在任意框架中創建表 |
drop table | 從用戶框架中刪除表 |
drop any table | 在任意框架中刪除表 |
create procedure | 創建存儲過程 |
execute any procedure | 在任意框架中執行存儲過程 |
create user | 創建用戶 |
drop user | 刪除用戶 |
create view | 創建視圖 |
3.數據庫角色
(1)定義:若干系統權限的集合。
(2)常用角色
1>connect角色:主要用於臨時表中,擁有connect角色的用戶,可以與服務器建立連接會話(session,客戶端對服務器的連接,稱為會話)。
grant connect to test1;
2>resource角色:resource提供給用戶另外的權限以創建他們的表,序列,過程,觸發器,索引等。但不能創建視圖。
grant resource to test1;
3>DBA角色:擁有所有的系統權限,用戶system擁有DBA角色。
grant dba to test1;
(3)一個用戶對其他用戶的授權
一個用戶授權時使用with admin option,則該用戶可以繼續講該權限分配給其他用戶。並且當該用戶的權限被收回后,該用戶給其他分配出去的系統權限不受影響。
grant connect,resource,drop user to test2 with admin option;
4.收回權限
revoke connect,resource from test2;
5.修改用戶密碼
--修改用戶密碼 alter user test2 identified by 111111; --或可視化更改用戶密碼 conn test2/123456 password;--password必須放在下一行
6.查詢用戶
select * from dba_users; select * from user_role_privs; SELECT * FROM user_sys_privs
7.刪除用戶
drop user test2;
注意;刪除用戶時,若用戶架構包含對象(如表等),那么在刪除用戶時需要級聯刪除,即drop user test2 cascade;
總結:1.一般情況下,一個普通用戶若只是做測試用戶,不需要建表等,只分配connect權限即可。
2.若用戶需要建表等,則分配connect和resource權限。
3.當一個用戶需要給其他用戶授予系統權限時,其他用戶給該用戶分配權限時需要加with admin option
二、對象權限
1.定義:對象權限允許用戶執行某些數據庫對象操作,如表上執行DML語句。
對象權限 |
允許用戶的操作 |
select | 查詢 |
update | 更新 |
add | 增加 |
delete | 刪除 |
execute | 執行存儲過程和函數 |
2.對象權限的分配與收回
語法與分配收回系統權限類型,不用的地方在於當允許被授權用戶將權限授予其他用戶時使用的是with grant option,而非with admin option。且當用戶的權限被收回后,它之前授予其他用戶的該權限也被撤銷。