2013-03-11 4 views
6

Sulla mia macchina di sviluppo mac os x, ho Postgre 9.1 installato su /Library/PostgreSQL/9.1 e la directory di dati per PostgreSQL è in /Library/PostgreSQL/9.1/data Ho configurato la registrazione in modo da ottenere buoni registri da postgres su quali query SQL eseguono sul server ... .ecc in modo tale che questi siano scritti in /Library/PostgreSQL/9.1/data/pg_log Sto usando il binario pre-pacchetto postgre enterprise db.Come accedere alla cartella pg_log PostgreSQL senza essere l'utente postgres e in esecuzione in problemi di autorizzazione?

Il problema è che $ PGDATA è di proprietà dell'utente postgres che esegue i processi postgres. Quando ho cambiato le autorizzazioni sulla directory dei dati con chmod o+xr data postgres ha rifiutato di avviarsi e mi dice che non può iniziare con la directory postgres che ha permessi su qualsiasi cosa tranne l'utente postgres.

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

Dovendo sudo dentro e fuori il dir postgres solo per ottenere i file di registro è fastidioso.

Quale è un buon modo per configurare la registrazione di postgres su Mac OS X in modo che sia facile accedere ai file di registro da qualsiasi utente che ha effettuato l'accesso, piuttosto che dover utilizzare sudo o essere l'utente di Postgres?

UPDATE Vedere la mia risposta qui sotto, per la ricetta esatta che ho usato per farlo funzionare.

risposta

7

Il semplice fatto è che PostgreSQL non ti consente di farlo. Tuttavia, esiste una soluzione migliore, che è quella di assicurarsi che quanto segue sia impostato nel file postgresql.conf:

Questo è l'impostazione predefinita. Se è commentata e non altrimenti impostata, che è ok:

log_destination = 'stderr' 

Questo deve essere impostato su:

logging_collector = on 

È quindi possibile puntare da qualche altra parte:

log_directory = 'pg_log' 

È potrei indicarlo da qualche parte puoi accedervi. Ad esempio, dare Postgres Accesso e punto opportuno:

log_directory = '/var/log/postgresql' 

Poi, finché non si trova nella directory dei dati è possibile impostare qualunque autorizzazioni che si desidera.

7

Passi che ho usato per farlo funzionare.

  • Creare una directory /var/pg_log e renderlo mondo leggibile e scrivibile chmod o+wxr
  • Impostare i seguenti valori nel file di postgresql.conf

    log_directory = '/ var/pg_log'

    log_file_mode = 0506

  • restart postgres

  • /var/pg_log dovrebbe avere file Postgre .log che è possibile monitorare con mac os x, utility della console. nessun sudo richiesto per vedere cosa sta succedendo lì dentro.

Nota Postgres ha rifiutato di consentire qualsiasi autorizzazione sopra 511 sul file di registro.

+0

Vuoi dire che Postgres non consente il gruppo/altro scrivibile? – mcr

Problemi correlati