Question Comment démarrer le serveur PostgreSQL sur Mac OS X?


MISE À JOUR FINALE:

J'avais oublié d'exécuter la commande initdb.

</ MISE À JOUR FINALE>

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?

mettre à 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 contact n'a pas réussi donc je l'ai fait à la place:

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

Mais quand j'essaie de démarrer le serveur rails, je vois toujours ceci:

Is the server running on host "localhost" and accepting
TCP/IP connections on 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 n'y avait AUCUN pg_hba.conf (seulement pg_hba.conf.sample) donc j'ai 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 ceci:

> 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

cependant, j'ai fait ceci:

>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

donc j'ai fait ceci:

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

donc 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 

toujours le même "Est-ce que le serveur fonctionne?" message.


763
2017-11-02 03:55


origine


Réponses:


le Homebrew Le gestionnaire de paquets inclut les plistances launchctl pour démarrer automatiquement. Pour plus d'informations, exécutez brew info postgres.

Démarrer manuellement:

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

Arrêtez manuellement:

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

Démarrer automatiquement:

"Pour lancer launchd, démarrez postgresql maintenant et redémarrez à login:"

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 fichier 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 listen_addresses 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)

Nettoyer

Postgres était probablement installé via Homebrew, Mouchard, MacPorts ou la EnterpriseDB installateur

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

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

1449



Si vous voulez démarrer et arrêter manuellement postgresql (installé via homebrew), le plus simple est:

brew services start postgresql

et

brew services stop postgresql

275



J'ai eu presque le même problème, et vous avez cité la commande initdb comme étant le correctif. C'était aussi la solution pour moi, mais je n'ai vu personne l'afficher ici, donc pour ceux qui le recherchent:

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

168



Une autre approche utilise lunchy gem (un emballage pour launchctl):

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

Pour commencer postgres:

lunchy start postgres

Pour arrêter postgres:

lunchy stop postgres

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


78



Voici mon 2 cents: J'ai fait un alias pour postgres pg_ctl et le mettre dans .bash_profile (ma version postgresql est 9.2.4, et le chemin de la base de données est /Library/PostgreSQL/9.2/data).

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

Lancer un nouveau terminal.

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

postgres.server start
postgres.server stop

69



Si votre ordinateur a été redémarré brutalement

D'abord, vous devez supprimer le fichier /usr/local/var/postgres/postmaster.pid Ensuite, vous pouvez redémarrer le service en utilisant l'une des nombreuses autres méthodes mentionnées en fonction de votre installation.

Vous pouvez vérifier cela en regardant les journaux de Postgres pour voir ce qui pourrait se passer: tail -f /usr/local/var/postgres/server.log


56



Le moyen le plus propre de loin pour démarrer / arrêter / redémarrer postgres si vous l'avez installé via brew est de simplement décharger et / ou charger le fichier de configuration launchd fourni avec l'installation:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

La première ligne arrêtera postgres et la deuxième ligne le commencera. Pas besoin de spécifier des répertoires de données, etc. car tout est dans ce fichier.


33