17.2.2 授予权限
授予权限的对象就是用户或者角色,授予权限的操作包括授予系统权限和授予对象权限,下面分别在企业管理器和SQL*Plus中讲解如何授予系统权限与对象权限。
1.在企业管理器中授予系统权限
【示例9】在企业管理中添加系统权限
这里以授予用户的权限为例进行授予用户权限。首先要选择授予权限的用户,在图17.2所示页面中,选择一个用户单击【编辑】按钮,进入用户修改界面,如图17.5所示。在页面上选择【系统权限】选项卡,出现图17.7所示界面。
图 17.7 编辑系统权限
在编辑系统权限页面中,单击【编辑列表】选项,出现选择系统权限的页面,如图17.8所示。
图 17.8 选择系统权限
在图17.8中,左侧是系统中的所有可用的系统权限,如果要为用户添加权限,可以直接选中权限,之后单击【移动】或【全部移动】选项,添加的系统权限就会出现在右侧的“所选系统权限”列表框中。相反,如果想从所选的系统权限中移除权限,也可以选择【移去】或者【全部移去】选项。在添加好权限后,单击【确定】按钮,权限就添加成功了,出现图17.9所示界面。
图 17.9 权限添加完成
系统权限添加完成后,再单击【应用】按钮,系统权限就添加到指定的用户上了。这里,在系统权限列表中还有一个管理选项,如果把该选项选中,那么这个用户就会拥有授予ALTER USER的权限。在默认情况下,该选项是未被选中的。
2.使用企业管理器添加对象权限
在企业管理器中添加对象权限的方法与添加系统权限的方法类似。
【示例10】在企业管理中添加对象权限
在图17.5所示界面中,单击【对象权限】选项,添加对象权限的界面如图17.10所示。
图 17.10 添加对象权限
在添加对象权限的页面中,首先选择要添加的对象权限的类型,这个对象类型主要有Java源、Java类、作业类、序列、表等对象。选择好对象类型后,单击【添加】按钮,出现图17.11所示的界面。这里选择表对象。
图 17.11 添加表对象的权限
在添加表对象权限之前首先要选择表对象,然后单击选择表对象后面的图标,会出现图17.12所示的界面。
图 17.12 选择表对象
选择表对象后,就可以为用户使用该表对象授予权限,如图17.13所示。
图 17.13 授予对象权限
授予对象权限与授予系统权限一样,这里就不详细说明。选择好权限后,单击【确定】按钮,完成对用户的对象权限的授予。
3.在SQL*Plus中授予系统权限
授予权限的操作一般是由数据库管理员来处理的,只有拥有了足够的权限才能够给其他用户授予权限。授予用户权限的基本语法如下:
GRANT system_privilege
|ALL PRIVILEGES TO{user IDENTIFIED BY password|role|}
[WITH ADMIN OPTION]
【语法说明】
❑system_privilege:创建的系统权限名称。
❑ALL PRIVILEGES:可以设置除SELECT ANY DICTIONARY权限之外的所有系统权限。
❑{user IDENTIFIED BY password|role|}:设置权限的对象,user IDENTIFIED BY password子句代表的是设置指定用户的权限;role代表的是设置角色的权限。
❑WITH ADMIN OPTION:设置该子句后,表示当前给予授权的用户还可以给其他用户进行系统权限的授予。
【示例11】在SQL*Plus中授予用户系统权限
下面就利用上面的语法,授予用户一个系统权限session。具体语法如下:
GRANT create session to USER1
也可以为它加上WITH ADMIN OPTION管理选项,让USER1也具有授予create session的权限。具体代码如下:
GRANT create session to USER1 WITH ADMIN OPTION
4.在SQL*Plus中授予用户对象权限
授予对象权限与授予系统权限的语法相似,只是有一点区别。具体语法如下:
GRANT object_privilege|ALL
ON schema.object
TO user|role
[WITH ADMIN OPTION]
[WITH THE GRANT ANY OBJECT]
【语法说明】
❑object_privilege:对象权限的名称。
❑ALL:如果选择ALL,则代表授予用户所有的对象权限,这个权限在使用的时候一定要慎重。
❑schema.object:为用户授予的对象权限使用的对象。
❑user|role:user代表的是用户;role代表的是角色,角色的授予会在17.3节中详细讲述。
❑WITH ADMIN OPTION:设置该子句后,表示当前给予授权的用户还可以给其他用户进行系统授权。
❑WITH THE GRANT ANY OBJECT:设置该子句后,表示当前给予授权的用户还可以给予其他用户对象权限。
【示例12】在SQL*Plus中授予用户对象权限
利用上面的语句,为用户USER1授予表对象AA删除的权限。具体代码如下:
GRANT DELETE ON AA TO USER1