Google Cloud SQL PostgreSQL非超级用户如何解决log_min_messages权限问题?
Cloud SQL PostgreSQL 连接时 log_min_messages 权限错误的非超级用户解决方案
用psql 16.3(Postgres.app)连接Cloud SQL PostgreSQL实例时,会碰到FATAL: permission denied to set parameter "log_min_messages"的致命错误——哪怕你已经把该参数设为"info",连接过程还是会尝试修改它触发权限问题。而且Cloud SQL本身有明确限制:
Cloud SQL PostgreSQL是托管服务,因此会限制对某些需要高级权限的系统存储过程和表的访问。在Cloud SQL中,客户无法创建或拥有具备超级用户属性的用户。
以下是无需超级用户权限的解决办法:
强制psql连接时不修改目标参数
直接在连接字符串里指定保持服务器端的log_min_messages设置,避免psql主动修改:psql "postgres://postgres:password@ip/db?options=-c%20log_min_messages=info"或者用命令行参数锁定该值:
psql --set=log_min_messages=info postgres://postgres:password@ip/db注意:如果本地
~/.psqlrc里有自动设置该参数的配置,暂时注释掉,因为它是在连接建立后执行的,没法解决连接阶段的错误。清理本地psql的自动配置
检查是否有环境变量自动设置了相关参数,比如PGOPTIONS,如果有的话先取消:unset PGOPTIONS再重新尝试连接。
确认Cloud SQL实例的参数生效
登录Cloud SQL控制台,检查实例的参数设置里log_min_messages是否已经设为info并完成应用。确保服务器端参数是正确的,从根源避免连接时的参数修改需求。
内容的提问来源于stack exchange,提问作者Andrew Arrow
相关产品推荐
相关产品推荐

