oracle用戶管理
創建用戶(簡單版)
概述:在oracle中要創建一個新的用戶使用create user語句,一般是具有dab(數據庫管理員)的權限才能使用。
基本語法:create user 用戶名 identified by 密碼;
注意:oracle規定用戶密碼不能以數字開頭
給用戶修改密碼
概述:如果給自己修改密碼可以直接使用sql>password 用戶名
如果給別人修改密碼則需要具有dba的權限,或是擁有alter user的系統權限,也可以使用password用戶名
sql>password 用戶名;
sql>alter user 用戶名 identified by 新密碼;
特別說明:oracle已對oracle操作中出現的錯誤進行了編號,以后遇到錯誤將記錄編號進行網上查詢解決方案。
oracle用戶管理
創建用戶(細節)
例子:
sql>create user dd identified by dd
default tablespace users
temporary tablespace temp
quota 3m on users;
identified by表明用戶shunping將用數據庫方式驗證default tablespace users//用戶的表空間在users上
temporary tablespace temp//用戶shunping的臨時表建在temp空間
quota 3m on users//表明用戶shunping建立的數據對象(表、索引、視圖、pl/sql塊)最大只能是3m
剛剛創建的用戶是沒有任何權限的,因此,需要dba給該用戶授權。
sql>grant connect to shunping
如果你希望該用戶建表沒有空間的限制
sql>grant resource to shunping
如果你希望該用戶成為dba
sql>grant dba to shunping
表空間(oracle獨有的概念)
什么是表空間?表存在的空間,一個表空間是指向具體的數據文件。

為什么創建好的用戶無法正常登錄?
oracle中用戶建立后是無法正常登錄的,只有在數據庫管理員(DBA)對用戶分配相應的權限后,用戶才可以登錄。
如何給用戶分配權限?
基本語法:grant create 權限 to 用戶名;
案例:sql>grant create session to xiaoming;
也可以按角色對用戶分配權限
基本語法:grant 角色名 to 用戶名;
案例:sql>grant dba to xiaoming;
oracle管理用戶的機制(原理)
oracle中權限的概念
權限分為系統權限與對象權限。
系統權限是數據庫管理相關的權限:
create session(登錄權限)
create table(創建表權限)
create index(創建索引權限)
create view(創建視圖權限)
create sequence(創建序列權限)
create trriger(創建觸發器權限)
......
對象權限是和用戶操作數據對象相關的權限。
update改
insert增
delete刪
select查
角色分為預定義角色和自定義角色
預定義角色:把常用的權限集中起來,形成角色。
常見的角色有:DBA、connect、resource
自定義角色按需定制一定權限形成角色,可以作為預定義角色的補充。來滿足用戶的需求。

