介绍内置的 Azure Database for PostgreSQL 服务器角色
PostgreSQL 使用角色管理数据库访问。 角色可以是数据库用户或用户组。 角色可以:
- 拥有数据库对象,例如表或函数。
- 将这些对象的特权分配给其他角色。
- 向另一个角色授予成员身份,允许成员角色具有其特权。
Azure Database for PostgreSQL 服务器是使用三个默认角色创建的:
- azure_pg_admin
- azuresu
- 您的服务器管理员用户 - 属于 azure_pg_admin 角色
通过执行以下查询查看所有服务器角色:
SELECT * FROM pg_roles;
注意
Azure Database for PostgreSQL 是托管的 PaaS 服务,只有Microsoft用户具有 azuresu(超级用户)角色。
创建服务器时,还会创建服务器管理员用户。 此用户自动成为 azure_pg_admin 角色的成员。 Azure Database for PostgreSQL 服务器管理员用户具有以下权限:LOGIN、NOSUPERUSER、INHERIT、CREATEDB、CREATEROLE、REPLICATION
现在,创建服务器时创建的服务器管理员用户帐户可以:
- 创建更多用户并赋予这些用户 azure_pg_admin 角色权限。
- 创建特权较低的用户和角色,这些用户和角色有权访问各个数据库和架构。
PostgreSQL 包括一些可分配给用户的默认角色。 其中包括常用的访问权限,
- pg_read_all_settings
- pg_signal_backend
- pg_read_server_files (读取服务器文件权限)
- pg_write_server_files(服务器文件写入权限)
- pg_execute_server_program(执行服务器程序)
还有更多专家角色:
- pg_monitor
- pg_read_all_stats
- pg_stat_scan_tables
- 复制
在 Azure Database for PostgreSQL 中创建管理员用户
- 在 Azure Data Studio(或首选客户端工具)中,使用管理员登录凭据连接到 Azure Database for PostgreSQL 服务器。
- 通过将占位符替换为用户名和密码,编辑以下 SQL 代码:
CREATE ROLE <new_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
GRANT azure_pg_admin TO <new_user>;