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?
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:
pg_ctl
- ou pg_ctlcluster
dans les distributions basées sur Debian.su
et Sudo
.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'