2013-03-11 17 views
6

Na moim komputerze Mac OS x rozwoju, mam Postgres 9.1 zainstalowany na /Library/PostgreSQL/9.1, a katalog danych dla PostgreSQL jest w /Library/PostgreSQL/9.1/data Mam skonfigurowane logowanie, więc otrzymuję dobre dzienniki z postgres o tym, jakie kwerendy sql na serwerze ... itd. tak, że są one napisane na /Library/PostgreSQL/9.1/data/pg_log Używam korporacyjnego db wstępnie zapakowane pliki binarne PostgreSQL.Jak uzyskać dostęp do folderu pg_log PostgreSQL bez bycia użytkownikiem postgre i problemów z uprawnieniami?

Problem polega na tym, że $ PGDATA jest własnością użytkownika postgreSQL, który uruchamia procesy postgres. Kiedy zmieniłem uprawnienia w katalogu danych, chmod o+xr data postgres odmówił rozpoczęcia i powiedział mi, że nie może rozpoczynać się od katalogu postgres posiadającego uprawnienia do czegokolwiek oprócz użytkownika postgres.

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

Posiadanie sudo w i poza katalogiem postgres, aby uzyskać dostęp do plików dziennika jest denerwujące.

Jaki jest dobry sposób skonfigurowania rejestrowania postgreSQL na Mac OS X, aby był łatwy dostęp do plików dziennika od każdego zalogowanego użytkownika, zamiast korzystania z sudo lub bycia użytkownikiem postgreS?

AKTUALIZACJA Zobacz moją odpowiedź poniżej, dla dokładnej receptury użyłem, aby to działało.

Odpowiedz

7

Prostym faktem jest, że PostgreSQL nie pozwoli ci tego zrobić. Istnieje jednak lepsze rozwiązanie, które polega na upewnieniu się, że następujące ustawienia są ustawione w pliku postgresql.conf:

Ten jest domyślny. Jeśli jest komentarzem, a nie inaczej ustawiony, to jest ok:

log_destination = 'stderr' 

musi to być ustawione na:

logging_collector = on 

Następnie można wskazać to gdzieś indziej:

log_directory = 'pg_log' 

You może wskazać gdzieś, gdzie możesz uzyskać do niego dostęp. Na przykład, dać Postgres odpowiedni dostęp i wskaż polecenie:

log_directory = '/var/log/postgresql' 

Następnie, o ile nie znajduje się w katalogu danych można ustawić niezależnie od uprawnienia chcesz.

7

Kroki, których użyłem, aby to działało.

  • Utwórz katalog /var/pg_log i sprawiają, że świat odczytu i zapisu chmod o+wxr
  • ustawić następujące wartości w pliku postgresql.conf

    log_directory = '/ var/pg_log'

    log_file_mode = 0506

  • restart postgres

  • /var/pg_log powinien mieć pliki postgres .log, które można monitorować za pomocą narzędzia mac osx, konsoli. sudo nie musi widzieć, co się tam dzieje.

Uwaga Postgres odmówił zezwolenia na więcej niż 511 w pliku dziennika.

+0

Czy masz na myśli, że Postgres nie zezwala na zapisywanie grup/innych osób? – mcr

Powiązane problemy