在 PostgreSQL 中创建管理员用户

Creating admin user in PostgreSQL

我正在尝试在 PostgreSQL 中创建一个管理员 role/user,它应该满足以下要求:

  1. 应该能够为特定数据库做备份(而不是 其他)
  2. 应该能够创建可以访问 特定的数据库(而不是其他)。
  3. 应该能够 create/delete 特定数据库中的表而不是其他数据库中的表
  4. 应该无法创建其他数据库。

这是我目前拥有的:

create role dba with nosuperuser createdb createrole nologin replication bypassrls;
grant usage on schema public to dba;
alter default privileges in schema public grant all on tables to dba;
alter default privileges in schema public grant all on sequences to dba;
grant connect on database myDatabase to dba;
grant usage on schema public to dba; 
grant select on all tables in schema public to dba; 
grant select on all sequences in schema public to dba;
grant all privileges on all tables in schema public to dba;
create user dba_user login inherit encrypted password 'password' in role dba;

请指教如何修改以上代码以满足要求。

为此,请执行以下修改:

  • 将数据库及其中所有模式和对象的所有权转移给新用户。

  • 给用户CREATEROLE.

  • 确保 REVOKE CONNECT ON 所有数据库 FROM PUBLIC。授予新用户对相关数据库的 CONNECT 权限。

  • 不要授予新用户对其他数据库或其中对象的任何权限。