开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情
权限管理
权限用来指定授权用户可以使用的数据库对象和可以对这些数据库对象执行的操作
- 在SQL Server中包括三种类型的权限:即对象权限、语句权限和隐含权限
权限种类
- 对象权限(针对DML) :对数据库的表、视图等对象中的数据的操作权限
- 语句权限(针对DDL) :是否允许执行Create table, Create view等与创建数据库对象有关的操作
- 隐含权限 :由SQL Server预定义的服务器角色、数据库角色、 数据库拥有者、数据库对象拥有者所具有的权限
数据库用户的分类
- 系统管理员(sa)
- 在数据库服务器上具有全部的权限。
- SQL Server 的默认系统管理员是“sa”。
- 数据库对象拥有者(dbo)
- 创建数据库对象的用户即为数据库对象拥有者。
- 数据库对象拥有者对其所拥有的对象具有全部权限。
- 普通用户
- 只在授权后具有对数据库数据的增、删、改、查等权限。
隐含权限无需也不能进行设置,因此权限的设置实际上是对对象权限和语句权限的设置。权限管理包含如下三项内容:
- 授予权限:允许用户或角色具有某种操作权
- 收回权限:收回曾经授予的权限
- 拒绝权限:拒绝某用户或角色具有某种操作权
使用SSMS管理对象权限
打开SSMS,展开服务器组以及服务器
- 展开“数据库”并展开要设置权限的数据库,单击“用户”节点
- 右击想要设置的数据库用户,从弹出的菜单中选择“属性”,即可对用户的权限进行操作。
使用SSMS管理语句权限
打开SSMS,展开服务器组以及服务器
- 展开“数据库”并展开要设置权限的数据库,单击“用户”节点
- 右击想要设置的数据库用户,从弹出的菜单中选择“属性”,即可对用户的权限进行操作。
- 与管理对象权限过程一样,区别就是在选择对象类型窗口中,选择“数据库”。
Transact-SQL 语句创建登录名
CREATE LOGIN 登录名 WITH PASSWORD=‘登录密码’
例: CREATE LOGIN user2 WITH PASSWORD=‘123456’
Transact-SQL 语句删除登录名
DROP LOGIN 登录名
例:DROP LOGIN user2
Transact-SQL 语句创建数据库用户
CREATE USER 用户名 [FOR LOGIN 登录名]
例1:CREATE USER user2
例2:CREATE USER user2 FOR LOGIN user
Transact-SQL 语句删除数据库用户
DROP USER 用户
例:DROP USER user2
Transact-SQL 语句管理对象权限
- GRANT: 用户授权
- REVOKE:用于收回权限
- DENY: 用于拒绝权限
GRANT语句
格式
GRANT 对象权限名 [,…]
ON {表名|视图名|存储过程名}
TO {数据库用户名|用户角色名} [,…]
REVOKE语句
格式
REVOKE 对象权限名 [,…]
ON {表名|视图名|存储过程名}
FROM {数据库用户名|用户角色名} [,…]
DENY语句
格式
DENY 对象权限名 [,…]
ON {表名|视图名|存储过程名}
TO {数据库用户名|用户角色名} [,…]