Oracle 修改SYS、system使用者密碼
by:授客 QQ:1033553122
概念
SYS使用者是Oracle中許可權最高的使用者,而SYSTEM是一個用於資料庫管理的使用者。在資料庫安裝完之後,應立即修改SYS,SYSTEM這兩個使用者的密碼,以保證資料庫的安全。
安裝完之後修改密碼方法
cmd命令列下輸入 sqlplus / as sysdba;
法1.SQL>alter user sys identified by huozhe
法2.SQL>grant connect to sys identified by 123456
法3. SQL> password system
更改 system 的口令
新口令:
重新鍵入新口令:
口令已更改
(注:法3只適用於SYSTEM)
驗證:
SQL> conn system/huozhe
已連線。
SQL> show user
USER 為 "SYSTEM"
SQL> exit
注:SYS和SYSTEM使用者之間可以相互修改口令
修改SYS使用者口令後的登入
將SYS使用者的口令修改成123456後,可按以下幾種方法登入:
法1.sqlplus / as sysdba 【以作業系統認證的方式登入,不需要使用者名稱和口令】
法2.sqlplus sys/abcde as sysdba;
法3.sqlplus sys/ as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 6 19:10:54 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
輸入口令:
注意:這裡提示輸入口令,不輸入口令直接回車
連線到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionssqlplus sys as sysdba;
上述語句,都可以登入成功,然後檢視當前使用者:
SQL> show user
USER 為 "SYS"
這是為什麼呢,為什麼修改了口令沒有效果,不用口令或者隨便用什麼口令都可以進入呢。
答案是:認證方法。
oracle的口令認證
SYS口令認證分為作業系統認證和Oracle認證方法。
作業系統認證方式
對於如果是Unix作業系統,只要是以DBA組中的使用者登入的作業系統,就可以以SYSDBA的身份登入資料庫,不會驗證SYS的口令。
對於windows作業系統,在oracle資料庫安裝後,會自動在作業系統中安裝一個名為ORA_DBA的使用者組,只要是該組中的使用者,即可以SYSDBA的身份登入資料庫而不會驗證SYS的口令。也可以建立名為ORA_SID_DBA(SID為例項名)的使用者組,屬於該使用者組的使用者也具備以上特權。
如何修改認證方式
如何修改認證方式為作業系統認證或oracle認證。(windows,unix平臺有大同小異)
要將認證方式設定為作業系統認證:
- 修改sqlnet.ora檔案
….\ product\11.2.0\ dbhome_2\ NETWORK\ADMIN\sqlnet.ora
…\product\版本號\home目錄\ NETWORK\ADMIN\sqlnet.ora
記事本開啟該檔案,修改引數為:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
WINDOWS下,預設就是這樣,即使用NT認證
- 修改init.ora檔案
….\ product\11.2.0\dbhome_2\dbs\init.ora
說明:…\product\版本號\home目錄\dbs\init.ora
記事本開啟該檔案,修改引數為:
remote_login_passwordfile='NONE'
3.重新啟動資料庫。
SQL> shutdown immediate
SQL> startup open
將認證方式設定為oracle認證(密碼檔案認證):
- 同上,修改sqlnet.ora
….\ product\11.2.0\ dbhome_2\ NETWORK\ADMIN\sqlnet.ora
記事本開啟該檔案,修改引數為:
#SQLNET.AUTHENTICATION_SERVICES= (NTS) ,#註釋掉這句話,即不使用NT認證
或者
SQLNET.AUTHENTICATION_SERVICES= (NONE)
- 同上,修改init.ora
記事本開啟該檔案,修改引數為:
remote_login_passwordfile='EXCLUSIVE'
或者
remote_login_passwordfile='SHARED'
EXCLUSIVE表示只有當前例項使用這個密碼檔案,且允許有別的使用者作為SYSDBA登入進入系統,若選擇了SHARED,則表示不止一個例項使用這個密碼檔案。
3.重新啟動資料庫。
SQL> shutdown immediate
SQL> startup open
如果發生sys密碼丟失的情況,怎麼辦?
步驟1.使用system使用者進行密碼更改
SQL> conn system/huozhe
已連線。
SQL> alter user sys identified by huozhe
說明:
1)預設情況下,只要使用者具有alter user的許可權,那麼可以修改 oracle中任意使用者,包括alter user中的所有optional
2)預設情況下,system賬戶之所以能修改sys的密碼,是因為它屬於dba角色,而dba角色當然具有alter user許可權
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS TRUE TRUE FALSE
STUDY TRUE FALSE FALSE
說明現在有sys及STUDY賬戶擁有sysdba與sysoper的許可權[STUDY預設建立的]。
步驟2.建立密碼檔案
如果存在密碼檔案(PWDsid.ora),則刪除它
路徑
….\product\11.2.0\dbhome_2\database\PWDorcl.ora
….\product\版本\home目錄\database\PWDsid.ora
然後用orapwd.exe建立密碼檔案
orapwd路徑
…\product\11.2.0\dbhome_2\BIN\orapwd.exe
說明:…\product\版本號\home目錄\BIN\orapwd.exe
--cmd下輸入 cd 命令進入到….\product\版本號\home目錄\BIN 目錄下,然後鍵入命令
orapwd file=filepath\pwd.ora password=password_of_sys entries=N
其中filepath表示密碼檔案路徑,pwd.ora為密碼檔名,sid是資料庫例項名
eg:
E:\app\Administrator\product\11.2.0\dbhome_2\dbs\PWDorcl.ora
entries表示允許最大的超級使用者數。
當沒有指定檔案路徑時,密碼檔案預設存放在…\product\版本號\dbs\目錄下。