sql语言的授权 *** 作是通过

sql语言的授权 *** 作是通过,第1张

sql语言的授权 *** 作是通过GRANT和REVOKE命令实现的。根据查询相关公开信息显示:GRANT和REVOKE命令可以限制用户对数据的 *** 作类型,通过授权 *** 作,管理员可以给予用户仅有必要的权限,可以远程使用GRANT和REVOKE命令来管理用户访问权限,而不需要直接访问到数据库服务器。

sql语言用grant语句向用户授予 *** 作权限,grant语句的一般格式为:

grant

<权限>[,<权限>]...

[on

<对象类型>

<对象名>]

to

<用户>[,<用户>]...

[with

grant

option]

其语义为:将对指定 *** 作对象的指定 *** 作权限授予指定的用户。

不同类型的 *** 作对象有不同的 *** 作权限,常见的 *** 作权限如表3-4所示。

表3-4

不同对象类型允许的 *** 作权限

对象

对象类型

*** 作权限

属性列

table

select,

insert,

update,

delete

all

privieges

视图

table

select,

insert,

update,

delete

all

privieges

基本表

table

select,

insert,

update,

alter,

index,delete

all

privieges

数据库

database

createtab

详细信息…

接受权限的用户可以是一个或多个具体用户,也可以是public即全体用户。

如果指定了with

grant

option子句,则获得某种权限的用户还可以把这种权限再授予别的用户。如果没有指定with

grant

option子句,则获得某种权限的用户只能使用该权限,但不能传播该权限。

例1

把查询student表权限授给用户u1

grant

select

on

table

student

to

u1

例2

把对student表和course表的全部权限授予用户u2和u3

grant

all

priviliges

on

table

student,

course

to

u2,

u3

例3

把对表sc的查询权限授予所有用户

grant

select

on

table

sc

to

public

例4

把查询student表和修改学生学号的权限授给用户u4

详细信息…

这里实际上要授予u4用户的是对基本表student的select权限和对属性列sno的update权限。授予关于属性列的权限时必须明确指出相应属性列名。完成本授权 *** 作的sql语句为:

grant

update(sno),

select

on

table

student

to

u4

例5

把对表sc的insert权限授予u5用户,并允许他再将此权限授予其他用户

grant

insert

on

table

sc

to

u5

with

grant

option

详细信息…

执行此sql语句后,u5不仅拥有了对表sc的insert权限,还可以传播此权限,即由u5用户发上述grant命令给其他用户。

例如u5可以将此权限授予u6:

grant

insert

on

table

sc

to

u6

with

grant

option

同样,u6还可以将此权限授予u7:

grant

insert

on

table

sc

to

u7

因为u6未给u7传播的权限,因此u7不能再传播此权限。

例6

dba把在数据库s_c中建立表的权限授予用户u8

grant

createtab

on

database

s_c

to

u8

-- sqlserver:一、 *** 作步骤

1.

首先进入数据库级别的【安全性】-【登录名】-【新建登录名】

(图1:新建登录名)

2.

在【常规】选项卡中,如下图所示,创建登陆名,并设置默认的数据库。

(图2:设置选项)

3.

在【用户映射】选项卡中,如下图所示,勾选需要设置的数据库,并设置【架构】,点击【确认】按钮,完成创建用户的 *** 作

(图3:选择对应数据库)

4.

现在我们就可以对testlog数据库中的user表进行权限的设置了,【表】-【

属性】

(图4:选择对应表)

5.

在【权限】选项卡中,如下图所示,依此点击【添加】-【浏览】-【选择对象】

(图5:设置访问表的用户)

6.

在上面点击【确认】后,我们就可以下面的列表中找到对应的权限,如果你还想细化到列的权限的话,右下角还有一个【列权限】的按钮可以进行设置,点击【确认】按钮就完成了这些权限的设置了

(图6:权限列表)

7.

现在就使用testuser用户登陆数据库了,登陆后如下图所示,现在只能看到一个表了

(图7:效果)

二、注意事项

1.

在上面的第3步骤中需要注意:如果这里没有选择对应的数据库的话,之后去testlog数据库中是找不到testuser。

(图8:找不到testuser用户)

2.

在上面的第3步骤,设置完testlog数据后,需要点击【确认】按钮,完成创建用户 *** 作,如果这个时候去设置【安全对象】,是无法在【添加】-【特定对象】-【对象类型】-【登陆名】-【浏览】中找到刚刚新建的testuser用户的。

3.

其实在数据库级别的【安全性】创建的用户是属于全局的,当设置了某个数据库,比如testlog之后,这个用户就会出现在这个数据库的【安全性】列表中。

如果删除testlog这个用户,会出现下面的提示。删除了后,这个用户就无法登陆了。需要去对应的数据库中删除用户,如果没有删除又创建,是会报错的。

(图9:删除testuser用户)

4.

在第6步的【显式权限】列表中,如果选择了【control】这个选项,那么在【select】中设置查询【列权限】就没有意义了,查询就不会受限制了。如果设置【列权限】,在正常情况下会显示下图的报错信息:

(图10:效果)

5.

在testlog数据库的【安全性】-【testuser】-【属性】-【安全对象】-【添加】-【对象类型】这里有更多关于数据库级别的一些对象类型可以设置。

(图11:其它对象类型)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9927576.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存