020_登录名_用户_角色_架构
--【登录名】****************************************************************************
通过mssm新建登录名时(假设为test_login),可以设置【常规】,【服务器角色】,【用户映射】,【安全对象】等想干属性。
【常规】
其中有一项为“默认数据库”,但是只是在这里选择了某个数据库(如果为master或者msdb),而不在【用户映射】中映射master或者msdb数据库,并不会在TEST数据库中创建test_login用户。
在不映射数据库的情况下,默认数据库设为master或者msdb之外的数据库,那么使用这个登录名登录数据库时,会报错。
【服务器角色】
服务器角色的选择默认为public,且不能取消public服务器角色,同时可以多选其他的服务器角色。
选取服务器角色,表示这个登录名具有服务器级别的相关操作权限。
【用户映射】
可以在【用户映射】选项卡中选择相关数据库,同时给不同的数据库附加数据库角色,会给数据库附加默认的public数据库角色,且不能删除,同时可以附加其他的数据库角色。也就是给不同的数据库附加相应的数据库级别的权限。
被附加的数据库的用户中,会添加与登录名同名的用户。
【安全对象】
--【服务器角色】****************************************************************************
服务器角色共有9个,不能增加,不能删除。
每个 SQL Server 登录名都属于 public 服务器角色。如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。
public 角色拥有 VIEW ANY DATABASE 权限。
securityadmin 固定服务器角色的成员可以授予服务器级权限和数据库级权限。
--【用户】****************************************************************************
数据库用户对应于服务器登录名以便登录者可以操作数据库
数据库角色可以添加,可以定制不同权限
数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象
登录名与用户在服务器级是一对多的,而在数据库里是一对一的。比如说Server这个服务器有4个数据库,DB1,DB2,DB3,DB4,每个数据库都有一个用户USER1,USER2,USER3,USER,在创建一个登录名my的时候可以通过用户映射的操作,为这个登录名在每一个具体的数据库中指定用户,比如可以如下指定my在DB1中的用户是USER1,它是在使用数据库的时候是唯一的,my在不能再DB1中切换用户,除非重新指定它对DB1数据库的用户映射。
用户一般是受权限管理的,在新建一个用户的时候是这样的:
需要指定它的登录名,这也是映射操作的一部分,同时可以指定它的默认架构,如不指定就是dbo,也可以指定它拥有的其它架构和角色成员,不过没有默认数据库角色。
下面看看新建一个角色:
在新建的时候可以指定这个角色拥有那些架构,但是这些结构必须是这个数据库里面的,默认架构为当前用户使用的架构,比如当前用户的架构是dbo,则在角上权限定义时所使用的默认架构就是dbo,当然也可以指定其它的架构。
--【角色】****************************************************************************
SQL Server 中有两种类型的数据库级角色:数据库中预定义的“固定数据库角色”和您可以创建的“灵活数据库角色”。
固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份。但是,只有 db_owner 数据库角色的成员能够向 db_owner 固定数据库角色中添加成员。msdb 数据库中还有一些特殊用途的固定数据库角色。
您可以向数据库级角色中添加任何数据库帐户和其他 SQL Server 角色。固定数据库角色的每个成员都可向同一个角色添加其他登录名。
注:
每个数据库用户都属于 public 数据库角色。如果未向某个用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的 public 角色的权限。
--【架构】****************************************************************************
--创建架构,什么都不涉及
CREATE SCHEMA test_schema
--创建架构,创建隶属于test_server用户的test_schema架构
CREATE SCHEMA test_schema AUTHORIZATION test_server;
--将aaa表隶属的架构由dbo改为test_schema
ALTER SCHEMA test_schema TRANSFER dbo.aaa;