我正在使用Python脚本创建表并将数据插入其中。但是,只有我能看到创建的表。我的团队成员无法查看他们。我该如何更改?
我可以包括哪些Python语句来授予所有人访问权限?我正在使用“ vertica_python”和“ sqlalchemy”通过Python连接到数据库。
答案 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脚本中的sqlalchemy处理它(请注意this question):
sSQL = "my sql grant statement(s)"
with oSuperEngine.begin() as conn:
conn.execute(sSQL)
conn.execute("COMMIT")