如何访问PostgreSQL pg_log文件夹而不是postgres用户并遇到权限问题?

ams*_*ams 6 postgresql macos

在我的mac os x开发机器上,我安装了postgres 9.1 /Library/PostgreSQL/9.1并且PostgreSQL的数据目录在/Library/PostgreSQL/9.1/data我已经配置了日志记录,所以我从postgres获得了关于在服务器上执行什么SQL查询的好日志....等等这些都写给/Library/PostgreSQL/9.1/data/pg_log我使用企业db预打包的postgres二进制文件.

问题是$ PGDATA由运行postgres进程的postgres用户拥有.当我更改了数据目录的权限时,chmod o+xr datapostgres拒绝启动并告诉我它不能以postgres目录开始,除了postgres用户之外还有权限.

FATAL:  data directory "/Library/PostgreSQL/9.1/data" has group or world access
DETAIL:  Permissions should be u=rwx (0700)
Run Code Online (Sandbox Code Playgroud)

只是为了获取日志文件而不得不进出postgres dir是很烦人的.

在Mac OS X上配置postgres日志记录的好方法是什么,以便从登录的任何用户轻松访问日志文件,而不必使用sudo或成为postgres用户?

更新请参阅下面的答案,了解我过去使用的确切配方.

Chr*_*ers 10

简单的事实是PostgreSQL不允许你这样做.但是,有一个更好的解决方案,即确保在postgresql.conf中设置以下内容:

这是默认值.如果它被注释掉而没有另外设置,那没关系:

log_destination = 'stderr' 
Run Code Online (Sandbox Code Playgroud)

这需要设置为:

logging_collector = on  
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其指向其他位置:

log_directory = 'pg_log'  
Run Code Online (Sandbox Code Playgroud)

您可以将其指向可以访问它的位置.例如,给postgres适当的访问权限并指向:

log_directory = '/var/log/postgresql'
Run Code Online (Sandbox Code Playgroud)

然后,只要它不在数据目录中,您就可以设置所需的任何权限.


ams*_*ams 7

我过去常常使用的步骤.

  • 创建一个目录/var/pg_log并使其可读写chmod o+wxr
  • 在postgresql.conf文件中设置以下值

    log_directory ='/ var/pg_log'

    log_file_mode = 0506

  • 重启postgres

  • /var/pg_log应该有postgres .log文件,您可以使用mac os x,console utility监视它们.没有sudo需要看到那里发生了什么.

注意Postgres拒绝在日志文件中允许任何高于511的权限.