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
您还需要将
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;