7

在我的 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我正在使用企业数据库预打包的 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)

不得不 sudo 进出 postgres 目录只是为了获取日志文件很烦人。

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

更新请参阅下面的答案,了解我用来使其工作的确切配方。

4

2 回答 2

11

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

这是默认设置。如果它被注释掉并且没有另外设置,那没关系:

log_destination = 'stderr' 

这需要设置为:

logging_collector = on  

然后,您可以将其指向其他地方:

log_directory = 'pg_log'  

你可以把它指向你可以访问它的地方。例如,给 postgres 适当的访问权限并指向:

log_directory = '/var/log/postgresql'

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

于 2013-03-11T02:04:21.617 回答
7

我用来使它工作的步骤。

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

    log_directory = '/var/pg_log'

    日志文件模式 = 0506

  • 重新启动 postgres

  • /var/pg_log应该有可以使用 mac os x 控制台实用程序监视的 postgres .log 文件。无需 sudo 即可查看其中发生的情况。

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

于 2013-03-11T03:05:09.933 回答