zoukankan      html  css  js  c++  java
  • SQL中的sa密码相关 shiney

    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都删除重建好象都不行。

    做一个优秀的女子,不要停滞不前~
  • 相关阅读:
    Code Forces Gym 100886J Sockets(二分)
    CSU 1092 Barricade
    CodeChef Mahesh and his lost array
    CodeChef Gcd Queries
    CodeChef GCD2
    CodeChef Sereja and LCM(矩阵快速幂)
    CodeChef Sereja and GCD
    CodeChef Little Elephant and Balance
    CodeChef Count Substrings
    hdu 4001 To Miss Our Children Time( sort + DP )
  • 原文地址:https://www.cnblogs.com/njshiney/p/3135627.html
Copyright © 2011-2022 走看看