15.1 SQL Server创建LOGIN(登录)
SQL Server创建LOGIN(登录)
简介
可能有人分不清LOGIN和USER,这儿有一段网上的解释:
LOGIN是登录到服务器用的,用户是执行数据库运用的主体,是两个不同的概念,LOGIN是是针对服务器的,不能使用数据库的功能,USER是在某个数据库内起作用,一个LOGIN可以在多个数据库内映射(不太好形容)USER,即一个LOGIN即可以在A数据库内干活,也可以在B数据库内干活,也就是说每个数据库用户必须对应一个LOGIN,但一个LOGIN可以对应多个数据库的USER。
在创建访问SQL Server中数据库的用户之前,需要执行以下步骤:
- 首先,为SQL Server创建LOGIN。
- 其次,创建一个用户并将该用户映射到LOGIN。
创建LOGIN语法如下:
| CREATE LOGIN login_name --指定LOGIN名 | |
| WITH PASSWORD = password;--指定密码 |
密码区分大小写。它需要介于8到128个字符之间,可以包括a-z、a-z、0-9和大多数非字母数字字符。
注意,密码不能包含
login_name或单引号。
在内部,SQL Server使用SHA-512存储密码哈希。迁移数据库时,可以在新数据库中重用旧数据库中LOGIN的哈希密码。
要使用已哈希的密码创建LOGIN,请使用HASHED关键字指定哈希密码,如下所示:
| CREATE LOGIN login_name | |
| WITH PASSWORD = hashed_password HASHED; |
出于安全原因,应该仅将已哈希的密码用于数据库迁移。
示例
以下语句创建一个名为bob的新LOGIN,密码为Ebe2di68.:
| CREATE LOGIN bob | |
| WITH PASSWORD='Ebe2di68.'; |
LOGINbob可以登录到SQL Server并查看数据库名称,但不能访问任何数据库。
要查看SQL Server实例的所有LOGIN,请使用以下查询:
| SELECT | |
| sp.name AS login, | |
| sp.type_desc AS login_type, | |
| CASE | |
| WHEN sp.is_disabled = 1 THEN 'Disabled' | |
| ELSE 'Enabled' | |
| END AS status, | |
| sl.password_hash, | |
| sp.create_date, | |
| sp.modify_date | |
| FROM sys.server_principals sp | |
| LEFT JOIN sys.sql_logins sl | |
| ON sp.principal_id = sl.principal_id | |
| WHERE sp.type NOT IN ('G', 'R') | |
| ORDER BY create_date DESC; |

SQL Server CREATE LOGIN语句更多选项
CHECK_POLICY选项
CHECK_POLICY选项允许指定运行SQL server的服务器的Windows密码策略应应用于登录。CHECK_POLICY可以为ON或OFF。其默认值为ON。
下面显示了带有CHECK_POLICY选项的CREATE LOGIN语句:
| CREATE LOGIN login_name | |
| WITH PASSWORD = password, | |
| CHECK_POLICY = {ON | OFF}; |
注意,CHECK_POLICY选项仅适用于SQL Server创建LOGIN。
CHECK_EXPIRATION选项
CHECK_EXPIRATION选项确定是否应在此LOGIN上强制执行密码过期策略。CHECK_EXPIRATION可以为ON或OFF。默认值为OFF。
下面是了带有CHECK_EXPIRATION选项的CREATE LOGIN语句:
| CREATE LOGIN login_name | |
| WITH PASSWORD = password, | |
| CHECK_EXPIRATION = {ON | OFF}; |
注意,CHECK_EXPIRATION选项仅适用于SQL Server创建LOGIN。
MUST_CHANGE选项
要在用户首次登录时提示他们输入新密码,则使用MUST_CHANGE选项。使用MUST_CHANGE选项时,CHECK_POLICY和CHECK_EXPIRATION必须为ON。否则,语句将失败。
| CREATE LOGIN login_name | |
| WITH PASSWORD = password MUST_CHANGE, | |
| CHECK_POLICY=ON, | |
| CHECK_EXPIRATION=ON; |
比如:
| CREATE LOGIN alice | |
| WITH PASSWORD = 'UcxSj12.' MUST_CHANGE, | |
| CHECK_POLICY=ON, | |
| CHECK_EXPRIATION=ON; |
在本例中,SQL Server将在用户首次登录时提示使用aliceLOGIN的用户输入新密码。
注意,MUST_CHANGE选项仅适用于SQL Server创建LOGIN。
从Windows域帐户创建LOGIN
语法:
| CREATE LOGIN domain_name\login_name | |
| FROM WINDOWS; |
以下示例从sqlservertutorial\peter windows域帐户创建LOGIN:
| CREATE LOGIN sqlservertutorial\peter | |
| FROM WINDOWS; |
注意,sqlservertutorial\peter windows域帐户必须存在。
SQL Server CREATE USER语句允许将用户添加到当前数据库。下面是CREATE USER语句的基本语法:
| CREATE USER username | |
| FOR LOGIN login_name; |
- 首先,在
CREATE USER关键字之后指定用户名。 - 其次,为用户指定login_name。LOGIN必须在服务器上有效。要创建LOGIN,请使用create login语句。
浙公网安备 33010602011771号