web-dev-qa-db-fra.com

L'exécution "root" du serveur PostgreSQL n'est pas autorisée

Lorsque j'essaie de démarrer postgresql, j'obtiens une erreur:

postgres

postgres ne sait pas où trouver le fichier de configuration du serveur.
Vous devez spécifier l'option d'invocation --config-file ou -D ou définir la variable d'environnement PGDATA.

Alors j'essaie de définir mon fichier de configuration:

postgres -D /usr/local/var/postgres

Et j'obtiens l'erreur suivante:

postgres ne peut pas accéder au fichier de configuration du serveur "/usr/local/var/postgres/postgresql.conf": autorisation refusée

Hmm d'accord. Ensuite, j'essaie d'effectuer la même action en tant qu'administrateur:

 Sudo postgres -D /usr/local/var/postgres

Et je reçois l'erreur suivante:

L'exécution "root" du serveur PostgreSQL n'est pas autorisée.
Le serveur doit être démarré sous un ID utilisateur non privilégié pour éviter tout compromis possible sur la sécurité du système. Consultez la documentation pour plus d'informations sur la façon de démarrer correctement le serveur.

J'ai recherché ce message d'erreur sur Google, mais je ne trouve pas de solution.
Quelqu'un peut-il donner un aperçu de cela?

15
chopper draw lion4

Votre commande ne fait pas ce que vous pensez qu'elle fait. Pour exécuter quelque chose en tant qu'utilisateur système postgres:

 Sudo -u postgres command

Pour exécuter la commande (également nommée postgres!):

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

Votre commande fait le contraire:

Sudo postgres -D /usr/local/var/postgres

Il exécute le programme postgres en tant que superutilisateur root (Sudo sans -u switch), et Postgres ne permet pas d'être exécuté avec des privilèges de superutilisateur pour des raisons de sécurité. D'où le message d'erreur.

Si vous allez exécuter quelques commandes en tant qu'utilisateur système postgres, changez l'utilisateur avec:

Sudo -u postgres -i

... et exit lorsque vous avez terminé.

Si vous voyez ce message d'erreur lorsque vous travaillez en tant qu'utilisateur système postgres, quelque chose ne va pas avec les autorisations sur le fichier ou l'un des répertoires contenant.

postgres ne peut pas accéder au fichier de configuration du serveur "/usr/local/var/postgres/postgresql.conf": autorisation refusée /usr/local/var/postgres/postgresql.conf

En terminant:

18
Erwin Brandstetter

Pour ceux qui tentent d'exécuter une commande personnalisée à l'aide de l'image docker officielle, utilisez la commande suivante. docker-entrypoint.sh gère la commutation de l'utilisateur et la gestion d'autres autorisations.

docker-entrypoint.sh -c 'shared_buffers=256MB' -c 'max_connections=200'
15
Muthukumar