SQL Server的sa密码丢失解决方法.docx
- 文档编号:30595169
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:12
- 大小:21.96KB
SQL Server的sa密码丢失解决方法.docx
《SQL Server的sa密码丢失解决方法.docx》由会员分享,可在线阅读,更多相关《SQL Server的sa密码丢失解决方法.docx(12页珍藏版)》请在冰豆网上搜索。
SQLServer的sa密码丢失解决方法
在网上看了很多如何修改SQLServer2005的密码的方法。
大多数都是转了同一个帖子:
用windows权限进入,然后修改当前实例属性中的安全项,然后重新启动就可以修改了,但是操作手顺与我的SQLServer貌似不同。
大概是SP1之前可以这么做吧。
首先用windows账户登录,然后在master表里执行:
EXECsp_passwordNULL,'你的新密码','sa'
————————————以下为网络搜集的资料,其可用性和时效性不保证———————————————
sqlserversa密码相关
1、请教如何查找sqlserver的sa密码?
=================================
查询分析器,连接时,身份验证使用"使用windows身份验证"
然后,执行:
EXECsp_passwordNULL,'NewPassword','Sa'
------------------------------------------------------------------
企业管理器-->实例名-->安全性-->登录-->双击右边的SA-->更改密码
--------------------------------------------------------------------
问:
丢失SA密码如何找回?
答:
用户操作失误造成密码丢失。
有两种方法:
如果数据不多,可重装TNSDB数据库。
如果只想找回密码,可将安装盘中的tnsdb.txt文件中的“insertinto
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、sqlserver2000忘记sa密码的解决方法
以“windows身份验证”方式登录SQL查询分析器,然后执行
EXECsp_passwordNULL,'hello','sa'
就可以将sa的密码改为hello了。
===================================
3、SQL忘记sa密码修改方法
如果你在NT下(包括2000)装的SQLServer,则可以这样做:
直接打开"查询分析器"(注意不是从"企业管理器"中进入,可以从开始菜单的程序组进去,如果找不到的话,直接在"运行"中输入"isqlw.exe"也可);
选择"Windows身份验证"进入,不需要输入密码,只要你是本机的系统管理员或者域管理员,此时自动成为SQLServer的管理员;
在查询分析器窗口中输入下面的语句直接更改SA密码:
sp_passwordNull,\\\'ok\\\',\\\'sa\\\'
运行后sa的密码变为"ok"
sp_password存储过程的功能是更改SQLServer登录的密码;
语法格式:
sp_password[[@old=]\\\'old_password\\\',]
{[@new=]\\\'new_password\\\'}
[,[@loginame=]\\\'login\\\']
参数说明
[@old=]\\\'old_password\\\':
旧密码;
[@new=]\\\'new_password\\\':
要指定的新密码
[@loginame=]\\\'login\\\':
要指定的用户
返回值:
0(成功)或1(失败)
以上方法的关键原理在于,从"查询分析器"中以"Windows身份验证"连接SQLServer,只要你是本机的系统管理员或者域管理员,此时自动成为SQLServer的管理员.
=================================
4、如何验证SA密码是否为空
在命令提示符处键入以下命令,然后按Enter键:
osql-Usa
这样可以通过sa帐户连接到MSDE的本地默认实例。
要连接到您的计算机上安装的命名实例,请键入:
osql-Usa-Sservernameinstancename
随即将出现以下提示:
Password:
再次按Enter键。
此操作将为sa传递一个NULL(空)密码。
如果按Enter键后出现以下提示,则您对sa帐户没有密码:
1>
为了符合安全方案的要求,Microsoft建议您创建非空的强密码。
但是,如果收到以下错误信息,则表示您输入的密码不正确。
此错误信息表示已为sa帐户创建了密码:
"LoginFailedforuser"sa"."
以下错误信息表示运行SQLServer的计算机设置为只限Windows身份验证:
Loginfailedforuser"sa".Reason:
NotassociatedwithatrustedSQLServer
connection.
在Windows身份验证模式下无法验证sa密码。
但可以创建sa密码,以便sa帐户在以后身份验证模式更改为混合模式时仍然是安全的。
如果您收到以下错误信息,则表示SQLServer可能未运行,或者您可能为安装的SQLServer的命名实例提供了错误名称:
[SharedMemory]SQLServerdoesnotexistoraccessdenied.
[SharedMemory]ConnectionOpen(Connect()).
=================================
5、问:
我把我自己关在SQLServer外面了,不能作为“sysadmin”登录。
有什么办法解决吗?
我需要重新安装SQLServer吗?
答:
您不必重新安装SQLServer。
要想重新访问SQLServer,您需要修改SQLServer2000和SQLServer7.0决定SQLServer身份验证模式的注册表键值。
在SQLServer7.0中,该键为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
在SQLServer2000中,该键为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
MicrosoftSQLServer\\MSSQLServer\LoginMode
“LoginMode”的值为0表示只进行Windows的身份验证,为1表示验证模式为混合模式。
在您把自己关在外面之后,您可以把“LoginMode”改为1,重新启动SQLServer,然后以sa(systemadministrator)身份登录,输入您知道的sa密码即可。
以下关于SQLServer的角色成员的信息可能会帮助您理解为什么您会把自己关在SQLServer外面。
在您安装SQLServer2000或7.0的时候,安装进程自动地为“BUILTIN\Administrators”创建一个登录帐号,该帐号为“sysadmin”角色成员。
“BUILTIN\Administrators”登录帐号代表了MicrosoftWindows®2000或MicrosoftWindowsNT®server上的系统管理员本地组。
Windows2000或WindowsNT的“Administrator”帐户是系统管理员本地组的成员。
此外,如果您的服务器是一个域的成员(包括Windows2000的域和WindowsNT4.0的域),“DomainAdmins”全局组也会成为本地系统管理员组的成员。
这意味着系统管理员本地组的所有成员都会自动地获得SQLServer上的“sysadmin”权限。
为了加强您的SQLServer的安全性,您可能更愿意创建您自己的组并授予它“sysadmin”权限,然后删除“BUILTIN\Administrators”登录帐号,或者至少从“sysadmin”服务器角色中删除它。
使用这种方法,您可以较好地对谁可以访问您的SQLServer进行控制。
这种方法也断开了SQLServer系统管理员和Windows2000或WindowsNT管理员之间的联系,因为他们通常有不同的任务,并且需要不同的权限。
为了加强安全性,您可能想把SQLServer配置成只支持Windows身份验证。
但是,必须要记住:
这种配置会禁用您的“sa”帐户。
(这个方法可能是禁用“sa”帐户的唯一方法,因为您不能删除“sa”帐户。
)如果您以错误的顺序实施了这个安全措施,您将不能再以>“sysadmin”的身份登录到SQLServer上,除非按照我上面所说的方法修改注册表键值。
正确的顺序是:
创建Windows2000或者WindowsNT用户组并为组分配成员。
例如:
创建一个叫做“SQLAdmins”的组。
把“SQLAdmins”映射为SQLServer里的一个用Windows身份验证方式验证登录的帐户,并把该帐户分派到“sysadmin”服务器角色。
删除“BUILTIN\Administrators”登录帐户或者把它从“sysadmin”服务器角色中删除。
把SQLServer的身份验证模式改为“仅进行Windows身份验证”。
重新启动SQLServer以反映身份验证模式的变化。
注意:
如果您以下面的这种错误顺序实施这些步骤:
删除“BUILTIN\Administrators”登录帐户,改变SQLServer的身份验证模式为“仅进行Windows身份验证”,然后重新启动SQLServer,那么“sa”帐户将被禁用,并且因为没有定义其它Windows身份验证登录帐户而无法进入SQLServer。
为了避免这种情况发生,请以正确的顺序实施这些安全措施。
========================================
7、破解SA的密码的方法
0)停掉你现有的数据库服务。
1)新建一个实例,就是重新安装一次sqlserver,以下称为new
2)把你旧的数据库实例(以下称为old)的master.mdf,master.ldfcopy到一个文件夹
3)在new中,通过attachdb的方式把文件夹中的两个文件加为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-Usa
在Password:
提示符下,按Enter键(如果密码为空)或键入当前密码。
这样可以使用sa帐户连接到MSDE的本地默认实例。
要使用Windows身份验证进行连接,请键入此命令:
useosql-E
3.在各个单独的行内键入下列命令,然后按Enter键:
sp_password@old=null,@new='complexpwd',@loginame='sa'
go
注意:
确保将“complexpwd”替换为新的强密码。
强密码包括字母数字和特殊字符以及大小写字符的组合。
您将收到以下提示信息,表示已成功更改密码:
Passwordchanged.
如何确定或更改身份验证模式
重要说明:
本文包含有关修改注册表的信息。
修改注册表之前,一定要备份注册表,并且一定要知道在发生问题时如何还原注册表。
有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
256986(MicrosoftWindows注册表说明
警告:
注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。
Microsoft不能保证您可以解决因注册表编辑器使用不当而导致的问题。
使用注册表编辑器需要您自担风险。
如果不能确定如何验证MSDE安装的身份验证模式,可以查看相应的注册表项。
默认情况下,对于Windows身份验证,WindowsLoginMode注册表子项的值设置为1。
如果启用了混合模式身份验证,则此值为2。
?
LoginMode子项的位置取决于您是将MSDE作为默认MSDE实例安装还是作为命名实例安装。
如果MSDE是作为默认实例安装的,则LoginMode子项位于以下注册表子项中:
HKLM\Software\Microsoft\MSSqlserver\MSSqlServer\LoginMode
?
如果MSDE是作为命名实例安装的,则LoginMode子项位于以下注册表子项中:
HKLM\Software\Microsoft\MicrosoftSQLServer\%InstanceName%\MSSQLServer\LoginMode
注意:
切换身份验证模式之前,必须设置sa密码,以免暴露潜在的安全漏洞。
有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
274773(FIX:
IfYouChangeWindowsSecuritytoWindows/SQLSecuritytheSAPasswordisBlank
要从混合模式切换到集成(Windows)身份验证模式,请按以下步骤操作:
1.要停止MSSQLSERVER以及所有其他相关服务(如SQLSERVERAgent),请在“控制面板”中打开服务程序。
2.打开注册表编辑器。
要打开注册表编辑器,请依次单击开始和运行,然后键入:
“regedt32”(不包括引号)
单击确定。
3.找到以下两个子项之一(取决于MSDE是作为默认MSDE实例安装的还是作为命名实例安装的):
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\MSSqlServer
-或者-
HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSQLServer\
4.在右窗格中,双击LoginMode子项。
5.在DWORD编辑器对话框中,将此子项的值设置为1。
确保选择了Hex选项,然后单击确定。
6.重新启动MSSQLSERVER和SQLSERVERAgent服务以使更改生效。
SQLServer安装的最佳安全方案
下面的每一项都会增强系统的安全性,并且它们都属于任何SQLServer安装的标准安全“最佳方案”。
?
使用非空密码保护sa登录帐户。
有些蠕虫程序仅当您未对sa登录帐户采取安全措施时才会发作。
有关其他信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
313418(PRB:
使用空(NULL)SA密码的非安全的SQLServer会给蠕虫程序以可乘之机
因此,要确保内置sa帐户具有强密码,必须按照SQLServer联机丛书的“系统管理员(SA)登录”主题中的建议进行操作(即使您从未直接使用sa帐户)。
?
阻塞位于Internet网关的端口1433,然后分配SQLServer侦听备用端口。
?
如果在Internet网关上必须使用端口1433,请启用进出过滤功能以防止误用端口。
?
在MicrosoftWindowsNT帐户(而非本地系统帐户)下运行SQLServer服务和SQLServer代理。
?
启用MicrosoftWindowsNT身份验证,然后启用对成功和失败登录的审核。
然后,停止并重新启动MSSQLServer服务。
配置您的客户端使用WindowsNT身份验证。
=============================
9、SQLServer2000的sa密码忘记之后的解决方法
今天,发现我维护的服务器的SQL2000出错了。
前一段时间把服务器的密码告诉了另一个同事,他在上面装了个他做的系统,也不知道被他怎么搞的一下。
现在竟然启动企业管理器也连接不上。
原来的sa密码也不是我设置的。
他说也没有动过SQL2000,真的是麻烦。
以下是我找到的解决方法,但是对于我的机器好象还不太行。
"无法连接到服务器,用户xxx登陆失败"
该错误产生的原因是由于SQLServer使用了"仅Windows"的身份验证方式,
因此用户无法使用SQLServer的登录帐户(如sa)进行连接.解决方法如下所示:
1.在服务器端使用企业管理器,并且选择"使用Windows身份验证"连接上SQLServer
2.展开"SQLServer组",鼠标右键点击SQLServer服务器的名称,选择"属性",再选择"安全性"选项卡
3.在"身份验证"下,选择"SQLServer和Windows".
4.重新启动SQLServer服务.
在以上解决方法中,如果在第1步中使用"使用Windows身份验证"连接SQLServer失败,
那就通过修改注册表来解决此问题:
1.点击"开始""运行",输入regedit,回车进入注册表编辑器
2.依次展开注册表项,浏览到以下注册表键:
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer]
3.在屏幕右方找到名称"LoginMode",双击编辑双字节值
4.将原值从1改为2,点击"确定"
5.关闭注册表编辑器
6.重新启动SQLServer服务.
此时,用户可以成功地使用sa在企业管理器中新建SQLServer注册,
但是仍然无法使用Windows身份验证模式来连接SQLServer.
这是因为在SQLServer中有两个缺省的登录帐户:
BUILTIN/Administrators
<机器名>/Administrator被删除.
要恢复这两个帐户,可以使用以下的方法:
1.打开企业管理器,展开服务器组,然后展开服务器
2.展开"安全性",右击"登录",然后单击"新建登录"
3.在"名称"框中,输入BUILTIN/Administrators
4.在"服务器角色"选项卡中,选择"SystemAdministrators"
5.点击"确定"退出
6.使用同样方法添加<机器名>/Administrator登录.
说明:
以下注册表键:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/LoginMode的值决定了SQLServer将采取何种身份验证模式.
1.表示使用"Windows身份验证"模式
2.表示使用混合模式(Windows身份验证和SQLServer身份验证).
我在处理这个问题是这样做的:
1.重新注册SQL服务器,输入服务器名为:
LOCALHOST,这个时候系统可以重新连接到SQL数据库
2.打开LOCALHOST下面的安全性->登录,修改sa的密码
3.编辑默认的Local服务连接的属性,修改为正确的sa的密码。
这样就可以正确的启动了LOCAL连接了。
最后当然可以删除LOCALHOST连接。
但是,有一个遗留问题,就是Windows身份验证模式还是不成功,不知道是什么原因。
我按照上面的说明把BuiltIn/Administrators和Administrator都删除重建好象都不行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL Server的sa密码丢失解决方法 Server sa 密码 丢失 解决方法
![提示](https://static.bdocx.com/images/bang_tan.gif)