1061 votes

Comment puis-je démarrer le serveur PostgreSQL sur Mac OS X ?

Mise à jour finale :

J'avais oublié d'exécuter le initdb commandement.


En exécutant cette commande

ps auxwww | grep postgres

Je vois que postgres ne fonctionne pas

> ps auxwww | grep postgres
remcat          1789   0.0  0.0  2434892    480 s000  R+   11:28PM   0:00.00 grep postgres

Cela soulève la question :

Comment démarrer le serveur PostgreSQL ?

Mise à jour :

> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory

Mise à jour 2 :

Le site touchez n'a pas réussi, alors j'ai fait ceci à la place :

> mkdir /usr/local/var/postgres
> vi /usr/local/var/postgres/server.log
> ls /usr/local/var/postgres/
server.log

Mais lorsque j'essaie de démarrer le serveur Ruby on Rails, je vois toujours ceci :

Le serveur s'exécute-t-il sur l'hôte "localhost" et accepte-t-il des les connexions TCP/IP sur le port 5432 ?

Mise à jour 3 :

> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running

Mise à jour 4 :

J'ai trouvé qu'il y avait n'était pas pg_hba.conf fichier (seulement le fichier pg_hba.conf.sample ), j'ai donc modifié l'échantillon et l'ai renommé (pour enlever le .sample). Voici le contenu :

 # IPv4 local connections:
 host    all             all             127.0.0.1/32           trust
 # IPv6 local connections:
 host    all             all             ::1/128                trust

Mais je ne comprends pas ça :

> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running

Aussi :

sudo find / -name postgresql.conf
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory

Mise à jour 5 :

sudo pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Password:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.

Mise à jour 6 :

Cela semble étrange :

> egrep 'listen|port' /usr/local/var/postgres/postgresql.conf
egrep: /usr/local/var/postgres/postgresql.conf: No such file or directory

Bien que, j'ai fait ça :

>sudo find / -name "*postgresql.conf*"
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample

Alors j'ai fait ça :

egrep 'listen|port' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
#listen_addresses = 'localhost'        # what IP address(es) to listen on;
#port = 5432                # (change requires restart)
                # supported by the operating system:
                #   %r = remote host and port

Alors j'ai essayé ça :

> cp /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf
> cp /usr/share/postgresql/postgresql.conf.sample /usr/share/postgresql/postgresql.conf

Je reçois toujours le même message "Is the server running ?".

0 votes

Comment avez-vous installé Postgres ? Avez-vous utilisé un gestionnaire de paquets ou une installation manuelle ?

1 votes

Je ne me souviens pas exactement mais soit il était déjà installé, soit j'ai lancé "brew install postgres". Je pencherais pour la seconde solution, mais là encore, je ne suis pas sûr à 100%.

0 votes

Utilisez sudo , ie sudo pg_ctl...

1945voto

JamesA Points 14729

Le site Homebrew comprend des plists launchctl pour un démarrage automatique. Pour plus d'informations, exécutez brew info postgres .

Démarrer manuellement

pg_ctl -D /usr/local/var/postgres start

Arrêt manuel

pg_ctl -D /usr/local/var/postgres stop

Démarrer automatiquement

"Pour que launchd lance postgresql maintenant et le redémarre à la connexion :"

brew services start postgresql


Quel est le résultat de pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start ?

Quel est le résultat de pg_ctl -D /usr/local/var/postgres status ?

Y a-t-il des messages d'erreur dans le server.log ?

Assurez-vous que les connexions tcp localhost sont activées dans pg_hba.conf :

# IPv4 local connections:
host    all    all    127.0.0.1/32    trust

Vérifiez les adresses d'écoute et le port dans postgresql.conf :

egrep 'listen|port' /usr/local/var/postgres/postgresql.conf

#listen_addresses = 'localhost'        # What IP address(es) to listen on;
#port = 5432                # (change requires restart)

Le nettoyage

PostgreSQL a probablement été installé via Homebrew , Fink , MacPorts ou le EnterpriseDB installateur.

