数据库安全性之使用命令来实现用户管理以及角色.十五
例1.创建windows登录shuai用户,只能查看itet库中yuangong表的数据。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
步骤一.在windows中创建用户shuai.
步骤二.创建登录。
语法为:create login 登录名 from windows
注意:[机器名\用户名] 只限于windows登录
步骤三.成为指定的数据库的合法用户。
语法为:
Create user 用户名昵称 for login 登录名
4.分配权限。
语法为:
Grant 权限 on 对象名 to 用户
测试在这里就不需要注销了,使用名令setuser
语法为:setuser ‘用户名’
我们怎么知道登没登录呢?这怎么办呀,有一个命令可以查看当前是那个用户登录的。 Select user
用户权限分配成功。
切回管理员只使用setuser就可以了。
例2.创建sql server登录。用户为juan。
1. 创建sql登录。
Create login 登录名 with password=‘登录口令’
2.成为指定数据库的合法用户。
Create user 用户名昵称 for login 登录名
3.分配权限。能删除yuangong表的记录。
Grant 权限 on 对象名 to 用户名
测试用户juan登录数据库,进行删除yuangong表记录的操作,如下图所示成功删除了记录。
例:创建sql server登录:text只能修改yuangong表女同志的信息。
1.创建sql登录。
Create login 登录名 with password=‘登录口令’
2.成为指定数据库的合法用户。
Create user 用户名昵称 for login 登录名
3.创建视图。
语法为:create view 视图名
As
Select * from yuangong where 性别=‘女’
4.分配相应的权限。
Grant 权限 on 视图名 to 用户名
测试用用户text登录数据库,将所有女同志的年龄减去1岁。
修改后的情况。
一.撤销用户权限。
语法为:
Revoke 权限 on 对象名 from 用户名
例1.撤销text用户对viewnv视图的update权限。
测试…
二.删除用户
Drop user 用户名
三.删除登录名。
Drop login 登录名
四.角色:role。 下面的例子就要用到角色了。
角色的功能同windows中的组相同。
例:现有10个sql登录,都是只能查看yuangong表的数据。
1. 创建角色。
Create role 名
2. 加入用户。
Sp_addrolemember ‘角色名’,‘用户名’
一条一条的执行,
4.给角色分配权限。
Grant 权限 on 对象名 to 角色名
测试分别使用用户s1,s2,s3,s4,S5登录,在这里我就用s1登录看操作是否成功。如下图所示只有查看的权限。
5.撤销角色的权限。
Revoke 权限 on 对象名 from 角色名
在这条命令里from和to都可以用。
如下图所示角色里的查看权限以撤销,用s5登录测试。
6.删除角色中的成员。
Sp_addrolemember ‘角色名’,‘用户名’
例删除network角色中的s1用户。
7.删除角色。
Drop role 角色名
例删除角色network,角色空时才能删除。
Sql server 2005对于用户安全的新特性
1. 复杂性口令
2. 锁定策略
3. 架构
(1.)通过组策略实现复杂性口令。
在运行里输入gpedit.msc打开组策略在windows设置→安全设置→账户策略→密码策略→启动密码必须符合复杂性要求。
设置密码最小值为7
(2.)例:juan用户只允许登录3次,3次登录无效后锁定。
在运行里输入gpedit.msc打开组策略在windows设置→安全设置→账户策略→账户锁定策略
锁定时间为30分钟。
测试用户juan三次登录错误后,账户被锁定。
如下图在用户名属性里状态中,登录已锁定。
解锁:
Alter login 用户名 with password=‘用户名密码’unlock
如下图已解锁。
(3.)架构:schema
Sql 2000以前的版本中描述对象为:
服务器名.数据库名.用户名.对象名
2005版本
服务器名.数据库名.架构名.对象名
注意:
1. 架构和用户没有从属关系。
2. 创建对象时,最好指定所属架构。
3. 如果某个对象不指定所属架构,则默认属于dbo架构。
4. 操作a.b对象,首先查看a架构,如果找不到再找dbo架构。
创建架构:
语法为:
Create schema 架构名
Create table 表名
(
Id int,
Uname varchar(8),
Sex char(2)
)
给架构分配一个查看权限。
Grant 权限 on schema ::架构名 to 用户名
测试查看t2表。只是里面没有放入记录。
更改用户的架构。
Alter user juan with default_schema=network
例1.将t2表的架构从network改为sales
先创建架构sales,然后在进行更改。
Create schema sales
Alter schema sales transfer network.t2
如下图所示架构更改成功。
例2.更改用户的架构。把juan用户的架构改为sales。
Alter user 用户名 with default_schema=架构名
转载于:https://blog.51cto.com/guoweishuai/249947