ORACLE 使用者許可權(1)-資料庫安全認證模式
ORACLE 使用者許可權(1)-資料庫安全認證模式
(1)OS認證
OS認證簡介
oracle中,可以將新建立使用者或者把原來的使用者加入到oinstall組或dba等組中,然後使用這個使用者在安裝了資料庫的本地機器登陸或者使用安全的遠端連線登陸,可以作為sysdba登入,在資料庫級則不需要提供密碼。
比如,我們使用sqlplus登陸資料庫:
sqlplus / as sysdba
不需要密碼,這裡linux安裝了oracle之後,預設自帶OS認證,檢視當前使用者屬組:
當前使用者,在oinstall和dba屬組中,所以可以通過OS認證,不需要口令直接登陸,但是當我們連線hr使用者時,則會提示輸入密碼:
修改OS認證配置檔案-sqlnet.ora
配置檔案位於$ORACLE_HOME/network/admin目錄下,(沒有新建一個),LINUX下預設是支援OS認證和口令(密碼)認證的所以不需要修改sqlnet.ora,如果是WINDOWS NT系統,則需要新增以下配置:
SQLNET.AUTHENTICATION_SERVICES=(NTS)
關閉OS認證
- 把作業系統使用者的dba組oinstall組取消
- 修改sqlnet.ora檔案
SQLNET.AUTHENTICATION_SERVICES = (NONE)
待修改配置檔案後,發現OS認證已關閉,需要驗證口令才能登陸。
(2)口令認證
Oracle的口令檔案的作用是存放所有以sysdba或者sysoper許可權連線資料庫的使用者的口令,如果想以sysdba許可權遠端連線資料庫,必須使用口令檔案。
oracle口令檔案存放目錄:
修改口令檔案
orapwd file=$ORACLE_HOME/dbs/orapw$ORACL_SID password=密碼 force=y
此時可能會出現錯誤,因為ORACLE12.2以後增強了密碼強度的要求,但是如果您依舊想使用短密碼的話可以寫成:
orapwd file=$ORACLE_HOME/dbs/orapworcl password=密碼 force=y format=12 //format=12使用12.2之前的密碼驗證模式
修改密碼
-
通過修改口令檔案
-
改回到os認證模式,進入到sys使用者下,使用如下命令修改密碼
如果修改失敗,可能是REMOTE_LOGIN_PASSWORDFILE引數的原因,通過命令檢視該引數值:
show parameter REMOTE_LOGIN_PASSWORDFILE
REMOTE_LOGIN_PASSWORDFILE引數詳解
REMOTE_LOGIN_PASSWORDFILE引數可以有三種取值:EXCLUSIVE(預設)、NONE和SHARED。
-
EXCLUSIVE
- 允許客戶端以SYSDBA或SYSOPER許可權登入到資料庫例項中完成資料庫管理操作;
- 允許授予和回收SYSDBA或SYSOPER許可權。
-
NONE
-
禁止客戶端以SYSDBA或SYSOPER許可權登入到資料庫例項中完成資料庫管理操作;
-
禁止授予和回收SYSDBA或SYSOPER許可權。
-
-
SHARED
- 允許客戶端以SYSDBA或SYSOPER許可權登入到資料庫例項中完成資料庫管理操作;
- 禁止授予和回收SYSDBA或SYSOPER許可權。
修改密碼也算許可權範圍內。所以如果通過使用者修改密碼,失敗請不要慌,檢視該引數值。
REMOTE_LOGIN_PASSWORDFILE引數修改
示例: alter system set remote_login_passwordfile=exclusive scope=spfile;
修改完後,請重啟資料庫:
shutdown immediate
startup
再次檢視引數值!然後修改密碼,成功!