Cloud SQL Postgres新建用户查询表权限拒绝问题咨询
Cloud SQL Postgres 内置用户权限问题解决方案
首先明确:Cloud SQL中带cloudsqlsuperuser角色的内置认证用户,默认仅拥有实例级的管理权限(比如创建数据库、用户),但不会自动获得现有数据库对象(表、视图等)的访问权限——这些权限默认归对象所有者(通常是postgres用户)所有。
针对你的情况,分两种场景处理:
1. 目标数据库由你创建
如果要查询的表位于你自己创建的数据库中,你可以直接通过当前用户执行以下命令授权:
- 授予数据库级基础权限:
GRANT ALL PRIVILEGES ON DATABASE your_database_name TO your_new_user; - 授予public schema下所有现有表的SELECT权限:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO your_new_user; - 配置默认权限,确保未来新建的表自动拥有SELECT权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO your_new_user;
2. 目标数据库/表由其他用户创建
如果要访问的表属于系统数据库(比如postgres、template1)或者其他用户创建的数据库,没有postgres用户权限的话,你无法自行获取这些对象的权限——因为只有对象所有者或拥有GRANT OPTION权限的用户才能为其他用户授权。这种情况下,你需要联系拥有postgres权限的管理员为你分配对应表的SELECT权限。
内容的提问来源于stack exchange,提问作者user20719
相关产品推荐
相关产品推荐

