6.4 用户
6.4.1 数据库用户
用户用于对数据库进行访问。
数据库默认的用户有:
(1) dbo
通常 sa 登录名、sysadmin 角色的成员、数据库的拥有者被映射为 dbo 用户。
(2) guest
数据库的 guest 用户默认为 public 角色。仅允许登录,但没有访问数据库的用户帐户。
在用户数据库中,默认被禁用。如果为guest帐户授予 CONNECT 权限,则可以启用。
(3) INFORMATION_SCHEMA
在用户数据库中,默认被禁用。
(4) sys
在用户数据库中,默认被禁用。
6.4.2 基于登录名的用户
最常见的用户是基于 master 数据库中登录名的用户,有以下一些具体的类型。
(1)基于 Windows 用户的登录名的用户。
(2)基于 Windows 组的登录名的用户。
(3)基于 Windows 组成员的登录名的用户。这类 Windows 主体可以没有登录名,但可以通过 Windows 组(包括嵌套的组)中的成员身份连接到数据库引擎。
(4)基于使用 SQL Server 身份验证的登录名的用户。
通过 SSMS 可以创建“Windows 用户”(必须带登录名)或者“带登录名的 SQL 用户”。
T-SQL 语法示例如下:
CREATE USER [Domain1\WindowsUser1] CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUser1 CREATE USER [Domain1\WindowsGroupManagers] CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers] CREATE USER SQLAUTHLOGIN1 CREATE USER SQLAUTHLOGIN1 FOR LOGIN SQLAUTHLOGIN1 |
CREATE USER 语句中, FOR 子句与 FROM 子句可以相互替代。以下语句具有相同的作用。
CREATE USER [Domain1\WindowsUser1] FOR LOGIN Domain1\WindowsUser1 CREATE USER [Domain1\WindowsUser1] FROM LOGIN Domain1\WindowsUser1 |
6.4.3 在数据库进行身份验证的用户
在包含数据库中,可以直接在数据库中进行身份验证,而无需登录名。包括基于无登录名的 “Windows 用户”(或 Windows 组用户)、“带密码的 SQL 用户”。
T-SQL 语法示例如下:
CREATE USER [Domain1\WindowsUser1] CREATE USER [Domain1\WindowsGroupManagers] CREATE USER DbUser1 WITH PASSWORD = ‘Password123‘ |
在创建此类用户时,不仅授予用户对当前数据库的访问权限,并且还将授予对数据库引擎的新访问权限。但是在登录到数据库引擎时必须指定连接的数据库名称,否则登录失败。例如,在 SSMS 的“连接到服务器”对话窗口,必须单击“选项”按钮,然后在“连接属性”选项卡中为“连接到数据库”指定数据库名称。