通过将一个角色授予另一个角色来继承角色是行不通的
Role inheritance by granting one role to another does not work
DROP OWNED BY user_a;
DROP ROLE IF EXISTS user_a;
CREATE ROLE user_a WITH
NOSUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
PASSWORD '***'
;
GRANT USAGE ON SCHEMA myschema TO user_a;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO user_a;
DROP ROLE IF EXISTS user_b;
CREATE ROLE user_b WITH
LOGIN
NOSUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
PASSWORD '***';
GRANT user_a TO user_b WITH ADMIN OPTION;
执行此代码,我希望 user_b 在 myschema 中的所有表上都有 select,但他没有。我忘记了什么?
我经过大量研究发现:user_b 拥有 user_a 的权限,但我的数据库客户端 DBeaver 不会显示该权限。这只是DBeaver的一个显示错误。
DROP OWNED BY user_a;
DROP ROLE IF EXISTS user_a;
CREATE ROLE user_a WITH
NOSUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
PASSWORD '***'
;
GRANT USAGE ON SCHEMA myschema TO user_a;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO user_a;
DROP ROLE IF EXISTS user_b;
CREATE ROLE user_b WITH
LOGIN
NOSUPERUSER
INHERIT
NOCREATEDB
NOCREATEROLE
NOREPLICATION
PASSWORD '***';
GRANT user_a TO user_b WITH ADMIN OPTION;
执行此代码,我希望 user_b 在 myschema 中的所有表上都有 select,但他没有。我忘记了什么?
我经过大量研究发现:user_b 拥有 user_a 的权限,但我的数据库客户端 DBeaver 不会显示该权限。这只是DBeaver的一个显示错误。