我在PostgreSQL中遇到了一个非常恼人的角色继承问题。根据文档,它根本没有按照应有的方式运行。
我希望拥有一个主角色,并授予新创建的用户其权限。这些用户应该自动继承权限,而不需要手动发出SET ROLE
命令。
CREATE ROLE testrole NOSUPERUSER INHERIT CREATEDB NOCREATEROLE;
CREATE ROLE testuser LOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE;
GRANT testrole TO testuser;
现在当我以testuser
身份连接后,我得到以下结果:
postgres=> CREATE DATABASE foobar;
ERROR: permission denied to create database
postgres=> SET ROLE testrole;
SET
postgres=> CREATE DATABASE foobar;
CREATE DATABASE
根据上面链接中的文档(由于使用了INHERIT选项),SET ROLE
应该不是必需的。我在这里错过了什么?