在 PostgreSQL 中创建管理员用户
Creating admin user in PostgreSQL
我正在尝试在 PostgreSQL 中创建一个管理员 role/user,它应该满足以下要求:
- 应该能够为特定数据库做备份(而不是
其他)
- 应该能够创建可以访问
特定的数据库(而不是其他)。
- 应该能够 create/delete 特定数据库中的表而不是其他数据库中的表
- 应该无法创建其他数据库。
这是我目前拥有的:
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
权限。
不要授予新用户对其他数据库或其中对象的任何权限。
我正在尝试在 PostgreSQL 中创建一个管理员 role/user,它应该满足以下要求:
- 应该能够为特定数据库做备份(而不是 其他)
- 应该能够创建可以访问 特定的数据库(而不是其他)。
- 应该能够 create/delete 特定数据库中的表而不是其他数据库中的表
- 应该无法创建其他数据库。
这是我目前拥有的:
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
权限。不要授予新用户对其他数据库或其中对象的任何权限。