Google Cloud中PostgreSQL导入报错:需为postgres角色成员
解决Cloud SQL导入时"must be member of role 'postgres'"报错问题
问题原因
报错语句ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public GRANT SELECT ON TABLES TO user1;要求执行该语句的数据库用户必须是postgres角色的成员——只有拥有postgres角色权限的用户,才能修改postgres角色的默认权限设置。
解决方案
你需要将执行导入操作的数据库用户添加为postgres角色的成员,步骤如下:
- 通过Cloud Console的SQL Shell或本地psql客户端,连接到你的Cloud SQL实例的
postgres数据库。 - 执行以下SQL命令(将
[导入用户]替换为你实际用来执行导入的用户,比如你重建的user1):
GRANT postgres TO [导入用户];
- 重新运行你的gcloud导入命令:
gcloud sql import sql db1 gs://mybucket/sqldumpfile.gz --database=mydb1
补充说明
如果不确定导入用的是哪个用户:
- 若你在gcloud命令中未指定
--user参数,默认会使用Cloud SQL实例的超级用户postgres,此时直接将目标用户(比如user1)添加为postgres角色成员即可; - 若你指定了自定义用户执行导入,就把该自定义用户添加为
postgres角色成员。
内容的提问来源于stack exchange,提问作者OlgaPp
相关产品推荐
相关产品推荐

