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可以为ONOFF。其默认值为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可以为ONOFF。默认值为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_POLICYCHECK_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语句。
posted @ 2023-01-30 14:13  平元兄  阅读(1436)  评论(0编辑  收藏  举报