首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >授予使用Python的每个人对Vertica SQL表的访问权限

授予使用Python的每个人对Vertica SQL表的访问权限
EN

Stack Overflow用户
提问于 2019-01-31 19:13:13
回答 2查看 921关注 0票数 1

我使用Python脚本创建表并将数据插入其中。但是,只有我能够看到创建的表。我的团队成员看不见他们。我该怎么改变这个?

我可以包含哪些Python语句来授予每个人访问权限?我使用'vertica_python‘和'sqlalchemy’通过Python连接到数据库。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-31 19:56:58

授予特权的语法是(请参阅赠款(表)):

代码语言:javascript
复制
GRANT SELECT ON TABLE <schema>.<table> TO <user>;

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

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

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

代码语言:javascript
复制
GRANT USAGE ON SCHEMA <schema> to <user>;

但是,如果这些表都在同一个架构中,则可以将特权授予架构级别上的用户。要做到这一点,首先您必须启用模式继承。然后将模式上的权限授予用户。这样,您就不需要在创建表时一直对表授予特权。

代码语言:javascript
复制
GRANT USAGE, SELECT ON SCHEMA <schema> TO <user>;
票数 2
EN

Stack Overflow用户

发布于 2019-01-31 20:01:30

要授予权限(如select权限),要求您首先具有此类权限。

根据Vertica的网站,授予能力需要:

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

伪解

取决于谁需要访问,您可以使用用户名、角色或公共(all)。

下面是一些示例语句--因为我自己还没有完成vertica的工作,所以我不能测试这个

代码语言:javascript
复制
GRANT SELECT on all tables in schema myschema TO [user/role/PUBLIC] WITH GRANT OPTION; 
GRANT PRIVILEGE

代码语言:javascript
复制
GRANT SELECT on schema.TABLENAME TO [user/role/PUBLIC] WITH GRANT OPTION; 
GRANT PRIVILEGE

它还可能需要在架构上使用GRANT。

用Python处理请求

并在python脚本中通过sqlalchemy处理它(请参阅这个问题中的注意事项):

代码语言:javascript
复制
sSQL = "my sql grant statement(s)"
with oSuperEngine.begin() as conn:
    conn.execute(sSQL)
    conn.execute("COMMIT")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54467723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档