我们使用Azure Database for PostgreSQL灵活服务器。我的要求是创建管理员用户,应该能够在整个数据库中的任何模式中的任何表(DDL/Alter等),无论哪个用户创建了该表,函数,过程或序列等。
我尝试根据Azure Docs创建管理员用户:
您的服务器管理员用户是azure_pg_admin角色的成员。但是,服务器管理员帐户不是azure_superuser角色的一部分。由于此服务是托管PaaS服务,因此只有Microsoft是超级用户角色的一部分。
CREATE USER <new_user> CREATEDB CREATEROLE PASSWORD '<StrongPassword!>';
GRANT azure_pg_admin TO <new_user>;
我创建了一个名为test_admin
的用户,并按照文档所述授予其azure_pg_admin
角色。使用另一个普通用户,我登录并创建了一个表,test_admin
无法查询它,并得到以下错误:
permission denied for table
即使test_admin
有azure_pg_admin
。
有人能帮我吗?
1条答案
按热度按时间brjng4g31#
根据MS Document
admin用户是您在服务器上拥有的最高权限用户。它属于azure_pg_admin角色。此角色没有完全超级用户权限。
AFAIK,它不具有对所有架构中的所有表执行所有操作所需的所有权限,因此
azure_pg_admin
角色不可用。要查询每个模式或aver数据库中的任何表,您需要显式地提供它。它是Azure Database for PostgreSQL中的内置角色,提供管理服务器的管理权限。授予权限的psql命令: