SQLServer中的身份验证及登录问题
身份验证
SQL Server支持两种身份验证模式,即Windows身份验证模式和混合模式。
- Windows身份验证是默认模式(通常称为集成安全),因为此SQL Server安全模型与Windows紧密集成。信任特定Windows用户和组帐户登录SQL Server。已经过身份验证的Windows用户不必提供附加的凭据。
- 混合模式支持由Windows和SQL Server进行身份验证。用户名和密码保留在SQL Server内。
安全说明
我们建议尽可能使用Windows身份验证。Windows身份验证使用一系列加密消息来验证SQL Server中的用户。使用SQL Server登录时,将跨网络传递SQL Server登录名和密码,这样会降低它们的安全性
使用Windows身份验证时,用户已登录到Windows,无需另外登录到SQL Server。下面的SqlConnection.ConnectionString可指定Windows身份验证,而无需用户名或密码。"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;
说明
登录名与数据库用户名不同。您必须通过单独的操作将登录或Windows组映射到数据库用户或角色。然后向用户或角色授予访问数据库对象的权限
身份验证方案
在下列情形中,Windows身份验证通常为最佳选择:
- 存在域控制器。
- 应用程序和数据库位于同一台计算机上。
- 您正在使用SQL Server Express或LocalDB的实例。
SQL Server登录常常在以下情况中使用:
- 您有工作组。
- 用户从其他不受信任的域进行连接。
- Internet应用程序(例如ASP.NET)。
说明
指定Windows身份验证不会禁用SQL Server登录。使用ALTER LOGIN DISABLE Transact-SQL语句可禁用具有高级权限的SQL Server登录
登录类型
SQL Server支持三种登录类型:
- 本地Windows用户帐户或受信任的域帐户。SQL Server依靠Windows来对Windows用户帐户进行身份验证。
- Windows组。向Windows组授予访问权限会向作为该组的成员的所有Windows用户登录授予访问权限。
- SQL Server登录。SQL Server将用户名和密码的哈希都存储在master数据库中,使用内部身份验证方法来验证登录尝试。
说明
SQL Server提供了从证书或非对称密钥创建的登录名,仅用于代码签名。这些登录名不能用于连接到SQL Server
混合模式身份验证
如果您必须使用混合模式身份验证,则必须创建SQL Server登录名,这些登录名存储在SQL Server中。然后,您必须在运行时提供SQL Server用户名和密码。
安全说明
SQL Server使用名为sa(“system administrator”的缩写)的SQL Server登录名进行安装。为sa登录分配一个强密码,并且不要在应用程序中使用sa登录。sa登录名会映射到sysadmin固定服务器角色,它对整个服务器有不能撤销的管理凭据。如果攻击者以系统管理员的身份获取了访问权限,则可能造成的危害是无法预计的。默认情况下,Windows BUILTIN\Administrators组(本地管理员组)的所有成员均为sysadmin角色的成员,但可以从该角色中移除这些成员。
SQL Server提供了在Windows Server 2003或更高版本上运行时SQL Server登录的Windows密码策略机制。密码复杂性策略通过增加可能密码的数量来阻止强力攻击。SQL Server可将Windows Server 2003中使用的相同复杂性和到期策略应用于SQL Server中使用的密码。
安全说明
连接来自用户输入的连接字符串会使您遭受连接字符串注入攻击。可使用SqlConnectionStringBuilder在运行时创建语法构成有效的连接字符串。有关更多信息,请参见连接字符串生成器
安装说明
如果在安装过程中选择混合模式身份验证,则必须为名为sa的内置SQL Server系统管理员帐户提供一个强密码并确认该密码。 sa帐户通过使用SQL Server身份验证进行连接。
如果在安装过程中选择Windows身份验证,则安装程序会为SQL Server身份验证创建sa帐户,但会禁用该帐户。
登录问题
如下,遇到18456登录错误问题(注:安装完用sa用户和密码,以sqlserver身份验证模式可以登录,就是不能以Windows身份验证登录)
解决方法:
1.开始菜单中找到配置管理工具并打开
2.如图,找到服务,右键服务,然后设置登录方式为“本账户”,账户名为计算机登录用户名,密码为计算机登录密码,重新启动服务
ok
问题:当再次切换到本地系统,重启服务,发现不能启动了,咋办?
解决方法:进入Windows控制面板,找到对应服务,右键-属性,设置登录为本地系统账户,重启服务,ok