2013-03-11 17 views
6

Trên máy phát triển os x của tôi, tôi đã cài đặt postgres 9.1 lên /Library/PostgreSQL/9.1 và thư mục dữ liệu cho PostgreSQL là /Library/PostgreSQL/9.1/data Tôi đã định cấu hình ghi nhật ký để tôi nhận được nhật ký tốt ngoài postgres về những truy vấn sql đang thực hiện trên máy chủ ... .vv như vậy mà chúng được viết cho /Library/PostgreSQL/9.1/data/pg_log Tôi đang sử dụng db doanh nghiệp được đóng gói trước gói bưu nhị phân.Làm cách nào để truy cập thư mục pg_log của PostgreSQL mà không phải là người dùng postgres và gặp sự cố về quyền?

Vấn đề là $ PGDATA được sở hữu bởi người dùng postgres đang chạy các quy trình postgres. Khi tôi thay đổi quyền trên thư mục dữ liệu với chmod o+xr data postgres từ chối bắt đầu và cho tôi biết rằng nó không thể bắt đầu với thư mục postgres có quyền đối với bất kỳ điều gì trừ người dùng postgres.

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

Có sudo vào và ra khỏi thư mục chỉ để truy cập tệp nhật ký gây phiền nhiễu.

Cách tốt nhất để định cấu hình đăng nhập trên Mac OS X để dễ truy cập tệp nhật ký từ bất kỳ người dùng nào đã đăng nhập, thay vì phải sử dụng sudo hoặc là người dùng postgres?

CẬP NHẬT Xem câu trả lời của tôi bên dưới, để biết công thức chính xác tôi đã sử dụng để làm cho nó hoạt động.

Trả lời

7

Thực tế đơn giản là PostgreSQL sẽ không cho phép bạn thực hiện việc này. Tuy nhiên, có một giải pháp tốt hơn, đó là để đảm bảo những điều sau đây được đặt trong postgresql.conf:

Đây là mặc định. Nếu nó là nhận xét ra và không được thiết lập, đó là ok:

log_destination = 'stderr' 

này cần phải được thiết lập trên:

logging_collector = on 

Sau đó bạn có thể chỉ ở một nơi khác:

log_directory = 'pg_log' 

Bạn có thể điểm này ở đâu đó bạn có thể truy cập nó. Ví dụ: cung cấp quyền truy cập thích hợp cho bưu điện và trỏ tới:

log_directory = '/var/log/postgresql' 

Sau đó miễn là nó không có trong thư mục dữ liệu, bạn có thể đặt bất kỳ quyền nào bạn muốn.

7

Các bước tôi đã sử dụng để làm cho nó hoạt động.

  • Tạo một thư mục /var/pg_log và làm cho nó trên thế giới có thể đọc và ghi chmod o+wxr
  • Đặt các giá trị sau đây trong tập tin postgresql.conf

    log_directory = '/ var/pg_log'

    log_file_mode = 0506

  • khởi động lại postgres

  • /var/pg_log phải có các tệp postlog .log mà bạn có thể theo dõi bằng mac os x, giao diện điều khiển tiện ích. không có sudo cần thiết để xem những gì đang xảy ra trong đó.

Lưu ý Postgres từ chối cho phép bất kỳ sự cho phép nào trên 511 trên tệp nhật ký.

+0

Bạn có nghĩa là Postgres sẽ không cho phép nhóm/người khác có thể ghi được không? – mcr

Các vấn đề liên quan