標籤:
密碼檔案屬於database的一部分
密碼檔案的作用:DBA使用者的身份認證
當具有sysdba和sysoper的許可權的時候就是dba 使用者
預設情況下
sysdba就是sys,他的許可權最大
sysoper就是system
登入Oracle資料庫可以有兩種身分識別驗證的方法
(1)使用作業系統整合的身分識別驗證
(2)使用Oracle資料庫的密碼檔案進行身分識別驗證
他們連個的應用情境
if 本地登入
(1)使用作業系統認證
(2)密碼檔案認證
[[email protected] dpdump]# id oracle
uid=1101(oracle) gid=1000(oinstall) 組=1000(oinstall),1300(dba),1301(oper)
我們看到oracle 使用者是屬於dba這個組的,所以具備dba這個組的許可權的,預設情況下他具備了作業系統的許可權,可以不適用密碼就可以登入了(使用作業系統裡的使用者名稱和密碼,然後就可以進去了)
sqlplus / as sysdba
SQL> 這種情況下我們就是用sys使用者登陸進來的
SQL> show user
USER is "SYS"
什麼是密碼檔案認證
密碼檔案目錄$ORACLE_HOME/dbs
密碼檔案是$ORACLE_HOME/dbs/orapw<SID>
下面的 orapwesbtest就是esbtest這個執行個體的密碼檔案
比如說我現在給這個密碼檔案刪除了,我們來看看
[[email protected] dbs]$ sqlplus sys/[email protected] as sysdba
如果密碼檔案被刪除了,則建立一個密碼檔案
比如這裡的 orapwesbtest 密碼檔案丟失了,我們用下面的這個方法產生密碼檔案
orapwd file= orapwesbtest password=yizhenuplooking entries=1
決定是密碼檔案認證還是OS認證,由兩個參數決定
參數(1)
remote/login/passwordfile=none|exclusive|shared
none 不適用密碼問津啊認證
execlusive 要密碼檔案認證,自己獨佔使用(這個是預設的)
shared 要密碼檔案認證,不同的執行個體dba使用者可以共用檔案
要是有密碼檔案認證,則sys使用者就不能遠程登入了
參數(2)
$ORACLE_HOME/network/admin/sqlnet.ora
檔案裡面添加下面這一行
SQLNET.AUTHENTCICATION_SERVICES=none|all|nts
none 代表關閉作業系統認證,只能密碼認證
all 用於linux/unix平台,關閉本機密碼檔案認證,採用作業系統認證,但是遠程(不是自己的機器)可以使用密碼檔案認證,但是本機是不可以登陸的
nts 是windows 平台的,暫時不做討論
這兩個參數可以配合使用,不同的搭配,會有不同的效果
密碼檔案的管理:
密碼檔案的額建立:
看一下怎麼使用的 orapwd
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n>
where
file - name of password file (required),密碼檔案的名字orapw<SID>
password - password for SYS will be prompted if not specified at command line,sys使用者的密碼
entries - maximum number of distinct DBA (optional),可以有多少個sysdba,sysoper許可權使用者放到密碼檔案中去,實際可以放的使用者密碼檔案比這個數大
force - whether to overwrite existing file (optional), force 預設為n,也可以問為y,是否覆蓋原有的密碼檔案
ignorecase - passwords are case-insensitive (optional),
nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only).
There must be no spaces around the equal-to (=) character.
密碼檔案的修改:
(1)orapwd 建立密碼檔案(不建議使用)
(2)alter user sys identified by
(3) grant sysdba to 使用者
(4)grant sysoper to 使用者
(5)revoke sysdba|sysoper from 使用者
上面都會使密碼檔案產生變化
比如說我現在不記得我的sys使用者的密碼,這個時候我麼可以先通過作業系統認證的方式進入
sqlplus / as sysdba
alter user sys identified by 12334234;
比如說我們現在想讓一個普通使用者擁有部分sysdba的許可權
conn / as sysdba;
create user bao identified by yizhenuplooking;
SQL> grant sysdba to bao;
Grant succeeded.
我們可以使用密碼認證進行登入
sqlplus bao/[email protected] as sysdba;
普通使用者bao 擁有了sys的許可權,但是預設請款下不是bao而是sys使用者,可以使用show user看一下,因為你就是用sys使用者的許可權登入進來的,所以預設情況下是sys使用者
看下sysdba 和 sysoper到底有什麼區別,他們兩個都是系統許可權
sysdba 是幫派老大
sysoper 是幫派二當家
怎麼查看我目前使用者有哪些許可權呢?比如說查看當前系統哪些是具有sysdba許可權的額,哪些是具有sysoper許可權的
我們可以查看密碼檔案的視圖,這個要在sysdba使用者下才能查看
conn / as sysdba;
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
BAO TRUE FALSE FALSE
S1 FALSE TRUE FALSE
總結:
(1)密碼檔案的作用
(2)密碼檔案的位置
(3)密碼檔案的尋找先後順序
首先尋找orapw<SID>,找不到在找orapwd的,都找不到則密碼認證失敗
(4)dba使用者的認證方式 系統認證和密碼檔案認證,什麼時候用什麼認證方式,由兩個參數決定
(5)密碼檔案的建立
(6)密碼檔案的修改的方式
(7)當sys密碼不對的時候,最好不要給他刪除重建立立,我麼應該用系統認證方式進入之後用alter user sys 的方式修改密碼,如果密碼檔案沒有了或者是損壞了,只有重建立立了
今天的作業:
1.組合時候使用兩個認證登陸方式的參數,看看會有什麼效果,從而總結出,關閉OS認證,密碼檔案,關閉本地密碼檔案,關閉遠程密碼檔案怎麼做
2.
oracle-6-密碼檔案