1. 程式人生 > 其它 >Oracle 修改SYS、system使用者密碼

Oracle 修改SYS、system使用者密碼

 

by:授客 QQ1033553122

概念

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平臺有大同小異)

 

要將認證方式設定為作業系統認證:

  1. 修改sqlnet.ora檔案

….\ product\11.2.0\ dbhome_2\ NETWORK\ADMIN\sqlnet.ora

…\product\版本號\home目錄\ NETWORK\ADMIN\sqlnet.ora

記事本開啟該檔案,修改引數為:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

WINDOWS下,預設就是這樣,即使用NT認證

 

  1. 修改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認證(密碼檔案認證):

  1. 同上,修改sqlnet.ora

….\ product\11.2.0\ dbhome_2\ NETWORK\ADMIN\sqlnet.ora

記事本開啟該檔案,修改引數為:

#SQLNET.AUTHENTICATION_SERVICES= (NTS) ,#註釋掉這句話,即不使用NT認證

或者

SQLNET.AUTHENTICATION_SERVICES= (NONE)

 

  1. 同上,修改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\目錄下。