gpt4 book ai didi

Postgresql 数据库 super 用户

转载 作者:行者123 更新时间:2023-11-29 12:21:19 26 4
gpt4 key购买 nike

我正在尝试保护由多个模式组成的数据库,如下所示:-

-public
-foo
-bar
-foobar

我想创建一个可以访问任何模式进行读取、可以在 bar 中创建表并且可以在 foo、bar 和 foobar 中插入/更新/删除的用户

我更愿意将用户创建为数据库 super 用户,然后根据需要删除权限。

我想:-

CREATE USER test_superuser;
GRANT ALL on DATABASE test to test_superuser;

会这样做,但在执行这些命令后,test_superuser 无法访问架构。

我如何创建一个拥有 postgres super 用户权限但只能在指定数据库上使用的用户?

最佳答案

原来这需要大量的修补才能实现:-

     CREATE ROLE test_database_superuser
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL '2020-03-06 00:00:00';


CREATE ROLE test_user LOGIN
ENCRYPTED PASSWORD 'md52b250919b406b707999fffb2b9f673fb'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL '2020-03-06 00:00:00';

GRANT test_database_superuser TO test_user;

--DATABASE LEVEL PRIVELEGES
GRANT ALL PRIVILEGES ON DATABASE test to test_database_superuser;

--SCHEMA LEVEL
GRANT ALL ON SCHEMA bar TO GROUP test_database_superuser;
GRANT USAGE ON SCHEMA foo TO GROUP test_database_superuser;
GRANT USAGE ON SCHEMA foobar TO GROUP test_database_superuser;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foo TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA foo TO GROUP test_database_superuser;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA bar TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA bar TO GROUP test_database_superuser;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA foobar TO GROUP test_database_superuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA foobar TO GROUP test_database_superuser;


--PUBLIC
GRANT USAGE ON SCHEMA public TO GROUP test_database_superuser;

关于Postgresql 数据库 super 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22226364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com