snowflake-cloud-data-platform - 雪花用户的默认角色不存在

标签 snowflake-cloud-data-platform

我希望使用以下脚本创建一个可供单个用户访问的数据库:

USE ROLE ACCOUNTADMIN;
CREATE DATABASE db;
USE DATABASE db;
CREATE WAREHOUSE wh
    WAREHOUSE_SIZE = SMALL
    ;
CREATE ROLE new_role;
GRANT USAGE ON DATABASE db TO ROLE new_role;
GRANT CREATE SCHEMA ON DATABASE db TO ROLE new_role;
GRANT ALL ON SCHEMA db.PUBLIC TO ROLE new_role;
CREATE or replace USER new_user PASSWORD='' DEFAULT_ROLE = 'new_role' DEFAULT_WAREHOUSE='wh';
GRANT ROLE new_role TO USER new_user;
GRANT ALL ON WAREHOUSE wh TO new_role;

尝试使用新创建的用户登录时,或从 另一个服务,我看到以下错误:

User's configured default role 'new_role' does not exist or not authorized. Contact your local system administrator, or attempt to login using a CLI client with a connect string selecting another

将默认角色设置为 PUBLIC 允许我从 Snowflake 门户网站登录。然后我可以选择所需的角色并按预期导航。第三方连接无法访问任何新创建的对象,可能是因为它没有尝试切换角色。

允许为我的新用户设置默认角色缺少什么?

最佳答案

您应该删除角色名称周围的引号:DEFAULT_ROLE = new_role

ROLE 名称​​区分大小写,语法类似于列名:
COL_NAMEcol_name"COL_NAME"是一样的,但"col_name"不同,即。小写。

我建议您不要引用此类标识符,并让系统隐式地将任何大小写的引用转换为大写。这是大多数人所做的。

所有这些设置DEFAULT_ROLE的方式都是有效且相等的:

ALTER USER u SET DEFAULT_ROLE = NEW_ROLE;
ALTER USER u SET DEFAULT_ROLE = new_role;
ALTER USER u SET DEFAULT_ROLE = "NEW_ROLE";
ALTER USER u SET DEFAULT_ROLE = 'NEW_ROLE';

以下内容与上面不同,因为 ROLE 名称区分大小写:

ALTER USER u SET DEFAULT_ROLE = 'new_role';
ALTER USER u SET DEFAULT_ROLE = "new_role";

DEFAULT_ROLE 只是一个文本属性,可以设置为 anything,例如。不存在的角色或未授予用户的角色。两者都会在登录时产生错误。

使用以下命令查看有效的 DEFAULT_ROLE 设置的确切名称:

DESC USER u;

注意:DEFAULT_ROLE 设置不是角色授予!
您还需要使用 GRANT ROLE r TO USER u

关于snowflake-cloud-data-platform - 雪花用户的默认角色不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847813/

相关文章:

snowflake-cloud-data-platform - 如何计算 Snowflake 数据库变体字段中顶级 json 键的数量?

database - 雪花云数据仓库如何导出数据到本地?

sql - 基于一列具有唯一值的频率的缺乏而对一列进行不同计数

python - 对于现有 UDF,雪花 UDF 返回 "Unknown user-defined function"

snowflake-cloud-data-platform - 从另一个 View 创建 View 是否有任何惩罚?

snowflake-cloud-data-platform - 如何增加雪花中的可变大小限制?

sql - 如何使用自动增量列在 Snowflake 中创建 View

sql - 将字段值从 1,000 转换为数字

sql - 雪花-sql : case when min vs first_value windows function

snowflake-cloud-data-platform - 哪个角色可以访问 Snowflake 中的哪些表