我们希望在我们的Vertica数据库中设置一个可以查看某些系统表(投影,projection_storage和视图)的用户,但是我们不希望这个用户成为dbadmin,因为我们不想要他们对这些表有写权限。我已经尝试使用GRANT语句给普通用户访问这些表,但这似乎不起作用。每个用户只能在这些表中看到自己的记录。有没有办法像我描述的那样设置用户,或者我们是否需要让这个用户成为dbadmin?
我们的用例是,我们需要一个用户,该用户可以获取我们数据库中存在的模式列表,并遍历每个模式,收集信息以存储在一个中心位置。如果我们的用户被授予对各个模式的使用,那么他们可以获得这些模式的列表,但是他们无法访问projection_storage和views表中的必要记录。
谢谢!
答案 0 :(得分:3)
向用户或角色授予模式USAGE
是不够的,用户无法在projection_storage
表中查看其投影。如果用户或角色对表具有SELECT
访问权限,则可以在projection_storage
中查看这些表的预测。我在Vertica 7.1中,通过仅授予角色SELECT
权限而不是授予个人用户ID,我能够查看投影记录。
如果用户不需要访问表但需要列出模式中的表以用于某些报告目的,则一个选项是定期将projection_storage
的内容转储到不同的表并授予适当的权限。这个表给用户。
答案 1 :(得分:2)
为了维护起见,您应该创建数据库角色!!然后为您的用户提供对这些角色的访问权限。另外,维护对你来说太棒了!!
答案 2 :(得分:1)
通常,我只是在模式上为用户提供USAGE。然后“GRANT SELECT on to;”
他们对这些表有INSERT权限吗?
答案 3 :(得分:1)
授予对表中角色的select访问权限,不授予对projection_storage等元数据表的完全访问权限。这似乎是一个错误。为了获得完整的访问权限,需要为个人用户ID授予选择权。
答案 4 :(得分:0)
您可以按照以下步骤创建具有架构选择权限的用户。 我将通过一个例子来说明这一点,在我的测试数据库中,我有一个架构' sid'用表' student_table'。
1) Login as a admin on your database .
[dbadmin@localhost bin]$ vsql -u
User name: dbadmin
Password:
2) Create the user with a password
dbadmin=> create user test identified by 'R';
CREATE USER
3) Give the newly created user a Grant for the usage on the database.
dbadmin=> Grant ALL on database vertica to test;
GRANT PRIVILEGE
4) You can then grant the user the Usage to the schema
dbadmin=> Grant Usage on Schema sid to test;
GRANT PRIVILEGE
5) Finally provide the select grant to the user on the table .
dbadmin=> Grant select on sid.student_table to test ;
GRANT PRIVILEGE
dbadmin=> \q
6) Login with the new user 'test' , You will be able to access both projection storage and
your table sid.student_table
[dbadmin@localhost bin]$ vsql -u
vsql: Warning: The -u option is deprecated. Use -U.
User name: test
Password:
Welcome to vsql, the Vertica Analytic Database interactive terminal.
test=> select * From sid.student_table;
Student_ID | Last_name | First_Name | Class_Code | Grade_pt
------------+-----------+------------+------------+--------------------
9999 | T_ | S% | PG | 98.700000000000000
(1 row)
test=> select * From projection_storage;
-[ RECORD 1 ]-----------+-----------------------------------------
node_name | v_vertica_node0001
projection_id | 45035996273836526
projection_name | Student_Table_DBD_1_rep_tet1_v1_node0001
projection_schema | sid
projection_column_count | 6
row_count | 9
used_bytes | 375
wos_row_count | 0
wos_used_bytes | 0
ros_row_count | 9
ros_used_bytes | 375
ros_count | 1
anchor_table_name | Student_Table
anchor_table_schema | sid
anchor_table_id | 45035996273756612