2015-02-04 63 views
9

Quando provo ad avviare PostgreSQL ottengo un errore:esecuzione "root" del server PostgreSQL non è consentito

postgres 

postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.

Allora provo a impostare il mio file di configurazione:

postgres -D /usr/local/var/postgres 

e ottengo il seguente errore:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": Permission denied

Hmm va bene. Avanti, cerco di svolgere la stessa azione come amministratore:

sudo postgres -D /usr/local/var/postgres 

e ricevo il seguente errore:

"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent possible system security compromise. See the documentation for more information on how to properly start the server.

Ho cercato su google in giro per questo messaggio di errore, ma non riesce a trovare una soluzione.
Qualcuno può dare qualche idea in questo?

risposta

12

Il tuo comando non fa quello che pensi che faccia. Per eseguire qualcosa come utente del sistema postgres:

sudo -u postgres command

per eseguire il comando (chiamato anche postgres!):

sudo -u postgres postgres -D /usr/local/var/postgres 

Il comando fa il contrario:


             
  
    sudo postgres -D /usr/local/var/postgres 
  

Esegue il programma postgres come superuser root (sudo senza lo switch -u) e Postgres non consente l'esecuzione con privilegi di superutente per motivi di sicurezza. Da qui il messaggio di errore.

Se avete intenzione di eseguire un paio di comandi come utente del sistema postgres, cambiare l'utente con:

sudo -u postgres -i 

... e exit quando si è fatto.

Se viene visualizzato questo messaggio di errore durante il funzionamento come utente del sistema postgres, allora c'è qualcosa che non va con permessi sul file o una delle directory che contengono.

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": Permission denied /usr/local/var/postgres/postgresql.conf

In chiusura:

+0

Come forzare Postgres a girare come root se ho davvero bisogno di questo sotto la finestra mobile? – Odysseus

+0

@Odysseus: non puoi. Il processo del server ('postgres') rifiuta attivamente di essere eseguito dall'utente' root'. Per sanità mentale. –

0

Per coloro che cercano di eseguire comandi personalizzati utilizzando l'immagine della finestra mobile ufficiale, utilizzare il seguente comando. docker-entrypoint.sh gestisce la commutazione dell'utente e la gestione di altre autorizzazioni.

docker-entrypoint.sh -c 'shared_buffers=256MB' -c 'max_connections=200' 
Problemi correlati