在 Azure Database for PostgreSQL - 单一服务器中创建用户

适用于:Azure Database for PostgreSQL 单一服务器

重要

Azure Database for PostgreSQL - 单一服务器即将停用。 强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL - 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器会发生什么情况?

本文介绍了如何在 Azure Database for PostgreSQL 服务器中创建用户。

如果想要了解如何创建和管理 Azure 订阅用户及其权限,可以访问“Azure 基于角色的访问控制 (Azure RBAC)”一文或查看如何自定义角色

服务器管理员帐户

首次创建 Azure Database for PostgreSQL 时,需要提供服务器管理员登录用户名和密码。 有关详细信息,可以参考快速入门来查看分步方法。 由于服务器管理员用户名是自定义名称,因此可以从 Azure 门户中找到所选的服务器管理员用户名。

创建 Azure Database for PostgreSQL 服务器时会创建所定义的 3 个默认角色。 可以运行以下命令来查看这些角色:SELECT rolname FROM pg_roles;

  • azure_pg_admin
  • azure_superuser
  • 服务器管理员用户

服务器管理员用户是 azure_pg_admin 角色的成员。 但是,服务器管理员帐户不是 azure_superuser 角色的一部分。 由于此服务是托管的 PaaS 服务,因此只有 Microsoft 是超级用户角色的一部分。

PostgreSQL 引擎使用权限来控制对数据库对象的访问权限,如 PostgreSQL 产品文档中所述。 在 Azure Database for PostgreSQL 中,向服务器管理员用户授予了以下权限:LOGIN、NOSUPERUSER、INHERIT、CREATEDB、CREATEROLE、REPLICATION

可以使用服务器管理员用户帐户创建其他用户并向这些用户授予 azure_pg_admin 角色。 此外,还可以使用服务器管理员帐户创建只能访问各个数据库和架构的权限较低的用户和角色。

如何在 Azure Database for PostgreSQL 中创建其他管理员用户

  1. 获取连接信息和管理员用户名。 若要连接到数据库服务器,需提供完整的服务器名称和管理员登录凭据。 你可以在 Azure 门户的服务器“概述”页或“属性”页中轻松找到服务器名称和登录信息。

  2. 使用管理员帐户和密码连接到你的数据库服务器。 使用你喜欢的客户端工具,例如 pgAdmin 或 psql。 如果不确定如何连接,请参阅快速入门

  3. 编辑并运行下面的 SQL 代码。 将占位符值 <new_user> 替换为新用户名,将占位符密码替换为你自己的强密码。

    CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>';
    
    GRANT azure_pg_admin TO <new_user>;
    

如何在 Azure Database for PostgreSQL 中创建数据库用户

  1. 获取连接信息和管理员用户名。 若要连接到数据库服务器,需提供完整的服务器名称和管理员登录凭据。 你可以在 Azure 门户的服务器“概述”页或“属性”页中轻松找到服务器名称和登录信息。

  2. 使用管理员帐户和密码连接到你的数据库服务器。 使用你喜欢的客户端工具,例如 pgAdmin 或 psql。

  3. 编辑并运行下面的 SQL 代码。 将占位符值 <db_user> 替换为预期的新用户名,并将占位符值 <newdb> 替换为你自己的数据库名称。 将占位符密码替换为你自己的强密码。

    为了举例说明,此 sql 代码语法将创建一个名为 testdb 的新数据库。 然后,它在 PostgreSQL 服务中创建一个新用户,并向该用户授予对新数据库的连接权限。

    CREATE DATABASE <newdb>;
    
    CREATE USER <db_user> PASSWORD '<StrongPassword!>';
    
    GRANT CONNECT ON DATABASE <newdb> TO <db_user>;
    
  4. 使用管理员帐户,你可能需要授予其他权限来保护数据库中的对象。 有关数据库角色和权限的进一步详细信息,请参阅 PostgreSQL 文档。 例如:

    GRANT ALL PRIVILEGES ON DATABASE <newdb> TO <db_user>;
    

    如果用户创建表“角色”,则此表属于该用户。 如果其他用户需要访问该表,则你必须在表级别向其他用户授予权限。

    例如:

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    
  5. 指定选定的数据库并使用新用户名和密码,登录到服务器。 此示例显示了 psql 命令行。 使用此命令,会提示你输入用户名的密码。 替换你自己的服务器名称、数据库名称和用户名。

    psql --host=mydemoserver.postgres.database.chinacloudapi.cn --port=5432 --username=db_user@mydemoserver --dbname=newdb
    

后续步骤

针对新用户计算机的 IP 地址打开防火墙,使其能够连接:使用 Azure 门户Azure CLI 创建和管理 Azure Database for PostgreSQL 防火墙规则

有关用户帐户管理的详细信息,请参阅 PostgreSQL 产品文档来了解数据库角色和权限GRANT 语法权限