oracle用戶管理
用戶管理的綜合案例
概述:創建的新用戶是沒有任何權限的,甚至連登錄的數據庫的權限都沒有,需要為其指定相應的權限。給一個用戶賦權限使用使令grant,回收權限使用命令revoke
賦權限基本語法:grant 權限/角色 to 用戶名;
回收權限基本語法:revoke 權限/角色 from 用戶名;
oracle用戶管理
刪除用戶
概述:一般以dba的身份去刪除某個用戶,如果用其它用戶去刪除用戶則需要具有drop user的權限
基本語法:drop user 用戶名 [cascade];
為了講清楚用戶的管理,這里舉例說明:
1、創建xiaoming,並賦予connect和resource
創建用戶基本語法:create user 用戶名 identified by 密碼;
sql>create user xiaoming identified by m123;
給用戶授權基本語法:grant 權限/角色 to 用戶名;
sql>grant connect to xiaoming;
sql>grant resource to xiaoming;
2、切換用戶
切換用戶基本語法:connect 用戶名/密碼;
sql>conn xiaoming/m123;
3、xiaoming修改密碼
修改密碼基本語法:password 用戶名;
sql>password xiaoming;
管理員修改密碼基本語法:alter user 用戶名 identified by 新密碼;
sql>alter user xiaoming identified by xiaoming123;(sys或system用戶修改其它用戶的方法)
4、使用xiaoming建表
建表基本語法:create table 表名(字段屬性);
sql>create table users(id number);
5、添加數據
添加數據基本語法:insert into 表名 values(值);
sql>insert into users values(1);
6、查詢數據
查詢表內容基本語法:select * from 表名;
sql>select * from users;
7、刪除表
刪除表基本語法:drop table 表名;
sql>drop table users;
8、回收權限(需sys或system用戶)
回收權限基本語法:revoke 權限/角色名 from 用戶名;
sql>revoke connect from xiaoming;
sql>revoke resource from xiaoming;
9、刪除用戶
刪除用戶基本語法:drop user 用戶名 [cascade];
當我們刪除一個用戶的時候,如果這個用戶自己已經創建過數據對象,那么我們在刪除該用戶時,需要加[cascade],表示把這個用戶刪除的同時,把該用戶創建的數據對象一並刪除。
sql>drop user xiaoming;
方案(schema)
理解:當一個用戶,創建好以后,如果該用戶創建了任意一個數據對象,此時,我們的dbms就會創建一個對應的方案與該用戶對應。方案名與用戶名完全一樣。

