【问题标题】:How can i give grant access to specific user-role for a frquently dropped and created table in Vertica?如何授予对 Vertica 中频繁删除和创建的表的特定用户角色的访问权限?
【发布时间】:2015-10-06 19:42:05
【问题描述】:

我有一个经常被删除并在模式中使用相同名称创建的表。在 Vertica 中创建表时,如何创建对用户角色的授予访问权限?

P.S:这个问题是 vertica 特有的,但欢迎所有想法。业务需求也下降了,我们甚至无法截断表格并清除数据。

【问题讨论】:

  • 为什么不自动化呢?
  • 告诉业务人员将他们的需求排除在技术领域之外。 :-) 我很难想象为什么不允许TRUNCATE TABLE

标签: sql vertica


【解决方案1】:

不幸的是,Vertica 不支持可以对数据库中的任何表或视图运行 SELECT 语句的固定角色(例如 SQL Server db_datareader 角色)。 因此,根据您创建对象的方式(DBA 创建、工作流或任何 ETL 工具),您需要自动执行此操作。 您可以创建一个 UDP 来为您执行此操作,只需在您的工作、脚本、工作流程中调用 UDP。 您还可以创建一个 UDP 来提取实际授权、访问对象并将其存储在临时文件中以便在对象重新创建后执行。

但问题是?需要重新创建表吗?这个有什么用?也许有更好的解决方案! 还有@Kermit,你必须停止投票!

【讨论】:

    【解决方案2】:

    您必须在重新创建表时分步进行。

    1) 根据现有授权生成 GRANT 脚本。 (您需要更改它以匹配您处理授权的方式)

    select 'GRANT ' || privileges_description || ' ON ' || object_schema || '.' || object_name || ' TO ' || grantee || ';' from grants
    where object_schema = 'MYSCHEMA' object_name = 'MYTABLE'
    and grantee ilike 'role%';
    

    2) 像旧表一样创建新表(请务必保存您的预测!)

    CREATE TABLE MYSCHEMA.NEW_MYTABLE LIKE MYSCHEMA.MYTABLE INCLUDING PROJECTIONS;
    

    3) 删除旧表

    DROP TABLE MYSCHEMA.MYTABLE;
    

    4) 重命名新表

    ALTER TABLE MYSCHEMA.NEW_MYTABLE RENAME TO MYTABLE;
    

    5) 应用生成的授权

    GRANT ROLE_MYROLE TO MYSCHEMA.MYTABLE;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 2021-10-16
      • 2020-02-01
      • 2021-02-25
      • 2021-05-12
      • 1970-01-01
      相关资源
      最近更新 更多