sa賬戶和密碼丟失如何找回


 在網上看了很多如何修改SQLServer2005的密碼的方法。大多數都是轉了同一個帖子:
  用windows權限進入,然后修改當前實例屬性中的安全項,然后重新啟動就可以修改了,但是操作手順與我的SQLServer貌似不同。大概是SP1之前可以這么做吧。
  首先用windows賬戶登錄,然后在master表里執行:

 
EXEC sp_password  NULL' 你的新密碼 '' sa '

 

 

————————————以下為網絡搜集的資料,其可用性和時效性不保證———————————————

sql server sa密碼相關

 

1、請教如何查找sqlserver的sa密碼?
=================================
查詢分析器,連接時,身份驗證使用"使用windows身份驗證"

然后,執行:
EXEC sp_password NULL, 'NewPassword', 'Sa'
------------------------------------------------------------------
企業管理器-->實例名-->安全性-->登錄-->雙擊右邊的SA-->更改密碼
--------------------------------------------------------------------
問:丟失SA密碼如何找回?
答:用戶操作失誤造成密碼丟失。有兩種方法:如果數據不多,可重裝TNSDB數據庫。如果只想找回密碼,可將安裝盤中的tnsdb.txt文件中的“insert into
tns_secu_user(c_user_name,c_user_pwd,c_user_code,i_user_type,c_expiry_date,c_user_lock,c_user_disa,c_who_crea,c_when_crea,c_who_modi,c_when_modi) values('sa','c12e01f2a13ff5587e1e9e4aedb8242d','',1,'','1','1','','','','') %”行。其中‘sa’后的‘c12e01f2a13ff5587e1e9e4aedb8242d’字串為sa的密碼。用他來替換tnsdb庫中 tns_secu_user表中的sa密碼。字段為c_user_pwd.

==================================
2、sql server2000忘記sa密碼的解決方法

以“windows身份驗證”方式登錄SQL查詢分析器,然后執行
EXEC sp_password NULL,'hello','sa'
就可以將sa的密碼改為hello了。
===================================

 3、SQL忘記sa密碼修改方法
如果你在NT下(包括2000)裝的SQL Server,則可以這樣做:
直接打開"查詢分析器"(注意不是從"企業管理器"中進入,可以從開始菜單的程序組進去,如果找不到的話,直接在"運行"中輸入"isqlw.exe"也可);
選擇"Windows身份驗證"進入,不需要輸入密碼,只要你是本機的系統管理員或者域管理員,此時自動成為SQL Server的管理員;
在查詢分析器窗口中輸入下面的語句直接更改SA密碼:
sp_password Null,\\\'ok\\\',\\\'sa\\\'
運行后sa的密碼變為"ok"

