数据库安全机制:
- 1.登录账户:
- (1)登录方式:
- a.Windows身份验证
- b.SQL Server身份验证
- (2)登录账户类型:
- a.SQL Server账户
- b.Windows账户
- 2.SQL Server登录
- (1)SQL Server三层安全管理机制:
- ① 登录账户 能够找到服务器
- ② 数据库账户 能够找到服务器上数据库
- ③ 数据库账户权限 能够控制登录账户对数据库的操作权限
- (2)登录名(登录账户)
- ①用以登录SQL Server数据库服务器
- ②一个数据库服务器上可有若干个数据库
- (3)数据库账户
- ①用以访问指定的数据库
- ②找到数据库用户对于的权限,操作数据库
添加用户
1.添加登录用户
创建语法格式:
EXEC sp_addlogin '用户名','密码'
sa账户:超级管理员账户,拥有数据库管理的最高权限
2.创建数据库用户
(1)创建语法格式:
EXEC sp_grantdbaccess '数据库账户','登录用户'
--第一个参数数据库账户必须存在
(2)系统内置的数据库用户
① dbo用户
a.表示数据库的所有者(DB Owner)
b.无法删除dbo用户
c.默认分配给 sa登录账户
②guest用户
a.适用于没有数据库用户的登录账户访问
b.数据库可有可无
删除用户
1.删除登录用户
删除语法格式:
EXEC sp_droplogin '登录用户名'
2.删除数据库用户
EXEC sp_dropUser '数据库用户名'
数据库的用户授权
1.数据库用户授权
语法格式:
grant select,insert,update on 数据表名 to 数据库用户名
2.收回数据用户权限
语法格式:
REVOKE SELECT ON 数据表名 TO 数据库用户名
用户角色管理
问题:
给单个数据库用授权非常麻烦,能否创建一个数据库用户,然后直接赋予一组已经定义的权限
解决:
1.定义一个用户,给该用户设置权限,再将该角色赋予特定的用户
2.使用已经定义好的角色(固定角色),直接赋予特定的数据库用户
角色 | 角色描述 |
---|---|
db_owner | 数据库的拥有者,权限包含任何其他角色的权限 |
db_accessadmin | 可以新建,删除Windows和数据库用户 |
db_datareader | 查看数据中所有用户创建的表内数据 |
db_datawriter | 可以新建,修改,删除,数据库所有用户中创建的表内数据 |
db_ddladmin | 可以新建,修改,删除,数据库对象(视图…) |
db_securityadmin | 可以管理数据内的权限控制,(如管理数据库的角色和角色内的成员,管理数据库对象访问权限) |
db_backupoperator | 具有备份数据库 |
db_denydatareader | 拒绝选择数据库中数据 |
db_denydatawriter | 拒绝更改数据库中的数据 |