向使用Python的所有人授予对Vertica SQL表的访问权限

时间:2019-01-31 19:13:13

标签: python python-3.x vertica

我正在使用Python脚本创建表并将数据插入其中。但是,只有我能看到创建的表。我的团队成员无法查看他们。我该如何更改?

我可以包括哪些Python语句来授予所有人访问权限?我正在使用“ vertica_python”和“ sqlalchemy”通过Python连接到数据库。

2 个答案:

答案 0 :(得分:2)

授予特权的语法为(请参见GRANT (Table)

GRANT SELECT ON TABLE <schema>.<table> TO <user>;

您可以在表上授予以下特权:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • REFERENCES
  • TRUNCATE

在授予表特权之前,必须至少授予表模式上的USAGE

GRANT USAGE ON SCHEMA <schema> to <user>;

但是,如果这些表都在同一模式中,则可以在模式级别上向用户授予特权。要做到这一点,首先你要enable schema inheritance。然后授予该模式给用户的权限。你不这样,需要不断地表授予的权限创建它们。

GRANT USAGE, SELECT ON SCHEMA <schema> TO <user>;

答案 1 :(得分:1)

要授予权限作为选择权限这样需要先有这样的权限。

据Vertica的站点,能够将GRANT需要:

  
      
  • 超级用户可以将所有对象类型的特权授予其他用户。
  •   
  • 的对象所有者可以将对象使用可选WITH GRANT OPTION子句其他用户授予权限。
  •   

伪解决方案

Depending on who needs access,则可以使用的用户名,角色或PUBLIC(全部)。

下面是一些例子说明 - 因为我没有的Vertica的自己制定出来的,我不能对此进行测试

GRANT SELECT on all tables in schema myschema TO [user/role/PUBLIC] WITH GRANT OPTION; 
GRANT PRIVILEGE

OR

GRANT SELECT on schema.TABLENAME TO [user/role/PUBLIC] WITH GRANT OPTION; 
GRANT PRIVILEGE

it may also require GRANT USAGE on schema as well


处理请求与Python

并通过python脚本中的sqlalchemy处理它(请注意this question):

sSQL = "my sql grant statement(s)"
with oSuperEngine.begin() as conn:
    conn.execute(sSQL)
    conn.execute("COMMIT")