本文介绍如何在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 中创建更多管理员用户
获取连接信息和管理员用户名。 需要完整的服务器名称和管理员登录凭据才能连接到Azure Database for PostgreSQL灵活服务器。 可以轻松地在 Azure 门户中的服务器 “概述 ”页或 “属性 ”页中找到服务器名称和登录信息。
使用管理员帐户和密码连接到Azure Database for PostgreSQL灵活服务器。 使用首选客户端工具,例如 pgAdmin 或 psql。 如果不确定如何连接,请参阅 “创建 Azure Database for PostgreSQL”。
编辑并运行以下 SQL 代码。 将新用户名替换为占位符值
<new_user>,并将占位符密码替换为你自己的强密码。CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>'; GRANT azure_pg_admin TO <new_user>;
如何在 Azure Database for PostgreSQL 中创建数据库用户
获取连接信息和管理员用户名。 需要完整的服务器名称和管理员登录凭据才能连接到Azure Database for PostgreSQL灵活服务器。 可以轻松地在 Azure 门户中的服务器 “概述 ”页或 “属性 ”页中找到服务器名称和登录信息。
使用管理员帐户和密码连接到Azure Database for PostgreSQL灵活服务器。 使用首选客户端工具,例如 pgAdmin 或 psql。
编辑并运行以下 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>;使用管理员帐户时,可能需要授予其他权限来保护数据库中的对象。 有关数据库角色和特权的更多详细信息,请参阅 PostgreSQL 文档 。 例如:
GRANT ALL PRIVILEGES ON DATABASE <newdb> TO <db_user>;如果用户创建了名为 "role" 的表,则该表属于该用户。 如果另一个用户需要访问该表,则必须向表级别的其他用户授予权限。
例如:
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;使用新的用户名和密码登录到您的服务器,并指定相应的数据库。 此示例显示了 psql 命令行。 使用此命令,系统会提示输入用户名的密码。 替换自己的服务器名称、数据库名称和用户名。
psql --host=mydemoserver.postgres.database.chinacloudapi.cn --port=5432 --username=db_user --dbname=newdb