创建用户自定义数据库用户注意事项
如果已忽略 FOR LOGIN,则新的数据库用户将被映射到同名的SQL Server登录名。
默认架构将是服务器为此数据库用户解析对象名时将搜索的第一个架构。 除非另外指定,否则默认架构将是此数据库用户创建的对象所属的架构。
如果用户具有默认架构,则将使用默认架构。 如果用户不具有默认架构,但该用户是具有默认架构的组的成员,则将使用该组的默认架构。 如果用户不具有默认架构而且是多个组的成员,则该用户的默认架构将是具有最低principle_id的Windows组的架构和一个显式设置的默认架构。(不可能将可用的默认架构之一显式选作首选架构。)如果不能为用户确定默认架构,则将使用 dbo 架构。
DEFAULT_SCHEMA可在创建它所指向的架构前进行设置。
在创建映射到证书或非对称密钥的用户时,不能指定DEFAULT_SCHEMA。
如果用户是sysadmin固定服务器角色的成员,则忽略DEFAULT_SCHEMA的值。sysadmin固定服务器角色的所有成员都有默认架构dbo。
WITHOUT LOGIN子句可创建不映射到SQL Server登录名的用户。它可以作为guest连接到其他数据库。可以将权限分配给这一没有登录名的用户,当安全上下文更改为没有登录名的用户时,原始用户将收到无登录名用户的权限。
只有映射到Windows主体的用户才能包含反斜杠字符 ()。
不能使用CREATE USER创建guest用户,因为每个数据库中均已存在guest用户。可通过授予guest用户CONNECT权限来启用该用户,如下所示:
可以在 sys.database_principals 目录视图中查看有关数据库用户的信息。
使用SSMS数据库管理工具创建用户自定义数据库用户
1、连接服务器-》在对象资源管理器窗口选择数据库-》展开数据库-》展开安全性-》展开用户-》右键点击用户-》选择新建。
2、在数据库用户-新建弹出框-》点击常规-》选择用户类型-》输入用户名-》选择登录名-》选择用户所属架构。
3、在数据库用户-新建弹出框-》选择用户所拥有的架构。
4、在数据库用户-新建弹出框-》点击成员身份-》选择数据库成员身份。
5、在数据库用户-新建弹出框-》点击搜索选择一个安全对象-》选择安全对象以后选择安全对象所拥有的权限。
6、在数据库用户-新建弹出框-》选择扩展属性-》输入注释名称-》输入注释值-》点击确定。
7、不需要刷新即可在对象资源管理器查看创建结果。
使用T-SQL脚本创建用户自定义数据库用户
语法
----创建用户自定义数据库用户
----声明数据库引用
--use database_name;
--go
----windows用户
--create user user_name for login login_name with default_schema=architecture_name,allow_encrypted_value_modifications={ on | off };
----不带登录名的SQL用户
--create user user_name without login with default_schema=architecrure_name,allow_encrypted_value_modifications={ on | off };
----带登录名的SQL用户
--create user user_name for login login_name with default_schema=architecture_name,allow_encrypted_value_modifications={ on | off };
----映射到非对称密钥的用户
--create user user_name for asymmetric key asym_key_name;
----映射到证书的用户
--create user user_name for certificate certificate_name;
--拥有的架构
--use database_name;
--go
--alter authorization on schema::[db_accessadmin] to user_name;
--go
--alter authorization on schema::[db_backupoperator] to user_name;
--go
--alter authorization on schema::[db_datareader] to user_name;
--go
--alter authorization on schema::[db_datawriter] to user_name;
--go
--alter authorization on schema::[db_ddladmin] to user_name;
--go
--alter authorization on schema::[db_denydatareader] to user_name;
--go
--alter authorization on schema::[db_denydatawriter] to user_name;
--go
--alter authorization on schema::[db_owner] to user_name;
--go
--alter authorization on schema::[db_securityadmin] to user_name;
--go
--alter authorization on schema::[guest] to user_name;
--go
--成员身份
--use database_name;
--go
--alter role [db_accessadmin] add member user_name;
--go
--alter role [db_backupoperator] add member user_name;
--go
--alter role [db_datareader] add member user_name;
--go
--alter role [db_datawriter] add member user_name;
--go
--alter role [db_ddladmin] add member user_name;
--go
--alter role [db_denydatareader] add member user_name;
--go
--alter role [db_denydatawriter] add member user_name;
--go
--alter role [db_owner] add member user_name;
--go
--alter role [db_securityadmin] add member user_name;
--go
----安全对象
----use database_name;
----go
----授予权限
----备份日志
--grant backup log t