在PostgreSQL中创建管理员用户

时间:2018-12-19 09:08:01

标签: postgresql database-administration database-permissions

我正在尝试在PostgreSQL中创建一个管理员角色/用户,该管理员角色/用户应满足以下要求:

  1. 应该能够为特定数据库进行备份(而不是 其他)
  2. 应该能够创建可以访问 特定的数据库(而不是其他数据库)。
  3. 应该能够在特定数据库而不是其他数据库中创建/删除表
  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;

请告知如何修改以上代码以满足要求。

1 个答案:

答案 0 :(得分:1)

要实现这一点,请执行以下修改:

  • 将数据库及其所有架构和对象的所有权转让给新用户。

  • 给用户CREATEROLE

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

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