Vérifiez la sortie des commandes suivantes pour déterminer avec quel gestionnaire de paquets il a été installé :

brew && brew list|grep postgres
fink && fink list|grep postgres
port && port installed|grep postgres

0 votes

J'ai essayé de "toucher /usr/local/var/postgres/server.log", mais sans succès.

1 votes

@Ramy Le contact a-t-il réussi ? Vérifiez l'existence et les permissions de /usr/local/var/postgres et server.log . Il doit être rw pour votre identifiant.

1 votes

@Ramy : Pouvez-vous inclure des informations dans /usr/local/var/postgres/server.log ? Votre installation peut être corrompue et il peut être plus rapide de nettoyer et de réinstaller en utilisant une source connue telle que Homebrew.

413voto

marcqz Points 1

Si vous voulez démarrer et arrêter manuellement PostgreSQL (installé via Homebrew ), la méthode la plus simple est la suivante :

brew services start postgresql

et

brew services stop postgresql

Si vous disposez d'une version spécifique, veillez à ajouter le suffixe de la version. Par exemple :

brew services start postgresql@10

8 votes

J'aurais aimé connaître brew services plus tôt... c'est la seule solution qui fonctionne pour moi. <3 merci !

5 votes

brew tap gapple/services permettra à la commande brew services de fonctionner à nouveau

4 votes

On dirait que brew tap homebrew/services toujours en activité github.com/Homebrew/homebrew-services

185voto

Yan Points 16

J'ai eu presque exactement le même problème, et vous avez cité la commande initdb comme étant la solution. C'était également la solution pour moi, mais je n'ai pas vu que quelqu'un l'avait postée ici, donc pour ceux qui la cherchent :

initdb /usr/local/var/postgres -E utf8

17 votes

Cela a marché pour moi aussi, initdb m'a dit que j'avais déjà la configuration faite, donc j'ai supprimé le répertoire entier : "rm -rf /usr/local/var/postgres" j'ai relancé votre commande et mon serveur est maintenant opérationnel, merci beaucoup monsieur !

7 votes

Oui, j'ai dû courir. rm -rf /usr/local/var/postgres et ensuite ceci a fonctionné pour moi

2 votes

C'est ce qui a fonctionné pour moi aussi. Avant initdb, j'ai dû également chown le répertoire postgres ( chown _your username on your comp_ usr/local/var/postgres ), puis initdb. Après cela, le serveur démarre automatiquement lorsque vous redémarrez (si vous avez suivi les instructions de Homebrew pour cela) ou manuellement pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start .

79voto

pisaruk Points 483

Une autre approche consiste à utiliser le lunchy pierre précieuse (une enveloppe pour launchctl) :

brew install postgresql
initdb /usr/local/var/postgres -E utf8
gem install lunchy

Pour démarrer PostgreSQL :

lunchy start postgres

Pour arrêter PostgreSQL :

lunchy stop postgres

Pour plus d'informations, reportez-vous à : " Comment installer PostgreSQL sur un Mac avec Homebrew et Lunchy "

0 votes

Selon la façon dont vous avez configuré postgres, vous devrez peut-être utiliser postgresql au lieu de postgres.

75voto

Kenial Points 548

Voici mes deux cents : J'ai créé un alias pour postgres pg_ctl et le mettre dans le fichier .bash_profile (ma version de PostgreSQL est 9.2.4, et le chemin de la base de données est /Bibliothèque/PostgreSQL/9.2/data ).

alias postgres.server="sudo -u postgres pg_ctl -D /Library/PostgreSQL/9.2/data"

Lancez un nouveau terminal.

Et ensuite ? Vous pouvez démarrer/arrêter votre serveur PostgreSQL avec ceci :

postgres.server start
postgres.server stop

0 votes

Spécifier le répertoire de données avec -D est la clé ici.

3 votes

Je n'ai cessé d'obtenir "Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process." en exécutant juste sudo. +1

0 votes

Merci. Les suggestions des outils postgres pour utiliser su échouent lamentablement. sudo -u fonctionne parfaitement. (sur El Capitan)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X