用户看不到视图,只能看到表

User cannot see view, only sees tables

这些是用户在 netezza 数据库上的对象权限。它说 (S)elect,但用户看不到视图,只能看到表。这是为什么?

Object Privileges
    (L)ist (S)elect (I)nsert (U)pdate (D)elete (T)runcate (L)ock
    (A)lter (D)rop a(B)ort (L)oad (G)enstats Gr(O)om (E)xecute
    Label-A(C)cess Label-(R)estrict Label-E(X)pand Execute-(A)s
Administration Privilege
    (D)atabase (G)roup (U)ser (S)chema (T)able T(E)mp E(X)ternal
    Se(Q)uence S(Y)nonym (V)iew (M)aterialized View (I)ndex (B)ackup
    (R)estore va(C)uum (S)ystem (H)ardware (F)unction (A)ggregate
    (L)ibrary (P)rocedure U(N)fence (S)ecurity Scheduler (R)ule

LIST 权限允许您查看对象,TABLE 与 VIEW 是不同的对象 class。

如果您希望用户看到一个视图,那么您必须在该视图(或 VIEW 的一般对象 class)上授予 LIST。在 table(或 TABLE 的对象 class)上被授予 LIST 或 SELECT 与用户是否可以看到 VIEW 无关。

如果您有两个名为 VIEW_1 和 VIEW_2 的视图,您可以执行以下操作:

GRANT LIST, SELECT on VIEW_1, VIEW_2 to USER1234

或者如果您希望他们对您授予 VIEW 的数据库范围内的所有视图具有这些权限,VIEW 是对所有视图的对象 class 的引用。

GRANT LIST, SELECT on VIEW to USER1234

同样,您可以授予 TABLE(表示 table 对象 class),这将适用于范围内的所有 table。