Oracle的操作系統(tǒng)身份認(rèn)證
創(chuàng)新互聯(lián)公司是專業(yè)的上高網(wǎng)站建設(shè)公司,上高接單;提供成都做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行上高網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
oraclelogin數(shù)據(jù)庫(kù)遠(yuǎn)程登錄authenticationos
sqlnet.authentication_services=(NTS),在$ORACLE_HOME/network/admin/sqlnet.ora中
NTS特指的是windows系統(tǒng),或者設(shè)為all,這兩種情況都允許操作系統(tǒng)認(rèn)證。
如果在unix下如果沒(méi)有設(shè)置sqlnet.authentication_services,默認(rèn)就是操作系統(tǒng)認(rèn)證!或者設(shè)為all也允許操作系統(tǒng)認(rèn)證。
參數(shù)SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)表明用戶連接Oracle服務(wù)器時(shí)使用哪種驗(yàn)證方式
NONE表示Oracle數(shù)據(jù)庫(kù)身份驗(yàn)證,NTS表示操作系統(tǒng)身份驗(yàn)證,兩種方式可以并用。
數(shù)據(jù)庫(kù)用sysdba登錄的驗(yàn)證有兩種方式,一種是通過(guò)os認(rèn)證,一種是通過(guò)密碼文件驗(yàn)證;登錄方式有兩種,一種是在數(shù)據(jù)庫(kù)主機(jī)直接登錄(用os認(rèn)證的方式),一種是通過(guò)網(wǎng)絡(luò)遠(yuǎn)程登錄;需要設(shè)置的參數(shù)有兩個(gè),一個(gè)是SQLNET.AUTHENTICATION_SERVICES,一個(gè)是REMOTE_LOGIN_PASSWORDFILE。
os認(rèn)證:如果啟用了os認(rèn)證,以sysdba登錄,那么我們只要用oracle軟件的安裝用戶就能登錄:sqlplus “/ as sysdba”。如果我們要禁用os認(rèn)證,只利用密碼文件登錄,我們首先要有一個(gè)密碼文件:
orapwd file=C:/oracle/product/10.2.0/db_1/database/PWDoralocal.ora password=maximo entries=10;
然后我們要把$ORACLE_HOME/network/admin/sqlnet.ora中設(shè)置:
SQLNET.AUTHENTICATION_SERVICES= none
注意一下,密碼文件只在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候加載進(jìn)去,一旦加載進(jìn)去,密碼文件就脫離了oracle管理,所以我們用orapwd新建密碼文件后,里面指定的密碼要在數(shù)據(jù)重啟后才能生效:
至此,我們已經(jīng)實(shí)現(xiàn)不用os認(rèn)證(sqlplus “/ as sysdba”的方式登錄不了)。那么我們?cè)趺聪拗凭W(wǎng)絡(luò)方面利用sysdba遠(yuǎn)程登錄呢?我們可以設(shè)置初始化文件中的REMOTE_LOGIN_PASSWORDFILE=none。
注意,當(dāng)REMOTE_LOGIN_PASSWORDFILE=none時(shí),這個(gè)參數(shù)生效需要重啟數(shù)據(jù)庫(kù),并且,一旦啟用這個(gè)參數(shù),將使用操作系統(tǒng)認(rèn)證,不使用口令文件。因此如果REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none這個(gè)時(shí)候數(shù)據(jù)庫(kù)是無(wú)法登錄的。
alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile;
(1)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= none:
oracle安裝用戶本地sqlplus “/ as sysdba”無(wú)法登錄
非oracle安裝用戶本機(jī)sqlplus “sys/change_on_install as sysdba”無(wú)法登錄
非oracle安裝用戶遠(yuǎn)程sqlplus “/ as sysdba_on_install@sid as sysdba”無(wú)法登錄
(2)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= none:
oracle安裝用戶本地sqlplus “/ as sysdba”無(wú)法登錄
非oracle安裝用戶本機(jī)sqlplus “sys/change_on_install as sysdba”能登錄
非oracle安裝用戶遠(yuǎn)程sqlplus “/ as sysdba_on_install@sid as sysdba”能登錄
(3)REMOTE_LOGIN_PASSWORDFILE=none且SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安裝用戶本地sqlplus “/ as sysdba”能登錄
非oracle安裝用戶本機(jī)sqlplus “sys/change_on_install as sysdba”無(wú)法登錄
非oracle安裝用戶遠(yuǎn)程sqlplus “/ as sysdba_on_install@sid as sysdba”無(wú)法登錄
(4)REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET.AUTHENTICATION_SERVICES= (NTS):
oracle安裝用戶本地sqlplus “/ as sysdba”能登錄
非oracle安裝用戶本機(jī)sqlplus “sys/change_on_install as sysdba”能登錄
非oracle安裝用戶遠(yuǎn)程sqlplus “/ as sysdba_on_install@sid as sysdba”能登錄
Oracle REMOTE_LOGIN_PASSWORDFILE 參數(shù)
設(shè)置初始化參數(shù) REMOTE_LOGIN_PASSWORDFILE :
在 Oracle 數(shù)據(jù)庫(kù)實(shí)例的初始化參數(shù)文件中,此參數(shù)控制著密碼文件的使用及其狀態(tài)。它可以有以下幾個(gè)選項(xiàng):
1、NONE :指示 Oracle 系統(tǒng)不使用密碼文件,特權(quán)用戶的登錄通過(guò)操作系統(tǒng)進(jìn)行身份驗(yàn)證;
2、EXCLUSIVE :指示只有一個(gè)數(shù)據(jù)庫(kù)實(shí)例可以使用此密碼文件。只有在此設(shè)置下的密碼文件可以包含有除 SYS 以外的用戶信息,即允許將系統(tǒng)權(quán)限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用戶。此設(shè)置oracle 9i中為缺省值。有朋友說(shuō)是shared,其實(shí)不然.
3、SHARED :指示可有多個(gè)數(shù)據(jù)庫(kù)實(shí)例可以使用此密碼文件。在此設(shè)置下只有 SYS 帳號(hào)能被密碼文件識(shí)別,即使文件中存有其他用戶的信息,也不允許他們以 SYSOPER /SYSDBA 的權(quán)限登錄。
---- 在 REMOTE_LOGIN_PASSWORDFILE 參數(shù)設(shè)置為 EXCLUSIVE 、 SHARED 情況下, Oracle 系統(tǒng)搜索密碼文件的次序?yàn)椋涸谙到y(tǒng)注冊(cè)庫(kù)中查找 ORA_SID_PWFILE 參數(shù)值(它為密碼文件的全路徑名);若未找到,則查找 ORA_PWFILE 參數(shù)值;若仍未找到,則使用缺省值 ORACLE_HOME/DATABASE/PWDSID.ORA ;其中的 SID 代表相應(yīng)的 Oracle 數(shù)據(jù)庫(kù)系統(tǒng)標(biāo)識(shí)符。
總結(jié)
$ORACLE_HOME/network/admin/sqlnet.ora中的AUTHENTICATION_SERVICES參數(shù):
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必須設(shè)置為NTS或者ALL才能使用OS認(rèn)證;不設(shè)置或者設(shè)置為其他任何值都不能使用OS認(rèn)證。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值設(shè)置為ALL,或者不設(shè)置的情況下,OS驗(yàn)證才能成功;設(shè)置為其他任何值都不能使用OS認(rèn)證。
spfile中的REMOTE_LOGIN_PASSWORDFILE參數(shù):
1、值為exclusive時(shí),遠(yuǎn)程能作為sysdba身份登錄
2、值為none時(shí),以sysdba身份無(wú)法登錄
"ORACLE數(shù)據(jù)字典視圖的種類分別為:USER,ALL 和 DBA.
USER_*:有關(guān)用戶所擁有的對(duì)象信息,即用戶自己創(chuàng)建的對(duì)象信息
ALL_*:有關(guān)用戶可以訪問(wèn)的對(duì)象的信息,即用戶自己創(chuàng)建的對(duì)象的信息加上
其他用戶創(chuàng)建的對(duì)象但該用戶有權(quán)訪問(wèn)的信息
DBA_*:有關(guān)整個(gè)數(shù)據(jù)庫(kù)中對(duì)象的信息
(這里的*可以為TABLES,INDEXES,OBJECTS,USERS等。)
1、查看所有用戶
select * from dba_user;
select * from all_users;
select * from user_users;
2、查看用戶系統(tǒng)權(quán)限
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3、查看用戶對(duì)象權(quán)限
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4、查看所有角色
select * from dba_roles;
5、查看用戶所擁有的角色
select * from dba_role_privs;
select * from user_role_privs;
6、查看當(dāng)前用戶的缺省表空間
select username,default_tablespace from user_users;
7、查看某個(gè)角色的具體權(quán)限
如grant connect,resource,create session,create view to TEST;
8、查看RESOURCE具有那些權(quán)限
用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE
"
1.查看所有用戶:
select * from dba_users;
select * from all_users;
select * from user_users;
2.查看用戶或角色系統(tǒng)權(quán)限(直接賦值給用戶或角色的系統(tǒng)權(quán)限):
select * from dba_sys_privs;
select * from user_sys_privs;
3.查看角色(只能查看登陸用戶擁有的角色)所包含的權(quán)限
sqlselect * from role_sys_privs;
4.查看用戶對(duì)象權(quán)限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
5.查看所有角色:
select * from dba_roles;
先登陸擁有賦權(quán)限的用戶(管理員或?qū)ο髶碛姓?,管理員賦管理權(quán)限,擁有者賦對(duì)象權(quán)限) //前提:需當(dāng)前登陸的是EMP表的擁有者 //將EMP表的選擇權(quán)限賦給用戶abc grant select on emp to abc grand all on emp to abc--賦EMP表的所有權(quán)限 //對(duì)象繼承賦予,即父?jìng)髯?,子可傳孫 //下面的語(yǔ)句可使abc擁有EMP表的權(quán)限并可以轉(zhuǎn)傳他人 //如果是對(duì)象權(quán)限 grant all on emp to abc with grant option //如果是系統(tǒng)限權(quán) grant connect to abc with admin option //權(quán)限回收(一樣是要登陸擁有者進(jìn)行操作)
sqlserver不常用,就先回答一下oracle的吧\x0d\x0a首先你的remote_login_passwordfile應(yīng)該是exclusive,這樣才能夠賦予其它用戶管理員權(quán)限sysdba和sysoper,也就是說(shuō)這個(gè)用戶首先要得到管理員的權(quán)限,才能以管理員的身份登錄,默認(rèn)的oracle中sys用戶就是具有管理員身份的唯一用戶,其它的都是后來(lái)添加的。\x0d\x0a比如現(xiàn)在有個(gè)用戶abc,首先要給它管理員的權(quán)限(賦權(quán)的這個(gè)用戶當(dāng)然要有給其它用戶賦予管理員權(quán)限的權(quán)限) grant sysdba to abc;\x0d\x0a然后用sysdba權(quán)限登錄sqlplus:sqlplus “abc/abc的口令 as sysdba"\x0d\x0a這樣abc用戶就以管理員的身份登錄oracle了