小技巧:如果希望看到某個用戶的方案究竟有什么數據對象,我們可以使用pl/sql developer
方案這個概念的實際應用:
要求:請完成一個功能,讓xiaohong用戶可以去查詢scott的emp表
步驟:
1、先用scott登錄
sql>conn scott/tiger;
2、賦權限給xiaohong
給某用戶添加表[增刪改查]權限基本語法:grant [select|update|delete|insert|all] on 表名 to 用戶名;
sql>grant select on emp to xiaohong;
3、xiaohong查詢scott的emp
用戶查詢授權表的基本語法:select * from [方案名].表名;
注意:方案名不帶的話,默認是查詢自己方案中的表。
sql>select * from scott.emp;
練習題:
用戶創建練習:
1、創建用戶tea,stu,並給這兩個用戶resource,connect角色
sql>conn system/orcl;//使用system用戶創建tea和stu用戶
sql>create user tea identified by tea;//創建tea用戶
sql>create user stu identified by stu;//創建stu用戶
sql>grant resource to tea;//對tea用戶授權resource權限
sql>grant connect to tea;//對tea用戶授權connect權限
sql>grant resource to stu;//對stu用戶授權resource權限
sql>grant connect to stu;//對stu用戶授權connect權限
2、使用scott用戶把對emp表的select權限給tea
sql>conn scott/tiger;//切換scott用戶操作
sql>grant select on emp to tea;//將scott的emp查詢權限交給tea
使用tea查詢scott的emp表
sql>conn tea/tea;
sql>select * from scott.emp;//查詢scott的emp表
使用scott用戶把emp表的所有權限賦給tea
sql>conn scott/tiger;
sql>grant all on emp to tea;//將scott的emp操作的全部權限交給了tea
使用tea更新/刪除/插入scott的emp表
sql>conn tea/tea;
sql>update scott.emp set job='Teacher' where job='&job';
sql>delete from scott.emp where job='&job';
sql>insert into scott.emp values(8888,'FORD','Teacher',7698,'08-9月-81',1500,300,20);
使用scott收回權限
sql>conn scott/tiger;
sql>revoke all on emp from tea;
3、想辦法將讓tea把自己擁有的對scott.emp的權限轉給stu;
sql>conn scott/tiger;
sql>grant all on emp to tea with grant option;
//with grant option表示得到權限的用戶,可以把權限繼續分配
//with admin option如果是系統權限,則帶with admin option
sql>conn tea/tea;
sql>grant all on scott.emp to stu;
使用stu查詢scott用戶的emp表
sql>conn stu/stu;
sql>select * from scott.emp;
使用tea收回給stu的權限
sql>conn tea/tea;
sql>revoke all on scott.emp from stu;
系統權限with admin option
對象權限with grant option
oralce用戶管理
使用profile管理用戶口令
概述:profile是口令限制,資源限制的命令集合,當建立數據時,oracle會自動建立名稱為default的profile,當建立用戶沒有指定profile選項,那oracle就會將default分配給用戶。
1、帳戶鎖定
概述:指定該帳戶(用戶)登錄時最多可以輸入密碼的次數,也可以指定用戶鎖定的時間(天)一般用dba的身份去執行該命令
例:指定scott這個用戶最多只能嘗試3次登錄,鎖定時間為2天,讓我們看看怎么實現?
創建profile文件
創建profile文件設定嘗試密碼輸入幾次在錯誤后鎖定幾天基本語法:
create profile profile文件名 limit failed_login_attempts 嘗試輸入次數 password_lock_time 鎖定幾天;
alter user 用戶名 profile profile文件名;
sql>create profile lock_account limit failed_login_attempts 3 password_lock_time 2;
sql>alter user tea profile lock_account;
2、給帳戶(用戶)解鎖
解鎖基本語法:alter user 用戶名 account unlock;
sql>alter user tea account unlock;
3、終止口令
為了讓用戶定期修改密碼可以使用終止口令的指令來完成,同樣這個命令也需要dba身份來操作。
例如:給前面創建的用戶tea創建一個profile文件,要求該用戶每隔10天要修改自己的登錄密碼,寬限期為2天。
創建profile文件設置每隔幾天要對用戶的密碼進行修改,更改密碼時間在幾天內基本語法:create profile profile文件名 limit password_life_time 幾天后修改密碼 password_grace_time 寬限期幾天;
alter user 用戶名 profile profile文件名;
sql>create profile myprofile limit password_life_time 10 password_grace_time 2;
sql>alter user tea profile myprofile;
4、口令歷史
概述:如果希望用戶在修改密碼時,不能使用以前使用過的密碼,可使用口令歷史,這樣oracle就會將口令修改的信息存放在數據字典中,這樣當用戶修改密碼時,oralce就會對新舊密碼進行比較,當發現新舊密碼一樣時,就提示用戶重新輸入密碼。
例:
1、建立profile
sql>create profile profile名稱 limit password_life_time 10 password_grace_time 2 password_reuse_time 10
password_reuse_time 2// //限制口令在多少天內不能重復使用(換言之就是多少天內不允許使用以前使用過的密碼)
2、分配給某個用戶
sql>alter user 用戶名 profile profile名稱;
5、刪除profile
概述:當不需要某個profile文件時,可以刪除文件
刪除profile基本語法:drop profile profile文件名 [cascade];
sql>drop profile profile文件名;
注意:profile文件被刪除后,原profile文件指定的用戶將不再受原profile文件規則限定。當profile文件指定了用戶,要加上 cascade.
oracle數據庫的啟動/關閉流程
oracle也可以通過命令行的方式啟動,具體如何操作:
oracle啟動流程--windows下
1、lsnrctl start(啟動監聽)
2、oradim -startup -sid 數據庫實例名
oracle關閉流程--windows下
1、lsnrctl stop
2、oradim -shutdown -sid 數據庫實例名 -shuttype srvc,inst
oracle啟動流程--linux下
1、lsnrctl start(啟動監聽)
2、sqlplus sys/change_on_install as sysdba(以sysdba身份登錄,在oracle10g后可以這樣寫)
sqlplus /nolog
conn sys/change_on_install as sysdba
3、startup
oracle關閉流程--linux下
sqlplus/nolog
conn sys/change_on_install as sysdba
shutdown
注:shutdown關閉,等待每個用戶退出系統或被取消后退出關閉數據庫。
shutdown transactional:事務性關閉,等待每個用戶提交或回退當前的事務,然后oracle取消對話,在所有用戶退出系統后執行關閉。
shutdown immediate:直接關閉,取消所有用戶對話(促使回退),執行正常的關閉程序。
