一. 用戶管理參數,
0.刪除用戶: drop user 用戶名 [cascade]
當我們刪除用戶時, 如改用戶已創建過數據對象, 那么刪除用戶時必須加cascade參數, 用來同步刪除
改用戶的所有信息. 如還想使用該用戶的數據, 則不可刪除用戶, 可以凍結該用戶即可.
1.創建用戶方法一:
create user 用戶名 identified by 密碼 ; # 創建用戶, 但缺少必要的東西, 完整命令看下面.
創建的用戶沒有任何權限.ORA-01045: user QUZQ lacks CREATE SESSION privilege; logon denied
需要dba給新建的用戶進行授權,如下: 基本語法: grant 權限/角色 to 用戶
grand connect to 用戶名 # 授權可以鏈接數據庫
grand resource to 用戶名 # 授權建表無空間大小的限制
grand dba to 用戶名 # 設置用戶為dba
grand create session to 用命名 # create session權限即登陸數據庫實列
使用revoke命令可回收權限或角色, 語法: revoke 權限/角色 from 用戶
角色就是權限的一個集合, 角色分為預先定義(即oracle定義的) 和 自定義的
2.創建用戶方法二:
sql > create user 用戶名 identified by 密碼
default tabspace users # 指定新建用戶的表空間為users, users是oracle自帶的一個表空間
temporary tablespace temp # 指定臨時表空間為temp, temp空間也是oracle自帶的
quota 3m on users; # 用來限制改用戶創建的數據對象最大只能是3M
3.oracle中用戶的權限管理概念圖如下:
二. 用戶方案
oracle會給每個用戶創建個方案(方案可理解為用戶的獨立存儲空間; 把oracle比喻成一個大房子, 那方案就相當於是大房子
中隔出來的小房子, 每當添加個oracle用戶時, 就會在大房子里隔出個小屋), 當然前提是該用戶要創建數據對象, 不然是不會
被分配方案的. 每個用戶的方案都是隔離的, 各個方案中的表名都可以相同; oracle給用戶創建的方案名同用戶名.
1. 現有兩個用戶, user1和user2, 如何實現user1來訪問user2中的stu表呢? 正常情況這兩用戶是不能互相訪問的.
首先使用user2登陸, 執行授權命令,如下:
grant select [update | delete | insert | all ] on stu to user1 # 參數為all時, 表示增刪改查
然后使用user1登陸, 執行相應命令, 語法如下:
select * from user2.stu # select * from 方案名.表明
2. 有三個用戶, user1和user2和user3, 如何把user1的stu表權限給user2,並由user2再把user1的stu表權限給user3呢
這里涉及兩個命令: with admin option # 如果是支配系統權限, 則使用這個命令; 用於系統權限
with grant option # 得到權限的用戶, 可繼續分配權限, 即有支配所得權限的能力; 用於對象權限
grant all on user1.stu to user2 with grant option # 登陸user1前提下給user2支配stu表和crud該表的能力
grant all on user1.stu to user3 # 登陸user2把user1的stu表增刪該查權限給user3, 但user3無再分配權限的能力
三. 用戶管理之限制登陸次數, 鎖定賬戶時長
1. 創建profile限制集合, 用於配置限制的設置
create profile 集合名 limit failed_login_attempts 3 password_lock_time 2;
limit failed_login_attempts 3 # 限制登陸次數為3
password_lock_time 2 # 3次失敗后賬戶鎖定2天
2. 把創建好的限制集合分配給用戶user1
alter user user1 profile 集合名;
3. profile是口令限制.資源限制的命令集合, 當建立用戶沒有指定frofile選項, oracle將會產生個名為default的profile,
並將該default分配給用戶.