【问题标题】:What is the complete list of privileges a role needs in order to create a table in a schema?为了在模式中创建表,角色需要的完整权限列表是什么?
【发布时间】:2021-08-24 17:07:55
【问题描述】:

我已授予架构和数据库的 USAGE 权限。 我已授予对所有表的选择权限。

使用该角色,我可以从任何架构中的所有表中读取数据。

然后我授予在该数据库内的所有模式中创建表的权限

GRANT CREATE TABLE ON ALL SCHEMAS IN DATABASE TEST1_CONTROL TO DEVELOPERS;

然而,当我发出这个命令时(使用 DEVELOPERS 角色),我得到一个错误

CREATE TABLE PDS.ERIC_TEST_TABLE(COUCOU STRING NULL);

我错过了什么?

【问题讨论】:

  • 发出GRANT CREATE TABLE ON ALL SCHEMAS IN DATABASE TEST1_CONTROL TO DEVELOPERS; 时是否存在架构PDS?
  • 有可能后来创建了模式 PDS。 SHOW GRANTS TO ROLE DEVELOPERS
  • 是的,该架构之前确实存在。事实上,我似乎已经通过在模式 PDS 上向 DEVELOPERS 发出 grant create table 来解决这个特定问题;奇怪...

标签: snowflake-cloud-data-platform


【解决方案1】:

对我来说很好用(下面的脚本)。同意 Lukasz 评论的内容,并且您的架构是稍后创建的。

use role accountadmin;
create database TEST1_CONTROL;
create schema PDS;
create role DEVELOPERS;
grant role DEVELOPERS to user <your_username>;
GRANT USAGE ON DATABASE TEST1_CONTROL TO DEVELOPERS;
GRANT USAGE ON ALL SCHEMAS IN DATABASE TEST1_CONTROL TO DEVELOPERS;
GRANT CREATE TABLE ON ALL SCHEMAS IN DATABASE TEST1_CONTROL TO DEVELOPERS;
use role DEVELOPERS;
CREATE TABLE PDS.ERIC_TEST_TABLE(COUCOU STRING NULL);

如果您希望某个角色能够访问将来创建的任何新架构,Snowflake 确实会提供 future 授权。

【讨论】:

  • 我不知道该说什么...在我的“GRANT CREATE TABLE ON DATABASE TEST1_CONTROL TO DEVELOPERS;”之前,该架构确实存在然而,当我(后来)针对该特定架构颁发授权时,它才开始起作用......
  • 我刚刚使用存储过程权限进行了类似的测试,这次它按预期工作......“将数据库 TEST1_CONTROL 中所有模式的创建过程授予开发人员;”我可以立即创建我的存储过程,仍然在 PDS 模式中。我不得不假设我犯了一些基本错误......
  • 感谢您的确认,埃里克。我们可能会将其视为奇怪的一次性或像您所说的用户错误。很高兴它现在可以工作了。
猜你喜欢
  • 1970-01-01
  • 2019-11-16
  • 2021-12-23
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
相关资源
最近更新 更多