本文分步讨论了可用于更改 SQL Server
sa(系统管理员)密码的步骤。
可以将 Microsoft SQL Server Desktop Engine (MSDE) 2000 版本或更早版本配置为在混合身份验证模式下运行。
sa 帐户在安装过程中创建,并且
sa 具有在 SQL Server 环境中的完全权限。默认情况下,
sa 密码为空 (NULL),除非您在运行 MSDE 安装程序时更改了该密码。为符合安全最佳方案的要求,必须在第一次使用时将
sa 密码更改为强密码。
如何验证 SA 密码是否为空
| 1. |
在正在连接到的 MSDE 实例的宿主计算机中,打开命令提示符窗口。 |
| 2. |
在命令提示符处键入以下命令,然后按 Enter 键:
osql -U sa
这样可以通过 sa 帐户连接到 MSDE 的本地默认实例。要连接到您的计算机上安装的命名实例,请键入:
osql -U sa -S servername\instancename
随即将出现以下提示:
Password: |
| 3. |
再次按 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()). |
如何更改 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 知识库中相应的文章:
警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。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 知识库中相应的文章:
要从混合模式切换到集成 (Windows) 身份验证模式,请按以下步骤操作:
| 1. |
要停止 MSSQLSERVER 以及所有其他相关服务(如 SQLSERVERAgent),请在“控制面板”中打开服务程序。 |
| 2. |
打开注册表编辑器。要打开注册表编辑器,请依次单击开始和运行,然后键入:“regedt32”(不包括引号)
单击确定。
|
| 3. |
找到以下两个子项之一(取决于 MSDE 是作为默认 MSDE 实例安装的还是作为命名实例安装的):
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\MSSqlServer
- 或者 -
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\\MSSQLServer\ |
| 4. |
在右窗格中,双击 LoginMode 子项。 |
| 5. |
在 DWORD 编辑器对话框中,将此子项的值设置为 1。确保选择了 Hex 选项,然后单击确定。 |
| 6. |
重新启动 MSSQLSERVER 和 SQLSERVERAgent 服务以使更改生效。 |
SQL Server 安装的最佳安全方案
下面的每一项都会增强系统的安全性,并且它们都属于任何 SQL Server 安装的标准安全“最佳方案”。
| • |
使用非空密码保护 sa 登录帐户。有些蠕虫程序仅当您未对 sa 登录帐户采取安全措施时才会发作。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
因此,要确保内置 sa 帐户具有强密码,必须按照 SQL Server 联机丛书的“系统管理员 (SA) 登录”主题中的建议进行操作(即使您从未直接使用 sa 帐户)。 |
| • |
阻塞位于 Internet 网关的端口 1433,然后分配 SQL Server 侦听备用端口。 |
| • |
如果在 Internet 网关上必须使用端口 1433,请启用进出过滤功能以防止误用端口。 |
| • |
在 Microsoft Windows NT 帐户(而非本地系统帐户)下运行 SQLServer 服务和 SQL Server 代理。 |
| • |
启用 Microsoft Windows NT 身份验证,然后启用对成功和失败登录的审核。然后,停止并重新启动 MSSQLServer 服务。配置您的客户端使用 Windows NT 身份验证。 |