You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP创建的Postgres用户默认特权及指定库管理员权限配置问题

GCP Cloud SQL Postgres用户权限调整操作步骤

默认GCP Cloud SQL创建的Postgres用户会自动加入cloudsqlsuperuser角色组,该角色自带实例级的创建角色、创建数据库权限,因此你看到的myuser确实属于高权限账号,你可以按照以下步骤调整为仅针对mydatabase的管理员权限:

步骤1:回收实例级高权限

使用实例默认的postgres高权限账号登录psql,执行以下命令移除myuser的超额权限:

-- 移除cloudsqlsuperuser角色归属
REVOKE cloudsqlsuperuser FROM myuser;
-- 移除实例级的创建角色、创建数据库权限
ALTER ROLE myuser NOCREATEROLE NOCREATEDB;

步骤2:授予mydatabase专属管理员权限

保持高权限账号登录状态,切换到mydatabase执行以下授权命令:

-- 切换到目标数据库
\c mydatabase

-- 可选:将数据库所有者改为myuser,获得最高库级控制权
ALTER DATABASE mydatabase OWNER TO myuser;

-- 授予数据库全量操作权限
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

-- 授予public schema全量权限
GRANT ALL PRIVILEGES ON SCHEMA public TO myuser;

-- 授予schema下现有所有对象的全量权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myuser;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO myuser;

-- 配置默认权限,后续新建对象自动给myuser授权
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO myuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO myuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO myuser;

步骤3:权限验证

切换为myuser登录psql,验证权限符合预期:

  • 执行CREATE DATABASE test_db会报权限不足错误,确认无实例级建库权限
  • 执行\c other_database会报权限不足错误,确认无法访问其他数据库
  • 在mydatabase中执行建表、删表、数据增删改查、权限分配操作均正常,确认库级管理员权限生效

补充说明(Terraform配置优化)

如果要避免后续Terraform执行apply时恢复myuser的高权限,可在google_sql_user资源中添加roles = []参数,显式指定不给用户绑定默认的cloudsqlsuperuser角色。


内容的提问来源于stack exchange,提问作者user389955

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:18:04