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将在用户首次登录时提示使用alice
LOGIN的用户输入新密码。
注意,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语句。