monet 数据库用户/角色/数据库/表

问题描述 投票:0回答:1
monetdb create ebi_dwh  
monetdb release ebi_dwh
CREATE ROLE "ebi_reader";
CREATE ROLE "ebi_writer";
CREATE SCHEMA "e_u" AUTHORIZATION reader;
CREATE SCHEMA "ebi_data" AUTHORIZATION ebi_writer;
CREATE USER "ebi" WITH PASSWORD 'pwd' NAME 'data_views user' SCHEMA "ebi" DEFAULT ROLE "ebi_reader";
CREATE USER "ebi_data" WITH PASSWORD 'pwd' NAME 'data_tables user' SCHEMA "ebi_data" DEFAULT ROLE "ebi_writer";
GRANT ebi_reader TO ebi;
GRANT ebi_reader TO ebi_data;
GRANT ebi_writer TO ebi_data;
mclient -u ebi_data -d ebi_dwh
password:
Welcome to mclient, the MonetDB/SQL interactive terminal (Dec2023)
Database: MonetDB v11.49.1 (Dec2023), 'mapi:monetdb://SDV3710EBI08:50000/ebi_dwh'
FOLLOW US on https://twitter.com/MonetDB or https://github.com/MonetDB/MonetDB
Type \q to quit, \? for a list of available commands
auto commit mode: on
sql>create table ebi.test_via_ebidata (id int, name varchar(5));
CREATE TABLE: insufficient privileges for user 'ebi_data' in schema 'ebi'

你好, 我究竟做错了什么?我认为 ebi_data 可以在 ebi 模式中创建表,因为我授予了

GRANT ebi_reader TO ebi_data

我忽略了什么?” 提前谢谢你 Br

我认为 ebi_data 可以在 ebi 模式中创建表,因为我授予了

GRANT ebi_reader TO ebi_data
monetdb
1个回答
0
投票

您还需要将

ebi_data
的角色设置为
ebi_reader

$ mclient -d ebi_dwh -u ebi_data
...
sql>create table ebi.test_via_ebidata (id int, name varchar(5));
CREATE TABLE: insufficient privileges for user 'ebi_data' in schema 'ebi'
sql>set role ebi_reader;
operation successful
sql>create table ebi.test_via_ebidata (id int, name varchar(5));
operation successful

您需要是架构的所有者才能有权创建表。架构

ebi
的所有者是角色
ebi_reader

当用户

ebi_data
登录时,该用户将承担其默认角色
ebi_writer
。要在架构
ebi
中创建表,
ebi_data
需要将其角色切换为
ebi_reader

PS> 我猜您的查询中有一个拼写错误。我把它改成了

CREATE SCHEMA "ebi" AUTHORIZATION ebi_reader;

© www.soinside.com 2019 - 2024. All rights reserved.