授予对象权限

向用户或组授予对象权限时,必须决定该权限的作用域是一个或多个数据库、一个或多个模式,还是对系统中的所有数据库全局有效。 在7.0.3 之前的版本中,管理员通过在特定位置设置 GRANT 或 REVOKE 来分配全局与本地权限。 例如:

  • 如果是全局权限,则需要连接到系统数据库,然后将对象类的权限授予用户或组。
  • 对于数据库的特定权限,您需要连接到该数据库,然后将对象的权限授予用户或组。

从7.0.3 版开始,您可以继续使用这些方法分配本地和全局权限,还可以使用完全限定的对象名称database.schema.obj_或_obj_class)和类来设置任何数据库/模式连接的作用域。 您必须是管理员用户,或者您必须有权限更改您要管理的用户或组的权限。

在完全合格的对象名称中,可以指定以下内容:

  • 对于数据库,可以指定数据库名称,将权限范围扩大到特定数据库;也可以使用关键字 ALL 指定所有数据库,包括将来创建的任何数据库。
  • 对于模式,可以指定一个模式名称,将权限范围限定在特定模式上,也可以使用关键字 ALL 指定所有模式,包括将来创建的任何模式。
  • 对于 obj_or_obj_class 值,可以指定一个对象名称,以便将权限范围扩大到该对象。 还可以指定数据库、表、视图、同义词或其他对象类别,以允许该类型的所有对象使用该特权。

例如,要授予user1访问所有数据库和模式的权限,请从任何数据库连接运行此命令:

GRANT list ON all.all.database TO user1;
GRANT

如果以这种方式进行全局授权,就可以通过更改特定数据库的用户访问权限来细化该数据库的访问权限。 例如,如果想让user1无法访问名为 secure_info 的数据库,就必须授予user1对该目标数据库的一组减少的访问权限。 例如:

GRANT select ON secure_info TO user1;
GRANT

在本例中,用户对数据库拥有选择访问权限,如果user1不是数据库的所有者,则不足以允许连接到数据库。 有关权限的更多信息,请参阅《IBM® Netezza®系统管理员指南》。