关于SQL服务器使用Windows登陆账号的技术细节,求解

shoppo0505 2018-02-13 09:19:57
SQL登陆的时候,可以通过创建使用windows登陆账号来添加登陆用户。
创建的SQL登陆的用户可以是AD中的一个具体用户,或者说是一个windows用户组。
创建完毕之后,如果账号是用户,那么SQL中新建用户的头像是单人的,如果是用户组,那么是双人头像。

问题(条件,用户A已经添加入用户组A):
1. 创建SQL账号的时候,会由于具体AD用户,或者AD用户组,头像有不同,是不是在创建的时候,会主动去AD组抓信息,然后分配不同头像?
2. 如果AD中没有该用户或者组的话,账号不能创建,这个在SQL服务器哪里配置的?
3. SQL登陆账号“用户组A”在SQL上创建完毕之后,用户A如果属于“用户组A”的话,那么可以登陆服务器,而且权限使用的是“用户组A”的权限,那是不是登陆的时候,会尝试先使用“用户组A”信息登陆?
4. 如果SQL的登陆账号,对于用户A,用户组A都已创建,那么登陆的时候,会使用SQL用户A的账号还是用户组A的账号?
...全文
478 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2018-02-13
  • 打赏
  • 举报
回复
这个应该是域控(AD)的问题,SQL Sserver使用 Windows 身份验证,意味着把相关的工作交给 AD 的 而一个电脑只能加入一个域,如果要让另一个域的帐号可以用,应该是在域上设置信任关系,也就是确保本机加入的域之外的那个域的帐号能够在本域中获得信任 如果你要自己弄的话,在网上搜罗一下 域间的信任关系 相关的信息
shoppo0505 2018-02-13
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
2. 如果AD中没有该用户或者组的话,账号不能创建,这个在SQL服务器哪里配置的? --- 不用配置,你无法在 SQL 中将不存在的 Windows 用户或组 做为 SQL 登录创建
对了,问题2的本意是: 因为目前SQL服务器上面的登陆账号来自至少2个不同的域名,我是想问,SQL服务器是不是能够配置连接到多个不同的域名,如果能配置,那在哪里配置?
zjcxc 元老 2018-02-13
  • 打赏
  • 举报
回复
引用 4 楼 shoppo0505 的回复:
[quote=引用 2 楼 zjcxc 的回复:] 组是是不能用于登陆的。
这句话是不是针对问题3的详细实例? [/quote] 3./ 4 人都疑问是组帐号还是用户帐号,所以补充一下
shoppo0505 2018-02-13
  • 打赏
  • 举报
回复
引用 2 楼 zjcxc 的回复:
组是是不能用于登陆的。
这句话是不是针对问题3的详细实例?
shoppo0505 2018-02-13
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
问题(条件,用户A已经添加入用户组A): 1. 创建SQL账号的时候,会由于具体AD用户,或者AD用户组,头像有不同,是不是在创建的时候,会主动去AD组抓信息,然后分配不同头像? ---- 肯定要去抓的,必须检查你指定的名称是否存在,并且确认是组还是用户,不抓这个信息怎么建?(不能无中生有),而且以后验证身份的时候也得走 AD 过 2. 如果AD中没有该用户或者组的话,账号不能创建,这个在SQL服务器哪里配置的? --- 不用配置,你无法在 SQL 中将不存在的 Windows 用户或组 做为 SQL 登录创建 3. SQL登陆账号“用户组A”在SQL上创建完毕之后,用户A如果属于“用户组A”的话,那么可以登陆服务器,而且权限使用的是“用户组A”的权限,那是不是登陆的时候,会尝试先使用“用户组A”信息登陆? -- 登录都是帐号登录,不存在组登录的问题,组只是一个逻辑组织,类似于角色的概念 4. 如果SQL的登陆账号,对于用户A,用户组A都已创建,那么登陆的时候,会使用SQL用户A的账号还是用户组A的账号? -- 首先,用户名与组名不能同名。其次,用户与用户组如果都在 SQL 上有权限的话,两个权限是合并的,这也是前面的概念,组是一个逻辑组织,登录始终在帐号上,然后这个幅号有什么权限,是包含了它自身的权限+所属组的权限 +所属角色的权限
非常感觉你的回复,膜拜。:)
zjcxc 元老 2018-02-13
  • 打赏
  • 举报
回复
组是是不能用于登陆的。权限上,下面用示例演示
-- 假设有账号 a, 用户组 aa, 并且账号 a 是用户组 aa 的成员
/*-- 如果是SQL Server服务器本机测试,可以用本机 Windows 账号,本机测试帐号可以参考如下方式在管理员提示符下完成
---  使用本机 Windows 帐号测试,则下面 SQL 中的 域名 修改为本机 计算机名
net localgroup aa /add
net user a '!2ab.1234' /add
net localgroup aa a /add
net user a
--*/

-- 测试表
use tempdb;
go
create table t1(id int);
create table t2(id int);
go

-- 为账号 a 授权,仅能查询 t1
create login [域名\a] from windows;
create user a for login [域名\a];
grant select on t1 to a;
go

-- 以账号 a 的身份执行查询
execute as login = '域名\a';
go
select * from t1;
select * from t2;	-- 无权限,所以这个查询报错
go
revert;
go

-- 为组 aa 授权权限 t2
create login [域名\aa] from windows;
create user aa for login [域名\aa];
grant select on t2 to aa;
go

-- 以账号 a 的身份执行查询
execute as login = '域名\a';
go
select * from t1;
select * from t2;	-- 成功查询。虽然没有为账号 a 授权查询此表,但它所属的组有权限,所以仍然能查询
go
revert;
go

-- 删除测试
drop user aa;
drop user a;
drop login [域名\aa];
drop login [域名\a];
drop table t1,t2
zjcxc 元老 2018-02-13
  • 打赏
  • 举报
回复
问题(条件,用户A已经添加入用户组A): 1. 创建SQL账号的时候,会由于具体AD用户,或者AD用户组,头像有不同,是不是在创建的时候,会主动去AD组抓信息,然后分配不同头像? ---- 肯定要去抓的,必须检查你指定的名称是否存在,并且确认是组还是用户,不抓这个信息怎么建?(不能无中生有),而且以后验证身份的时候也得走 AD 过 2. 如果AD中没有该用户或者组的话,账号不能创建,这个在SQL服务器哪里配置的? --- 不用配置,你无法在 SQL 中将不存在的 Windows 用户或组 做为 SQL 登录创建 3. SQL登陆账号“用户组A”在SQL上创建完毕之后,用户A如果属于“用户组A”的话,那么可以登陆服务器,而且权限使用的是“用户组A”的权限,那是不是登陆的时候,会尝试先使用“用户组A”信息登陆? -- 登录都是帐号登录,不存在组登录的问题,组只是一个逻辑组织,类似于角色的概念 4. 如果SQL的登陆账号,对于用户A,用户组A都已创建,那么登陆的时候,会使用SQL用户A的账号还是用户组A的账号? -- 首先,用户名与组名不能同名。其次,用户与用户组如果都在 SQL 上有权限的话,两个权限是合并的,这也是前面的概念,组是一个逻辑组织,登录始终在帐号上,然后这个幅号有什么权限,是包含了它自身的权限+所属组的权限 +所属角色的权限

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