六SQL Server数据库用户管理
Posted 摸爬滚打的程序媛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了六SQL Server数据库用户管理相关的知识,希望对你有一定的参考价值。
1 SQL Server数据库——登录名
- 登录名:用于连接到SQL Server服务器
- 登录名为"sa"的用户可以连接到SQL Server服务器,然而,"sa"是超级管理员,可以操作对象管理器中的所有的数据库和数据库对象,会对数据库带来一定的安全隐患。
- 所以,需要创建不用权限的用户,来管理和操作数据库。
1.1 创建登录名(使用视图)
1.1.1 新建登录名:选择"Windows身份验证"
1.1.1 如何查看本机账户
控制面板-》用户账户-》管理其他账户-》会有”管理员“以及其它用户。
后面选用图中的"newUser"新建登录名。
1.1.2 建立登录账户
先输入"newUser",然后点击“检查名称”,就会自动更新补全名称。
单击对象管理器刷新之后,就可以在"登录名"下看到刚刚创建的登录名。
1.1.3 测试登录新账户
- 断开服务器连接,再重新建立连接。选择"Windows身份验证",但是此时用户名还不是我们刚刚的新建的登录名,可以通过"Ctrl+Alt+Delete "来切换用户(切换的时间有点长)。
- 切换成功之后就可以用新用户登录。
1.1.2 新建登录名:选择"SQL Server身份验证"
注意下面几个选项的功能。
这里不勾选密码相关的选项,并默认数据库为"master"数据库。
创建成功之后,刷新登录名,就可以看到刚刚创建的"PbUser"登录名了。
然后关闭当前连接,重新连接服务器,选择"PbUser"登录名进行登录。
1.2 创建登录名(使用SQL语句)
语法
CREATE LOGIN <登录名> WITH PASSWORD=<'登录密码'>
--创建登录名
use master --当前指向的要操作的数据库
GO
--登录名:PbMaster,密码:123456
CREATE LOGIN PbMaster WITH PASSWORD = '123456'
GO
- SQL语句执行成功之后,可以查看到登录名“PbMaster”已存在。
2 SQL Server数据库——用户名
- 用户名:SQL Server的使用者
- 每个用来登录SQL Server的登录名都是一个用户
- 同一个数据库可以拥有多个用户
- 同一个用户也可以访问多个数据库
2.1 创建用户名(使用视图)
- 在“sa”登录名下,新建用户名(也是登录名)Admin。
- 在“用户映射”中,设置Admin能访问DemoDB、master数据库。
- 用户名创建成功。
- 用户名创建成功之后,分别到DemoDB和master数据库,可以查看到用户列表中已经有“Admin”。
2.2 创建用户名(使用SQL语句)
语法
CREATE USER <数据库用户名> FOR LOGIN <登录名>
--创建数据库用户
use DemoDB --指向当前操作的数据库
GO
--用户名:MasterDBUser
CREATE USER MasterDBUser FOR LOGIN PbMaster
GO
使用PbMaster登录名连接数据库之后,可以到DemoDB数据库的用户中看到,已存在MasterDBUser用户。
3 SQL Server数据库用户——赋予权限
- sa用户登录下,可以看到数据库DemoDB下的两张表
- Admin用户登陆下,无法看到数据库DemoDB下的两张表
- 原因就是sa用户有权限,而Admin用户没有权限。
3.1 为用户赋予权限(使用视图)
3.1.1 添加特定对象
给Admin添加特定对象:DemoDB数据库中的表
- 在sa用户登录状态下,在数据库DemoDB下找到用户Admin,右击-》属性
- 找到“安全对象”,点击“搜索”,选择添加“特定对象”。
- “对象类型”选择“表”。
- 然后“浏览”DemoDB数据库中的表,选择要添加的表。
- 添加成功之后,就可以看到Admin的安全对象列表增加了刚刚添加的对象。
3.1.2 添加特定类型的所有对象
给Admin添加特定类型的所有对象:DemoDB数据库的所有表
3.1.3 添加属于该架构的所有对象
给Admin添加sys架构下的所有对象:DemoDB数据库中的表
- “安全对象”列表中会展示当前sys架构下的所有对象,这里选择DemoDB的db.table1。
- 并给Admin用户授予对表dbo.table1的“插入”、“选择”权限。
- 添加成功之后,使用Admin用户登录。登录之后可以看到DemoDB数据库下的一张表 dbo.dbo.table1。表右击可以“选择前1000行”、“编辑前200行”。
- “编辑前200行”-》可以成功插入一条数据“id 为0,name为小王”。
- 此时如果修改该数据“id 为1”,则会报错;如果删除该数据,也会报错。因为,并未授予Admin用户“修改”、“删除”表中数据的权限。
3.2 对用户赋予权限和回收权限(使用SQL语句)
3.2.1 授予权限
语法
GRANT <操作权限1,操作权限2,...> ON <表名> TO <用户名>
--为数据库DemoDB的用户MasterDBUser,授予对表userInfo 的“选择”、“插入”、“修改”的操作权限
use DemoDB --指向当前操作的数据库
GO
GRANT SELECT,INSERT,UPDATE ON userInfo TO MasterDBUser
GO
SQL语句执行成功之后,就可以查看用户MasterDBUser的属性,看到其安全对象为UserInfo表,并授予了对UserInfo表的“选择”、“插入”、“更新”权限。
3.2.2 回收权限
语法
REVOKE <操作权限1,操作权限2,...> ON <表名>TO <用户名>
--将用户MasterDBUser对数据库DemoDB中,表userInfo的UPDATE权限进行回收
USE DemoDB --指向当前操作的数据库
GO
REVOKE UPDATE ON userInfo TO MasterDBUser
GO
SQL语句执行成功之后,用户MasterDBUser的属性,看到其安全对象为UserInfo表,只有对UserInfo表的“选择”、“插入”权限。
4 SQL Server数据库——角色
什么是角色?
就是事先定义好的一组权限
服务器角色:数据库服务器方面的控制权限
1、 例如创建、修改、删除数据库,管理磁盘文件,添加或删除数据库连接等等。
2、服务器级别的对象,只能包含登录名。
数据库用户角色:数据库中数据的控制权限
√ 数据库级别的一个对象,只能包含数据库用户名
√ 例如可以访问哪个数据库,可以访问哪个数据库中的哪些数据表,那些视图,哪些存储过程等等
√ 对哪些数据表执行哪些操作记员是插入操作还是更新操作固定数据库角色
√一组sql server预定义的数据库角色√具有数据库级别的管理权限
自定义数据库角色
√当固定数据库角色不能满足要求的时候,可以自定义数据库角色
数据库的所有者:–dbo
1、出现在每个数据库中
2、登录名sa,自动映射为数据库用户dbo
4.1 服务器角色
角色名 | 描述 |
---|---|
bulkadmin | 运行bulk语句,该语句可将文本文件内的数 据导入到SQL Server2008中 |
dbcreator | 创建、更改、删除和还原任何数据库 |
diskadmin | 管理磁盘文件 |
processadmin | 管理sql server中运行的进程 |
sccuritygdmin | 管理和审核登录账户 |
serveradmin | 设置服务器范围的配置 |
setupadmin | 可以添加和删除连接服务器,并可以执行某 些系统存储过程 |
sysadmin | 可以在服务器引擎中执行任何活动 |
public | 两大特点:一、初始状态时没有权限 二、所有的数据库用户都是它的成员 |
4.2 数据库用户角色
角色名 | 描述 |
---|---|
db_owner | 执行所有的配置活动和维护活动, 以及授予或取消取数据库对象上的 select, insert, update |
db_accessadmin | Windows登录账户 |
db_datareader | 读取数据库中所有用户表中的数据 |
db_datawriter | 向来自数据库中所有用户表中添 加,更新和删除数据 |
db_ddladmin | 运行任何数据库义语言命令 |
db_securityadmin | 管理数据库的安全,可以修改角色 成员身份和管理权限 |
db_backupoperator | 可以备份数据库 |
db_denydatareader | 不能查看数据库中用户表的任何数据 |
db_denydatawriter | 不能向用户表中添加,更新或删除任 何数据 |
public | 特殊的固定数据库用户,每个数据库 用户都属于public数据库角色 |
public数据库角色特点:
1、捕获数据库中用户的默认权限
2、所有用户、角色或组默认属于public角色
3、无法将用户、组或角色指派给它,因为默认情况 下它属于该角色
4、不能被删除
以上是关于六SQL Server数据库用户管理的主要内容,如果未能解决你的问题,请参考以下文章