Azure PostgreSQL灵活服务器:如何创建全权限管理员用户
解决Azure Database for PostgreSQL灵活服务器中管理员用户无法访问普通用户创建对象的问题
azure_pg_admin角色虽然是Azure PostgreSQL提供的高权限角色,但普通用户创建的数据库对象(表、函数、序列等)默认仅对创建者开放权限,不会自动赋予该角色。要让test_admin拥有所有对象的全量操作权限,需要补充配置现有对象权限和未来对象的默认权限:
1. 授予数据库和模式的基础权限
先切换到目标业务数据库,执行以下SQL(替换your_database_name和自定义模式名称):
-- 授予数据库全权限 GRANT ALL ON DATABASE your_database_name TO test_admin; -- 授予public模式的使用和创建权限 GRANT USAGE, CREATE ON SCHEMA public TO test_admin; -- 若有自定义模式,执行对应授权 GRANT USAGE, CREATE ON SCHEMA your_custom_schema TO test_admin;
2. 批量授权现有对象
对已经存在的表、函数、序列等对象,批量赋予test_admin全权限:
-- 处理public模式下的现有对象 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO test_admin; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO test_admin; GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO test_admin; -- 自定义模式同理替换public GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA your_custom_schema TO test_admin; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA your_custom_schema TO test_admin; GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA your_custom_schema TO test_admin;
3. 配置未来对象的默认权限
确保之后普通用户创建的对象自动对test_admin开放权限,设置模式的默认权限规则:
-- 针对public模式配置未来对象的默认权限 ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO test_admin; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO test_admin; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO test_admin; -- 自定义模式同理 ALTER DEFAULT PRIVILEGES IN SCHEMA your_custom_schema GRANT ALL PRIVILEGES ON TABLES TO test_admin; ALTER DEFAULT PRIVILEGES IN SCHEMA your_custom_schema GRANT ALL PRIVILEGES ON SEQUENCES TO test_admin; ALTER DEFAULT PRIVILEGES IN SCHEMA your_custom_schema GRANT ALL PRIVILEGES ON FUNCTIONS TO test_admin;
执行完以上步骤后,test_admin就能对所有模式下的新旧对象执行DDL、查询、修改等全量操作了。
内容的提问来源于stack exchange,提问作者Tomer Stein
相关产品推荐
相关产品推荐