sp_password存儲過程的功能是更改SQL Server登錄的密碼;
語法格式:
sp_password [ [ @old = ] \\\'old_password\\\' , ]
{ [ @new =] \\\'new_password\\\' }
[ , [ @loginame = ] \\\'login\\\' ]
參數說明
[@old =] \\\'old_password\\\' : 舊密碼;
[@new =] \\\'new_password\\\' : 要指定的新密碼
[@loginame =] \\\'login\\\' : 要指定的用戶
返回值: 0(成功)或 1(失敗)

以上方法的關鍵原理在於,從"查詢分析器"中以"Windows身份驗證"連接SQL Server,只要你是本機的系統管理員或者域管理員,此時自動成為SQL Server的管理員.
=================================
4、如何驗證SA密碼是否為空

在命令提示符處鍵入以下命令,然后按 Enter 鍵:
osql -U sa
這樣可以通過 sa 帳戶連接到 MSDE 的本地默認實例。要連接到您的計算機上安裝的命名實例,請鍵入:
osql -U sa -S servernameinstancename
隨即將出現以下提示:
Password:
再次按 Enter 鍵。此操作將為 sa 傳遞一個 NULL(空)密碼。
如果按 Enter 鍵后出現以下提示,則您對 sa 帳戶沒有密碼:
1>
為了符合安全方案的要求,Microsoft 建議您創建非空的強密碼。
但是,如果收到以下錯誤信息,則表示您輸入的密碼不正確。此錯誤信息表示已為 sa 帳戶創建了密碼:
"Login Failed for user "sa"."
以下錯誤信息表示運行 SQL Server 的計算機設置為只限 Windows 身份驗證:
Login failed for user "sa".Reason:Not associated with a trusted SQL Server
connection.
在 Windows 身份驗證模式下無法驗證 sa 密碼。但可以創建 sa 密碼,以便 sa 帳戶在以后身份驗證模式更改為混合模式時仍然是安全的。
如果您收到以下錯誤信息,則表示 SQL Server 可能未運行,或者您可能為安裝的 SQL Server 的命名實例提供了錯誤名稱:
[Shared Memory]SQL Server does not exist or access denied.
[Shared Memory]ConnectionOpen (Connect()).
=================================
5、問:我把我自己關在SQL Server 外面了,不能作為“sysadmin”登錄。有什么辦法解決嗎?我需要重新安裝SQL Server嗎?

答:您不必重新安裝SQL Server。要想重新訪問SQL Server,您需要修改SQL Server 2000 和 SQL Server 7.0決定SQL Server身份驗證模式的注冊表鍵值。

在SQL Server 7.0中,該鍵為:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \MSSQLServer\MSSQLServer\LoginMode
在SQL Server 2000中,該鍵為:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
MicrosoftSQLServer\\MSSQLServer\LoginMode
“LoginMode”的值為0表示只進行Windows 的身份驗證,為1表示驗證模式為混合模式。在您把自己關在外面之后,您可以把“LoginMode”改為1,重新啟動SQL Server,然后以sa(system administrator)身份登錄,輸入您知道的sa密碼即可。

  以下關於SQL Server的角色成員的信息可能會幫助您理解為什么您會把自己關在SQLServer外面。在您安裝SQL Server 2000 或 7.0的時候,安裝進程自動地為“BUILTIN\Administrators”創建一個登錄帳號,該帳號為“sysadmin”角色成員。 “BUILTIN\Administrators”登錄帳號代表了Microsoft Windows® 2000 或Microsoft Windows NT® server 上的系統管理員本地組。 Windows 2000 或 Windows NT的 “Administrator”帳戶是系統管理員本地組的成員。此外,如果您的服務器是一個域的成員(包括Windows 2000 的域和Windows NT 4.0的域),“Domain Admins”全局組也會成為本地系統管理員組的成員。這意味着系統管理員本地組的所有成員都會自動地獲得SQL Server上的“sysadmin”權限。

  為了加強您的SQL Server的安全性,您可能更願意創建您自己的組並授予它“sysadmin”權限,然后刪除“BUILTIN\Administrators”登錄帳 號,或者至少從“sysadmin”服務器角色中刪除它。使用這種方法,您可以較好地對誰可以訪問您的SQL Server進行控制。這種方法也斷開了SQL Server 系統管理員和Windows 2000 或 Windows NT 管理員之間的聯系, 因為他們通常有不同的任務,並且需要不同的權限。為了加強安全性,您可能想把SQL Server配置成只支持Windows身份驗證。但是,必須要記住:這種配置會禁用您的“sa”帳戶。(這個方法可能是禁用“sa”帳戶的唯一方法,因 為您不能刪除“sa”帳戶。)如果您以錯誤的順序實施了這個安全措施,您將不能再以>“sysadmin”的身份登錄到SQL Server上,除非按照我上面所說的方法修改注冊表鍵值。正確的順序是:

  創建Windows 2000 或者 Windows NT 用戶組並為組分配成員。例如:創建一個叫做“SQLAdmins”的組。
把“SQLAdmins”映射為SQL Server里的一個用Windows身份驗證方式驗證登錄的帳戶,並把該帳戶分派到“sysadmin”服務器角色。
  刪除“BUILTIN\Administrators”登錄帳戶或者把它從“sysadmin”服務器角色中刪除。
把SQL Server的身份驗證模式改為“僅進行Windows身份驗證”。
  重新啟動SQL Server 以反映身份驗證模式的變化。
  注意: 如果您以下面的這種錯誤順序實施這些步驟:刪除“BUILTIN\Administrators”登錄帳戶,改變SQL Server 的身份驗證模式為“僅進行Windows身份驗證”,然后重新啟動SQL Server,那么“sa” 帳戶將被禁用,並且因為沒有定義其它Windows身份驗證登錄帳戶而無法進入SQL Server。為了避免這種情況發生,請以正確的順序實施這些安全措施。
========================================
7、破解SA的密碼的方法

0)停掉你現有的數據庫服務。
1)新建一個實例,就是重新安裝一次sql server,以下稱為new
2)把你舊的數據庫實例(以下稱為old)的master.mdf , master.ldf copy到一個文件夾
3) 在new中,通過attach db的方式把文件夾中的兩個文件加為new中的數據庫,當然名稱和位置在添加的時候都要改的。
4)在new 中,通過語句的方式,把master中的表sysxlogins 中sa的密碼更新到你剛添加的數據庫(old中的master)的表sysxlogins中對應的sa 的密碼字段。
5)把你剛添加的數據庫(old中的master)在new中detachdb,然后把文件覆蓋掉old中對應文件(覆蓋前把文件備份)
6)重新啟動old服務器,看是否可行
7)卸載new服務器
===============================

8、驗證和更改 MSDE 系統管理員密碼

如何更改 SA 密碼
1. 在正在連接到的 MSDE 實例的宿主計算機中,打開命令提示符窗口。
2. 鍵入下面的命令,然后按 Enter 鍵:

osql -U sa

在 Password:提示符下,按 Enter 鍵(如果密碼為空)或鍵入當前密碼。這樣可以使用 sa 帳戶連接到 MSDE 的本地默認實例。要使用 Windows 身份驗證進行連接,請鍵入此命令: use osql -E

3. 在各個單獨的行內鍵入下列命令,然后按 Enter 鍵:
    sp_password @old = null, @new = 'complexpwd',   @loginame ='sa'
    go      

注意:確保將“complexpwd”替換為新的強密碼。強密碼包括字母數字和特殊字符以及大小寫字符的組合。

您將收到以下提示信息,表示已成功更改密碼:
Password changed.  

如何確定或更改身份驗證模式
重要說明:本文包含有關修改注冊表的信息。修改注冊表之前,一定要備份注冊表,並且一定要知道在發生問題時如何還原注冊表。有關如何備份、還原和編輯注冊表的信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
256986 (http://support.microsoft.com/kb/256986/EN-US/) Microsoft Windows 注冊表說明

警告:注冊表編輯器使用不當可導致嚴重問題,可能需要重新安裝操作系統。Microsoft 不能保證您可以解決因注冊表編輯器使用不當而導致的問題。使用注冊表編輯器需要您自擔風險。


如果不能確定如何驗證 MSDE 安裝的身份驗證模式,可以查看相應的注冊表項。默認情況下,對於 Windows 身份驗證,Windows LoginMode 注冊表子項的值設置為 1。如果啟用了混合模式身份驗證,則此值為 2。

? LoginMode 子項的位置取決於您是將 MSDE 作為默認 MSDE 實例安裝還是作為命名實例安裝。如果 MSDE 是作為默認實例安裝的,則 LoginMode 子項位於以下注冊表子項中:
HKLM\Software\Microsoft\MSSqlserver\MSSqlServer\LoginMode
? 如果 MSDE 是作為命名實例安裝的,則 LoginMode 子項位於以下注冊表子項中:
HKLM\Software\Microsoft\Microsoft SQL Server\%InstanceName%\MSSQLServer\LoginMode
注意:切換身份驗證模式之前,必須設置 sa 密碼,以免暴露潛在的安全漏洞。

有關其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
274773 (http://support.microsoft.com/kb/274773/EN-US/) FIX:If You Change Windows Security to Windows/SQL Security the SA Password is Blank
要從混合模式切換到集成 (Windows) 身份驗證模式,請按以下步驟操作: 1. 要停止 MSSQLSERVER 以及所有其他相關服務(如 SQLSERVERAgent),請在“控制面板”中打開服務程序。
2. 打開注冊表編輯器。要打開注冊表編輯器,請依次單擊開始和運行,然后鍵入:“regedt32”(不包括引號)
單擊確定。
3. 找到以下兩個子項之一(取決於 MSDE 是作為默認 MSDE 實例安裝的還是作為命名實例安裝的):
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\MSSqlServer

- 或者 -

HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instance Name>\MSSQLServer\
4. 在右窗格中,雙擊 LoginMode 子項。
5. 在 DWORD 編輯器對話框中,將此子項的值設置為 1。確保選擇了 Hex 選項,然后單擊確定。
6. 重新啟動 MSSQLSERVER 和 SQLSERVERAgent 服務以使更改生效。

SQL Server 安裝的最佳安全方案
下面的每一項都會增強系統的安全性,並且它們都屬於任何 SQL Server 安裝的標准安全“最佳方案”。 ? 使用非空密碼保護 sa 登錄帳戶。有些蠕蟲程序僅當您未對 sa 登錄帳戶采取安全措施時才會發作。 有關其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
313418 (http://support.microsoft.com/kb/313418/EN-US/) PRB:使用空 (NULL) SA 密碼的非安全的 SQL Server 會給蠕蟲程序以可乘之機
因此,要確保內置 sa 帳戶具有強密碼,必須按照 SQL Server 聯機叢書的“系統管理員 (SA) 登錄”主題中的建議進行操作(即使您從未直接使用 sa 帳戶)。
? 阻塞位於 Internet 網關的端口 1433,然后分配 SQL Server 偵聽備用端口。
? 如果在 Internet 網關上必須使用端口 1433,請啟用進出過濾功能以防止誤用端口。
? 在 Microsoft Windows NT 帳戶(而非本地系統帳戶)下運行 SQLServer 服務和 SQL Server 代理。
? 啟用 Microsoft Windows NT 身份驗證,然后啟用對成功和失敗登錄的審核。然后,停止並重新啟動 MSSQLServer 服務。配置您的客戶端使用 Windows NT 身份驗證。
=============================
9、SQLServer2000 的sa密碼忘記之后的解決方法

今天,發現我維護的服務器的SQL2000 出錯了。 前一段時間把服務器的密碼告訴了另一個同事,他在上面裝了個他做的系統,也不知道被他怎么搞的一下。
現在竟然啟動企業管理器也連接不上。 原來的sa密碼也不是我設置的。 他說也沒有動過SQL2000,真的是麻煩。  

以下是我找到的解決方法,但是對於我的機器好象還不太行。

"無法連接到服務器,用戶xxx登陸失敗"  

該錯誤產生的原因是由於SQL Server使用了"僅 Windows"的身份驗證方式,
因此用戶無法使用SQL Server的登錄帳戶(如 sa )進行連接.解決方法如下所示:

1.在服務器端使用企業管理器,並且選擇"使用 Windows 身份驗證"連接上 SQL Server
2.展開"SQL Server組",鼠標右鍵點擊SQL Server服務器的名稱,選擇"屬性",再選擇"安全性"選項卡
3.在"身份驗證"下,選擇"SQL Server和 Windows ".
4.重新啟動SQL Server服務.

在以上解決方法中,如果在第 1 步中使用"使用 Windows 身份驗證"連接 SQL Server 失敗,
那就通過修改注冊表來解決此問題:

1.點擊"開始""運行",輸入regedit,回車進入注冊表編輯器
2.依次展開注冊表項,瀏覽到以下注冊表鍵:
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer]
3.在屏幕右方找到名稱"LoginMode",雙擊編輯雙字節值
4.將原值從1改為2,點擊"確定"
5.關閉注冊表編輯器
6.重新啟動SQL Server服務.

此時,用戶可以成功地使用sa在企業管理器中新建SQL Server注冊,
但是仍然無法使用Windows身份驗證模式來連接SQL Server.
這是因為在 SQL Server 中有兩個缺省的登錄帳戶:
BUILTIN/Administrators
<機器名>/Administrator 被刪除.
要恢復這兩個帳戶,可以使用以下的方法:

1.打開企業管理器,展開服務器組,然后展開服務器
2.展開"安全性",右擊"登錄",然后單擊"新建登錄"
3.在"名稱"框中,輸入 BUILTIN/Administrators
4.在"服務器角色"選項卡中,選擇"System Administrators"  
5.點擊"確定"退出
6.使用同樣方法添加 <機器名>/Administrator 登錄.

說明:

以下注冊表鍵:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/LoginMode 的值決定了SQL Server將采取何種身份驗證模式.
1.表示使用"Windows 身份驗證"模式
2.表示使用混合模式(Windows 身份驗證和 SQL Server 身份驗證).


我在處理這個問題是這樣做的:

   1. 重新注冊SQL服務器,輸入服務器名為: LOCALHOST ,這個時候系統可以重新連接到SQL數據庫

   2.打開LOCALHOST下面的安全性->登錄 ,修改sa的密碼

   3. 編輯默認的Local服務連接的屬性 ,修改為正確的sa的密碼。

這樣就可以正確的啟動了LOCAL連接了。  

    最后當然可以刪除LOCALHOST連接。

但是,有一個遺留問題,就是Windows身份驗證模式還是不成功,不知道是什么原因。 我按照上面的說明把 BuiltIn/Administrators 和 Administrator都刪除重建好象都不行。

 

 

感謝:jude_lau


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM