向使用 Python 的每个人授予对 Vertica SQL 表的访问权限
Grant access to Vertica SQL Tables to everyone using Python
我正在使用 Python 脚本创建表并将数据插入其中。但是,只有我能够看到创建的表。我的团队成员无法查看它们。我该如何更改?
我可以包含哪些 Python 语句来向所有人授予访问权限?我正在使用 'vertica_python' 和 'sqlalchemy' 通过 Python.
连接到数据库
授予权限的语法是(参见GRANT (Table)):
GRANT SELECT ON TABLE <schema>.<table> TO <user>;
您可以在 table 上授予以下权限:
SELECT
INSERT
UPDATE
DELETE
REFERENCES
TRUNCATE
在授予 table 权限之前,您必须至少授予 table 架构的 USAGE
权限。
GRANT USAGE ON SCHEMA <schema> to <user>;
但是,如果这些 table 都在同一个模式中,您可以在模式级别向用户授予权限。为此,首先您必须 enable schema inheritance。然后将模式的权限授予用户。这样你就不需要在创建 table 时继续授予权限。
GRANT USAGE, SELECT ON SCHEMA <schema> TO <user>;
要授予诸如select特权之类的权限,需要您首先拥有此类权限。
根据 Vertica 的网站,授予 GRANT 的能力需要:
- A superuser can grant privileges on all object types to other users.
- An object owner can grant privileges on the object to other users using the optional WITH GRANT OPTION clause.
伪解
Depending on who needs access,您可以使用用户名、角色或 PUBLIC(全部)。
这里有一些示例语句 - 因为我自己没有使用过 vertica,所以我无法测试这个
GRANT SELECT on all tables in schema myschema TO [user/role/PUBLIC] WITH GRANT OPTION;
GRANT PRIVILEGE
或
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")
我正在使用 Python 脚本创建表并将数据插入其中。但是,只有我能够看到创建的表。我的团队成员无法查看它们。我该如何更改?
我可以包含哪些 Python 语句来向所有人授予访问权限?我正在使用 'vertica_python' 和 'sqlalchemy' 通过 Python.
连接到数据库授予权限的语法是(参见GRANT (Table)):
GRANT SELECT ON TABLE <schema>.<table> TO <user>;
您可以在 table 上授予以下权限:
SELECT
INSERT
UPDATE
DELETE
REFERENCES
TRUNCATE
在授予 table 权限之前,您必须至少授予 table 架构的 USAGE
权限。
GRANT USAGE ON SCHEMA <schema> to <user>;
但是,如果这些 table 都在同一个模式中,您可以在模式级别向用户授予权限。为此,首先您必须 enable schema inheritance。然后将模式的权限授予用户。这样你就不需要在创建 table 时继续授予权限。
GRANT USAGE, SELECT ON SCHEMA <schema> TO <user>;
要授予诸如select特权之类的权限,需要您首先拥有此类权限。
根据 Vertica 的网站,授予 GRANT 的能力需要:
- A superuser can grant privileges on all object types to other users.
- An object owner can grant privileges on the object to other users using the optional WITH GRANT OPTION clause.
伪解
Depending on who needs access,您可以使用用户名、角色或 PUBLIC(全部)。
这里有一些示例语句 - 因为我自己没有使用过 vertica,所以我无法测试这个
GRANT SELECT on all tables in schema myschema TO [user/role/PUBLIC] WITH GRANT OPTION;
GRANT PRIVILEGE
或
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")