用戶
系統默認的權限
數據字典名稱 | 說 明 |
---|---|
DBA_USERS | 數據庫用戶基本信息表 |
DBA_SYS_PRIVS | 已授予用戶或角色的系統權限 |
DBA_TAB_PRIVS | 數據庫對象上的所有權限 |
USER_SYS_PRIVS | 登錄用戶可以查看自己的系統權限 |
ROLE_SYS_PRIVS | 登錄用戶查看自己的角色 |
ALL_TABLES | 用戶自己可以查詢的基表信息 |
USER_TAB_PRIVS | 用戶自己將哪些基表權限授予哪些用戶 |
ALL_TAB_PRIVS | 哪些用戶給自己授權 |
角色對應的權限
角 色 名 | 包 含 權 限 |
---|---|
ALTER SESSION | |
CREATE CLUSTER | |
CREATE DATABASE LINK | |
CREATE SEQUENCE | |
CONNECT | CREATE SESSION |
CREATE SYNONYM | |
CREATE TABLE | |
CREATE VIEW | |
CREATE CLUSTER | |
CREATE INDEXTYPE | |
CREATE OPERATOR | |
CREATE PROCEDURE | |
RESOURCE | CREATE SEQUENCE |
CREATE TABLE | |
CREATE TRIGGER | |
CREATE TYPE | |
DBA | 所有權限,不受限制 |
SELECT ANY TABLE | |
BACKUP ANY TABLE | |
EXP_FULL_DATABASE | EXECUTE ANY PROCEDURE |
EXECUTE ANY TYPE | |
ADMINISTER RESOURCE MANAGER | |
IMP_FULL_DATABASE | EXECUTE_CATALOG_ROLE |
SELECT_CATALOG_ROLE |
常用的sql語句
- 查詢所有用戶
SELECT * from dba_users;
- 查詢當前用戶
select USERNAME from user_users;
- 查詢當前用戶的權限
select * from session_privs;
- 登錄用戶查看自己的角色
SELECT * FROM ROLE_SYS_PRIVS;
- 查詢當前用戶的所有表
select TABLE_NAME from all_tables where owner='SCOTT';
select count(*) from all_tables where owner='SCOTT';
創建用戶
create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user’]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,…]…on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]
- user_name:用戶名,一般爲字母數字型和“#”及“_”符號。
- pass_word:用戶口令,一般爲字母數字型和“#”及“_”符號。
- identified exeternally:表示用戶名在操作系統下驗證,這種情況下要求該用戶必須與操作系統
中所定義的用戶名相同。 - identified globally as ‘CN=user’:表示用戶名由 Oracle 安全域中心服務器驗證,CN 名字表示用
戶的外部名。 - [default tablespace tablespace_default]:表示該用戶在創建數據對象時使用的默認表空間。
- [temporary tablespace tablespace_temp]:表示該用戶所使用的臨時表空間。
- [quota [integer K[M]] [unlimited]] on tablespace_specify1:表示該用戶在指定表空間中允許佔用
的最大空間。 - [profiles profile_name]:資源文件的名稱。
- [account lock or account unlock]:用戶是否被加鎖,默認情況下是不加鎖的。
下面將通過若干具體的實例來演示如何創建數據庫用戶。
創建用戶,並指定默認表空間和臨時表空間
- 創建一個 mr 用戶,口令爲 mrsoft,並設置默認的表空間爲 users,臨時表空間爲 temp的用戶
create user mr identified by mrsoft
default tablespace users
temporary tablespace temp;
修改用戶
- 修改用戶 east 在表空間上的磁盤限額爲 20MB(原始爲 10MB,先增加 10MB)
alter user east quota 20m on tbsp_1;
- 修改用戶 east 的新口令爲 123456(原始爲 mrsoft)
alter user east identified by 123456;
- 使用 alter user 命令解除被鎖定的賬戶 SH
alter user SH account unlock;
修改用戶名
- 查詢對應的user# id
SELECT * FROM user$ u WHERE u.NAME='430TEMPO';
UPDATE USER$ SET NAME='430TEMPO'WHERE USER#=100;
COMMIT;
- 強制刷新
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;
- 修改密碼
ALTER USER 430TEMPO IDENTIFIED BY root;
刪除用戶
drop user user_name[cascade] --cascade:級聯刪除選項,如果用戶包含數據庫對象,則必須加 CASCADE 選項,此時連同該用戶所擁有的對象一起刪除。
- 使用 drop user 語句刪除用戶 df,並連同該用戶所擁有的對象一起刪除
drop user df cascade;
用戶權限管理
-
語法
GRANT sys_privi | role to user | role | public [with admin option]
-
爲用戶 east 授予連接和開發系統權限
grant connect,resource to east;
-
回收系統權限
revoke sys_privi | role from user | role | PUBLIC
-
撤銷 east 用戶的 resource 系統權限
revoke resource from east;
-
對象授權
grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]
-
obj_privi:表示對象的權限,可以是 ALTER、EXECUTE、SELECT、UPDATE 和 INSERT 等。
-
role:角色名。
-
user:被授權的用戶名。
-
with admin option:表示被授權者可再將系統權限授予其他的用戶。
-
with hierarchy option:在對象的子對象(在視圖上再建立視圖)上授權給用戶。
-
給用戶 xifang 授予 select、insert、delete 和 update 表 soctt.emp 的權限
grant select,insert,delete,update on scott.emp to xifang;
-
回收對象權限
revoke obj_privi | all on schema.object from user | role | public cascade constraints
-
obj_privi:表示對象的權限。
-
public:保留字,代表 Oracle 系統的所有權限。
-
cascade ascade constraints:表示有關聯關係的權限也被回收。
-
從 xifang 用戶回收 scott.emp 表的 update 和 delete 權限
revoke delete,update on scott.emp from xifang;