共用方式為

在 Azure Database for PostgreSQL 中管理用户

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

假设你想要了解如何创建和管理 Azure 订阅用户及其特权。 在这种情况下,可以访问 Azure 基于角色的访问控制(Azure RBAC)一文 ,或查看 如何自定义角色

服务器管理员帐户

首次创建 Azure Database for PostgreSQL 灵活服务器实例时,你提供了服务器管理员用户名和密码。 有关详细信息,请参阅 创建 Azure Database for PostgreSQL 灵活服务器 以查看分步方法。 由于服务器管理员用户名是自定义名称,因此可以从 Azure 门户找到所选的服务器管理员用户名。

Azure Database for PostgreSQL 灵活服务器实例是使用定义的三个默认角色创建的。 可以通过运行以下命令来查看这些角色: SELECT rolname FROM pg_roles;

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

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

PostgreSQL 引擎使用特权来控制对数据库对象的访问,如 PostgreSQL 产品文档中所述。 在 Azure Database for PostgreSQL 灵活服务器中,服务器管理员用户被授予以下权限:

  • 登录、NOSUPERUSER、INHERIT、CREATEDB、CREATEROLE

服务器管理员用户帐户可用于创建更多用户,并将这些用户授予azure_pg_admin角色。 此外,服务器管理员帐户还可用于创建特权较低的用户和角色,这些用户和角色有权访问各个数据库和架构。

如何在 Azure Database for PostgreSQL 灵活服务器中创建更多管理员用户

  1. 获取连接信息和管理员用户名。 需要完整的服务器名称和管理员登录凭据才能连接到 Azure Database for PostgreSQL 灵活服务器实例。 可以轻松地在 Azure 门户中的服务器 “概述 ”页或 “属性 ”页中找到服务器名称和登录信息。

  2. 使用管理员帐户和密码连接到 Azure Database for PostgreSQL 灵活服务器实例。 使用首选客户端工具,例如 pgAdmin 或 psql。 如果不确定如何连接,请参阅 创建 Azure Database for PostgreSQL 灵活服务器

  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 Database for PostgreSQL 灵活服务器实例。 可以轻松地在 Azure 门户中的服务器 “概述 ”页或 “属性 ”页中找到服务器名称和登录信息。

  2. 使用管理员帐户和密码连接到 Azure Database for PostgreSQL 灵活服务器实例。 使用首选客户端工具,例如 pgAdmin 或 psql。

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

    下面的 SQL 代码将创建新的数据库,然后在 Azure Database for 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>;
    

    如果用户创建表“role”,该表属于该用户。 如果另一个用户需要访问该表,则必须向表级别的其他用户授予权限。

    例如:

    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 --dbname=newdb