SQLServer 中的身份验证及登录问题

by:授客 QQ1033553122

身份验证

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

SQLServer 中的身份验证及登录问题的更多相关文章

  1. 用Retrofit发送请求中添加身份验证

    用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...

  2. 也谈Asp.net 中的身份验证

    钱李峰 的这篇博文<Asp.net中的认证与授权>已对Asp.net 中的身份验证进行了不错实践.而我这篇博文,是从初学者的角度补充了一些基础的概念,以便能有个清晰的认识. 一.配置安全身 ...

  3. [转]Reporting Services 中的身份验证类型

    本文转自:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/cc281310%28v%3dsql.100%2 ...

  4. 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权

    OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...

  5. 学学dotnet core中的身份验证和授权-1-概念

    前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...

  6. Azure Service Bus 中的身份验证方式 Shared Access Signature

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  7. nancy中的身份验证

    在nancy中,身份验证分为basic ,form ,token,stateless几种,basic和form这里不说了,其中如果是使用cookie来保存身份的, 需要注意的是:cookie有大小的限 ...

  8. Kubernentes中的身份验证

    Kubernentes中的身份验证 kubernetes 系统的各组件需要使用 TLS 证书对通信进行加密,本文档使用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certifica ...

  9. sqlserver 2012 IDE中 Windows身份验证连接服务器报错 ,Login failed for user 'xxx\Administrator'. 原因: 找不到与提供的名称匹配的登录名。

    问题描述: 本地装了两个实例,一个是SQLEXPRESS,可以正常操作.但是另一个开发常用的实例MSSQLSERVER却连Windows身份验证都报错,报的错误也是很奇葩,怎么会找不到Administ ...

随机推荐

  1. python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码

    [code] """ 大于0的元素全部转化为1 """ np_arr = np.array([[1 ,2, 3, 4]]) print(&q ...

  2. Bash控制结构

    1. if-else语句 #!/bin/bash #if ... fi 语句: if [ $a != $b ] then echo "a != b" fi #if ... else ...

  3. charles撰写工具/compose和Compose New

    撰写工具/compose和Compose New compose 是在原有的请求基础上,修改: compose New 是新出一个弹窗,自己手动一个个的去写: 可以写各种状态:– URL:– Meth ...

  4. 价值 1500 美元的 iPhone 值得买吗

    原文链接:价值 1500 美元的 iPhone 值得买吗 最新款 iPhone 的最高配型号在含税的情况下价格远超 1500 美元.价格合理吗?合理.理由如下:1,硬件已与笔记本电脑相当,价格也相当: ...

  5. 【详解】JNI (Java Native Interface) (三)

    案例三:C代码访问Java对象的实例变量   获取对象的实例变量的步骤: 1. 通过GetObjectClass()方法获得此对象的类引用 2. 通过类引用的GetFieldID()方法获得实例变量的 ...

  6. linux下tar gz bz2 tgz z等众多压缩文件的压缩与解压方法

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  7. Python web 框架之 Django 基础搭建服务

    1. 需要安装 Python 和 Django 环境,Python 环境的安装我就不在多说了 2. 安装框架 Django Django 安装,推荐先装个 pip吧,easyinstall也可以,然后 ...

  8. jQuery显示SQL存储过程自定义异常信息

    学习MVC应用开发,改变了Insus.NET以前ASP.NET的开发习惯,以前开发均是服务器端,而现在使用jQuery的Ajax在实现.想到与考虑了很多问题,也遇上很多问题,一些解决了,一些还留下,望 ...

  9. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...

  10. C# fileUpload视频上传

    要实现大文件上传必须配置webConfig例如: <system.web> <compilation debug="true" targetFramework=& ...