MonetDB中ebi_data用户无法在ebi schema建表的权限问题咨询
问题分析与解决
你的操作存在两个关键问题,导致了权限不足的报错:
1. 默认角色未包含ebi_reader
你创建ebi_data用户时指定了DEFAULT ROLE "ebi_writer",这意味着用户登录后只会自动激活ebi_writer角色。虽然你给该用户授予了ebi_reader角色,但这个角色默认不会被启用,因此ebi_reader对应的schema权限无法生效。
2. ebi_reader角色缺少显式建表权限
虽然你将ebi schema的所有权赋予了ebi_reader角色,但MonetDB中角色默认不会自动拥有该schema的DDL(建表等)权限,需要显式授予。
解决步骤
步骤1:修复用户角色激活问题(二选一)
方式A:修改用户默认角色,同时激活两个角色
以管理员身份执行:
ALTER USER "ebi_data" DEFAULT ROLE "ebi_reader", "ebi_writer";
修改后,用户下次登录时会自动启用两个角色的权限。
方式B:登录后手动激活ebi_reader角色
用ebi_data登录数据库后,先执行:
SET ROLE "ebi_reader";
之后再执行建表操作。
步骤2:给ebi_reader角色授予ebi schema的建表权限
以管理员身份执行:
GRANT CREATE TABLE ON SCHEMA "ebi" TO "ebi_reader";
这一步确保ebi_reader角色拥有在ebi schema下创建表的权限。
验证操作
完成上述配置后,用ebi_data登录数据库,执行建表命令:
create table ebi.test_via_ebidata (id int, name varchar(5));
此时应该能成功创建表。
内容的提问来源于stack exchange,提问作者aeaeae
相关产品推荐
相关产品推荐

