sql使用grant语句向用户授予操作权限,grant语句的一般格式为:
grant <权限> [,<权限>,…]
[on <对象类型> <对象名>]
to <用户 | 角色>[,<用户 | 角色>,…] | public
[with grant option]
对此语句的说明如下:
1)不同类型的操作对象具有不同的操作权限,如表3.17所示。
2)接受授权的用户可以是一个或多个具体的用户,也可以是角色或PUBLIC,指定PUBLIC即把权限授予数据库中的所有用户。
3)授予关于属性列的权限时,必须明确给出相应的属性列名称。
4)如果指定了WITH GRANT OPTION子句,则获得某种权限的用户还可以把这种权限再授予其他用户,但不允许循环授权,即被授权者不能把权限再授回给授权者或其祖先,如图3.3所示。如果没有指定WITH GRANT OPTION子句,则获得某种权限的用户只能使用该权限,不能把权限再授予其他人。(www.jb200.com 脚本学堂)
例3.72 把查询Student表的权限授给用户user1。
例3.73 把对Student表和Course表的全部操作权限授予user2和user3。
例3.74 把对表SC的查询权限授予给所有用户。
例3.75 把查询Student表和修改学生姓名的权限授予给用户user4。
例3.76 把对表SC的INSERT权限授予user5用户,并允许其把此权限再授予其他用户。
执行此sql语句后,user5不仅拥有了对表SC的INSERT权限,还可以把此权限再授予他人。
从以上例子可以看出,SQL的授权机制非常灵活。
用户对自己建立的基本表和视图拥有全部的操作权限,也可以将这些权限授予其他用户。
用户可以一次向一个用户授权,如例3.72所示。
也可以一次向多个用户授权,如例3.73和例3.74所示;
还可以一次传播多个同类对象的权限,如例3.73所示;
甚至一次可以完成对基本表、视图和属性列这些不同对象的授权,如例3.75所示。