前言 && 登录名

开始之前

这是一篇学习Microsoft SQL server的笔记,只记录重点内容,有些地方做了适当省略,如有错误请多多包含.下文使用的Microsoft SQL server为2017版本,如无特殊说明,使用SQL server来代替原来的名称.软件的安装和配置不作详细说明,请自行参照相关文档进行,默认Microsoft SQL server 2017和SSMS已经安装完成.

两个大类

SQL server中,数据库相关的内容可以分为两个大类:对象(或称结构)和数据项.

  • 对象:包括数据库对象(如表),也包括SQL server中自带的对象/结构(如登录名).
  • 数据项:数据库对象中的基本构成,如表列数据项.

在开始全文之前,应对这两个大类对应的两大类操作有所了解,如下表:

操作类型面向对象面向数据项
新建CREATEINSERT
删除DROPDELETE
修改ALTERUPDATE
查询sp_help??? ‘args’/sys.视图名SELECT

在进行CRUD之前,应先考虑它是对象还是数据项,再按照大类去使用相应的语法.

注:CRUD指的是Create/Retrieve/Update/Delete几种基本操作.

登录名

什么是登录名

在SQL server中,登录名的关键字是LOGIN,它是有权限登录到服务器的用户,不同的登录名通常有不同权限.

超级管理员的登录名是sa,该登录名不可更改,sa登录名拥有一切权限.

多种方式创建登录名

你可以从Windows本地账户创建登录名,也可以创建SQL server登录名.

注意登录名是SQL server的对象,按照对应关系应该使用CREATE关键字,例如:

  • 从Windows本地账户创建登录名:

  • CREATE LOGIN [AERO15XV8\Connor]	--AERO15XV8是计算机名,Connor是计算机中的用户名;
    	FROM WINDOWS;
    GO
    
  • 创建SQL server登录名:

  • CREATE LOGIN Alex
    	WITH PASSWORD = '12345678';	--为登录名Alex设置密码;
    GO
    

经过一番操作,可以在安全性->登录名看到如下效果:

CREATE LOGIN

注意两点:

  • 从Windows本地账户创建登录名,一定要确保名称格式:[计算机名\用户名].
  • 从Windows本地账户创建登录名,不能为其设置密码,它会自动使用Windows本地账户的密码.
  • 建立SQL server登录名,一定要设置密码,否则将会出现错误.
  • 还可以从证书/Windows域/SID等创建登录名,也可以创建映射到凭据的登录名,这里不再进行介绍.

密码策略

在创建登录名时,往往涉及到密码的问题,于是不得不介绍一下密码策略.Windows密码策略如下:

  • 密码不应该包含部分或全部登录名.
  • 密码长度至少为6位字符.
  • 密码应该包含四类字符中的至少三类:英文大写字母、英文小写字母、阿拉伯数字、非字母非数字.
  • 定时更换密码,且新旧密码差异较大.

创建登录名时,将会采用的密码策略如下:

  • 当使用Windows本地账户创建登录名时,默认使用的是Windows密码策略.
  • 当建立SQL server登录名时,则需使用一些关键字来指明密码策略.
密码策略关键字状态/参数作用
HASHED设置登录名密码的哈希值
MUST_CHANGE仅适用SQL server登录名,在首次登录时提示用户设置新密码
CHECK_EXPIRATIONON/OFF是否对登录名实施密码过期策略
CHECK_POLICYON/OFF强制使用Windows默认的密码策略

以下是创建登录名的一个简单样例:

CREATE LOGIN Temp1
WITH 
	PASSWORD = '12345678abc'
	MUST_CHANGE,
	CHECK_EXPIRATION = ON;
GO

CREATE LOGIN Temp2
WITH 
	PASSWORD = 'ABc123$$',
	CHECK_POLICY = ON;
GO

注意:

  • 不要使用HASHED创建新登录名,HASHED选项用在服务器数据库迁移中.
  • CHECK_EXPIRATION设为OFF时,不能使用MUST_CHANGE选项.

维护登录名

修改登录名信息

因为登录名是SQL server的对象,按照对应关系应该使用ALTER关键字,可以修改登录名的名称、密码、权限、密码策略、默认数据库(DEFAULT_DATABASE)、默认语言(DEFAULT_LANGUAGE)等.

具体操作请参见以下简单修改示例:

ALTER LOGIN Temp0
	WITH PASSWORD = '12345678abc',	--改变登录名Temp的密码;
		 		NAME = Temp0,	--改变登录名Temp的名称;
		 		CHECK_POLICY = ON, --改变登录名的密码策略;
				DEFAULT_DATABASE = AdventureWorks2017, --改变登录名Temp的默认数据库;
				DEFAULT_LANGUAGE = ENGLISH; --改变登录名Temp的默认语言;
GO
禁用/启用登录名

对于一个长久不使用数据库的用户,可以将其登录名禁用,使其没有对数据库的访问权限,示例如下:

ALTER LOGIN Temp1 DISABLE;	--禁用登录名Temp1;
GO

ALTER LOGIN Temp1 ENABLE;	--启用登录名Temp2;
GO

显然这么做的好处是数据安全:假设某公司员工出差几个月,则为了安全考虑应该禁用其对公司数据库系统访问的权限,直到其回到公司上班再启用.

删除登录名

对于SQL server的对象,删除使用DROP关键字,用法也非常简单,直接DROP+对象类型+登录名即可.

DROP LOGIN Temp0;
GO

注意的点:

  • 不同的登录名通常对应不同的数据库管理/使用者,删除可能会导致服务器被"孤立"(无人管理/使用).
  • 为了避免上述情况,请尽量对登录名进行信息更改而不是删除操作.

关于登录名就讲到这儿,至于修改登录名权限,会在以后提到的角色中讲.

下一篇: 角色、用户、架构

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值