2.oracle 用戶管理
創(chuàng)建用戶
概述:在oracle 中要?jiǎng)?chuàng)建一個(gè)新的用戶使用create user 語(yǔ)句,一般是具有
dba(數(shù)據(jù)庫(kù)管理員)的權(quán)限才能使用。
create user 用戶名 identified by 密碼; (oracle 有個(gè)毛病,密碼必須以字
母開頭,如果以字母開頭,它不會(huì)創(chuàng)建用戶)
給用戶修改密碼
概述:如果給自己修改密碼可以直接使用
password 用戶名
如果給別人修改密碼則需要具有dba 的權(quán)限,或是擁有alter user 的系統(tǒng)權(quán)限
SQL> alter user 用戶名 identified by 新密碼
刪除用戶
概述:一般以dba 的身份去刪除某個(gè)用戶,如果用其它用戶去刪除用戶則需要具
有drop user 的權(quán)限。
比如 drop user 用戶名 【cascade】
在刪除用戶時(shí),注意:
如果要?jiǎng)h除的用戶,已經(jīng)創(chuàng)建了表,那么就需要在刪除的時(shí)候帶一個(gè)參數(shù)
cascade;
用戶管理的綜合案例
概述:創(chuàng)建的新用戶是沒有任何權(quán)限的,甚至連登陸的數(shù)據(jù)庫(kù)的權(quán)限都沒有,需
要為其指定相應(yīng)的權(quán)限。給一個(gè)用戶賦權(quán)限使用命令grant,回收權(quán)限使用命令
revoke。
為了給講清楚用戶的管理,這里我給大家舉一個(gè)案例。
SQL> conn xiaoming/m12;
ERROR:
ORA-01045: user XIAOMING lacks CREATE SESSION privilege; logon denied
警告: 您不再連接到 ORACLE。
SQL> show user;
USER 為 ""
SQL> conn system/p;
已連接。
SQL> grant connect to xiaoming;
授權(quán)成功。
SQL> conn xiaoming/m12;
已連接。
SQL>
注意:grant connect to xiaoming;在這里,準(zhǔn)確的講,connect 不是權(quán)限,而
是角色。
現(xiàn)在說(shuō)下對(duì)象權(quán)限,現(xiàn)在要做這么件事情:
* 希望xiaoming 用戶可以去查詢emp 表
* 希望xiaoming 用戶可以去查詢scott 的emp 表
grant select on emp to xiaoming
* 希望xiaoming 用戶可以去修改scott 的emp 表
grant update on emp to xiaoming
* 希望xiaoming 用戶可以去修改/刪除,查詢,添加scott 的emp 表
grant all on emp to xiaoming
* scott 希望收回xiaoming 對(duì)emp 表的查詢權(quán)限
revoke select on emp from xiaoming
//對(duì)權(quán)限的維護(hù)。
* 希望xiaoming 用戶可以去查詢scott 的emp 表/還希望xiaoming 可以把這個(gè)
權(quán)限繼續(xù)給別人。
--如果是對(duì)象權(quán)限,就加入 with grant option
grant select on emp to xiaoming with grant option
我的操作過(guò)程:
SQL> conn scott/tiger;
已連接。
SQL> grant select on scott.emp to xiaoming with grant option;
授權(quán)成功。
SQL> conn system/p;
已連接。
SQL> create user xiaohong identified by m123;
用戶已創(chuàng)建。
SQL> grant connect to xiaohong;
授權(quán)成功。
SQL> conn xiaoming/m12;
已連接。
SQL> grant select on scott.emp to xiaohong;
授權(quán)成功。
--如果是系統(tǒng)權(quán)限。
system 給xiaoming 權(quán)限時(shí):
grant connect to xiaoming with admin option
問(wèn)題:如果scott 把xiaoming 對(duì)emp 表的查詢權(quán)限回收,那么xiaohong 會(huì)怎樣?
答案:被回收。
下面是我的操作過(guò)程:
SQL> conn scott/tiger;
已連接。
SQL> revoke select on emp from xiaoming;
撤銷成功。
SQL> conn xiaohong/m123;
已連接。
SQL> select * from scott.emp;
select * from scott.emp
*
第 1 行出現(xiàn)錯(cuò)誤:
ORA-00942: 表或視圖不存在
結(jié)果顯示:小紅受到誅連了。。
使用profile 管理用戶口令
概述:profile 是口令限制,資源限制的命令集合,當(dāng)建立數(shù)據(jù)庫(kù)的,oracle
會(huì)自動(dòng)建立名稱為default 的profile。當(dāng)建立用戶沒有指定profile 選項(xiàng),那
么oracle 就會(huì)將default 分配給用戶。
1.賬戶鎖定
概述:指定該賬戶(用戶)登陸時(shí)最多可以輸入密碼的次數(shù),也可以指定用戶鎖定
的時(shí)間(天)一般用dba 的身份去執(zhí)行該命令。
例子:指定scott 這個(gè)用戶最多只能嘗試3 次登陸,鎖定時(shí)間為2 天,讓我們看
看怎么實(shí)現(xiàn)。
創(chuàng)建profile 文件
SQL> create profile lock_account limit failed_login_attempts 3
password_lock_time 2;
SQL> alter user scott profile lock_account;
2.給賬戶(用戶)解鎖
SQL> alter user tea account unlock;
3.終止口令
為了讓用戶定期修改密碼可以使用終止口令的指令來(lái)完成,同樣這個(gè)命令也需要
dba 的身份來(lái)操作。
例子:給前面創(chuàng)建的用戶tea 創(chuàng)建一個(gè)profile 文件,要求該用戶每隔10 天要
修改自己的登陸密碼,寬限期為2 天。看看怎么做。
SQL> create profile myprofile limit password_life_time 10
password_grace_time 2;
SQL> alter user tea profile myprofile;
口令歷史
概述:如果希望用戶在修改密碼時(shí),不能使用以前使用過(guò)的密碼,可使用口令歷
史,這樣oracle 就會(huì)將口令修改的信息存放到數(shù)據(jù)字典中,這樣當(dāng)用戶修改密
碼時(shí),oracle 就會(huì)對(duì)新舊密碼進(jìn)行比較,當(dāng)發(fā)現(xiàn)新舊密碼一樣時(shí),就提示用戶
重新輸入密碼。
例子:
1)建立profile
SQL>create profile password_history limit password_life_time 10
password_grace_time 2 password_reuse_time 10
password_reuse_time //指定口令可重用時(shí)間即10 天后就可以重用
2)分配給某個(gè)用戶
刪除profile
概述:當(dāng)不需要某個(gè)profile 文件時(shí),可以刪除該文件。
SQL> drop profile password_history 【casade】
注意:文件刪除后,用這個(gè)文件去約束的那些用戶通通也都被釋放了。
加了casade,就會(huì)把級(jí)聯(lián)的相關(guān)東西也給刪除掉