database - 由于雪花中的权限,无法克隆数据库
问题描述
创建了一个名为 DEV_USER 的用户,属于角色 DEV_ROLE。
GRANT USAGE ON WAREHOUSE MYWH TO ROLE DEV_ROLE;
CREATE USER DEV_USER PASSWORD = 'secrets' COMMENT = 'Dev User' LOGIN_NAME = 'DEV_USER' DISPLAY_NAME = 'Development Only User' DEFAULT_ROLE = 'DEV_ROLE' DEFAULT_WAREHOUSE = 'MYWH' MUST_CHANGE_PASSWORD = FALSE;
ALTER USER DEV_USER SET DEFAULT_NAMESPACE = 'PUBLIC';
GRANT ROLE DEV_ROLE TO USER DEV_USER;
GRANT ROLE DEV_ROLE TO USER MYUSERACCT;
GRANT ALL ON DATABASE DEV_DB TO ROLE DEV_ROLE WITH GRANT OPTION;
GRANT ALL ON DATABASE "DEV_DB" TO ROLE "DEV_ROLE" WITH GRANT OPTION;
GRANT ALL ON SCHEMA "DEV_DB"."PUBLIC" TO ROLE "DEV_ROLE" WITH GRANT OPTION;
我使用 MYUSERACCT 登录。我默认为 DEV_ROLE。我去 DATABASES 并尝试将 DEV_DB 克隆到 DEV_DB_CLONE 但收到以下错误:
无法创建数据库 DEV_DB_CLONE。SQL 访问控制错误:权限不足,无法对帐户 'XX12345' 进行操作
显然,如果我将用户设置为 SYSADMIN 或 ACCOUNTADMIN,它将起作用。但是当我设置为 DEV_ROLE 时,我需要它来克隆。
我错过了什么?
解决方案
安全访问控制权限说克隆你需要CREATE DATABASE
通过角色的全局权限
CREATE USER DEV_USER1 PASSWORD = 'secrets' COMMENT = 'Dev User' LOGIN_NAME = 'DEV_USER' DISPLAY_NAME = 'Development Only User';
CREATE ROLE CLONE_ROLE;
GRANT CREATE DATABASE ON ACCOUNT TO ROLE CLONE_ROLE;
GRANT ROLE CLONE_ROLE TO USER DEV_USER1;
DROP USER DEV_USER1;
DROP ROLE CLONE_ROLE;
推荐阅读
- .net-core - NET Core:使用 HttpGet 进行过滤
- java - 用 x 方块在石头周围画出轮廓以区分它们
- angular - angular 12 子组件如何将输入值传递给父组件?
- javascript - 将 Javascript 代码从全局变量转移到类
- cuda - 使用终端/IDE 运行 cuda 文件
- algorithm - 检查是否可以根据学生的喜好将学生分配到班级的算法
- angular - 赛普拉斯:通过赛普拉斯检查复选框时按钮不可见
- java - 为什么课程无法访问?
- python - 我想根据城市列创建一个新的列域
- node.js - 如何使用 iAM 身份验证向 AWS 公开的端点发出请求?