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\目錄下。