Comment démarrer PostgreSQL server sur Mac OS X?

MISE À JOUR FINALE:

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

en exécutant cette commande

ps auxwww | grep postgres

je vois que postgres n'est pas en cours d'exécution

> 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

Maj 2:

Le contact n'a pas réussi donc 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 quand j'essaie de démarrer le serveur rails, je vois encore ceci:

Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?

Maj 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 pas de pg_hba.conf (seulement pg_hba.conf.sample) alors j'ai modifié l'échantillon et je l'ai renommé (pour enlever le .échantillon.) 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:

> 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

si, j'ai fait cela:

>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 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

alors j'ai essayé ceci:

> 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 obtenir le même "est le serveur en cours d'exécution?" message.

788
demandé sur Ramy 2011-11-02 07:36:43

20 réponses

le Homebrew package manager inclut les launchctl pour démarrer automatiquement. Pour plus d'informations, Lancez brew info postgres .

démarrer manuellement:

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

arrêter manuellement:

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

démarrer automatiquement:

"avoir launchd démarrer postgresql maintenant et redémarrage lors de 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 serveur.journal?

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 de 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)

Nettoyage

Postgres a très probablement été installé via Homebrew , Fink , MacPorts ou le EnterpriseDB installer.

vérifier la sortie de les 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
1483
répondu jamesallman 2017-12-04 17:28:40

si vous voulez démarrer et arrêter manuellement postgresql (installé via homebrew), la façon la plus simple est:

brew services start postgresql

et

brew services stop postgresql
280
répondu malopezcruz 2014-06-16 20:18:09

j'avais presque exactement 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 cherchent:

initdb /usr/local/var/postgres -E utf8
168
répondu Yan 2012-10-27 19:49:28

une autre approche consiste à utiliser lunchy gem (une enveloppe pour launchctl):

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

Pour démarrer postgres:

lunchy start postgres

pour arrêter postgres:

lunchy stop postgres

pour plus d'informations, se référer à: " comment installer PostgreSQL sur un Mac avec Homebrew et Lunchy

78
répondu pisaruk 2017-11-23 18:01:47

Voici mes 2 cents: j'ai créé un alias pour postgres pg_ctl et je l'ai mis .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"

lancement du nouveau terminal.

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

postgres.server start
postgres.server stop
69
répondu Kenial 2016-04-02 19:00:33

si votre ordinateur a été brusquement redémarré

tout d'abord, vous devez supprimer le fichier /usr/local/var/postgres/postmaster.pid puis 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

64
répondu rafaelportela 2017-04-14 16:12:17

le moyen le plus propre de loin pour démarrer/arrêter/redémarrer postgres si vous l'avez installé par brew est de simplement décharger et/ou charger le fichier de configuration launchd qui vient 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 seconde la démarrera. Pas besoin de spécifier des répertoires de données, etc. puisque tout est dans ce fichier.

33
répondu Markus Amalthea Magnuson 2015-05-20 11:49:31

pour démarrer le serveur postgresql:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

pour terminer le serveur postgresql:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

vous pouvez aussi créer un alias via CLI pour le rendre plus facile:

alias pg-start='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start'
alias pg-stop='pg_ctl -D /usr/local/var/postgres stop -s -m fast'

Avec ceux-ci, vous pouvez simplement taper "pg-start" pour commencer la Postgres et "pg-stop" pour l'arrêter.

27
répondu Todd 2013-06-27 13:55:13

pour des raisons de test, je pense que L'application PostgreSQL est la meilleure option!

exécute une application, et le serveur est opérationnel. Fermer l'Application et le serveur tombe en panne.

http://postgresapp.com /

21
répondu Crystian Leão 2013-04-10 20:12:34

lorsque vous installez postgresql en utilisant homebrew:

brew install postgres

à la fin de la sortie, vous verrez cette méthodes pour démarrer le serveur:

To have launchd start postgresql at login:
    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
    postgres -D /usr/local/var/postgres

je pense que c'est la meilleure façon.

vous pouvez ajouter alias dans votre .profil pour plus de commodité.

9
répondu jkaluzka 2014-05-13 10:23:29

pour une base de données de test jetable rapide, vous pouvez exécuter le serveur au premier plan.

Initialiser une nouvelle base de données postgres dans un nouveau répertoire

mkdir db
initdb db -E utf8
createdb public

démarrer le serveur au premier plan (ctrl-C pour arrêter le serveur)

postgres -d db

dans une autre session shell, connectez-vous au serveur

psql -d public
7
répondu k107 2015-05-07 16:38:16

j'ai le même problème et effectuer toutes les mises à jour de first post. Mais après vérification du fichier journal:

/usr/local/var/postgres/server.log

je vois la vraie cause:

FATAL:  data directory "/usr/local/var/postgres" has group or world access
DETAIL:  Permissions should be u=rwx (0700).

après autorisation de changement dans ce répertoire

chmod 0700 /usr/local/var/postgres

serveur postgres a démarrer.

vérifiez chaque fois le fichier journal.

7
répondu Roosh 2016-03-09 08:39:35

pour les besoins du développement, une des façons les plus simples est D'installer Postgres.application de la "151920920 site" officiel . Il peut être démarré/arrêté à partir du dossier Applications ou en utilisant les commandes suivantes dans le terminal:

# start
open -a Postgres

# stop
killall Postgres
killall postgres
4
répondu Melnosta 2013-10-20 20:29:42

PostgreSQL est intégré dans le serveur .app disponible dans L'App Store de Mountain Lion. Cela signifie qu'il est déjà configuré, et vous avez seulement besoin de le lancer, puis créer des utilisateurs et des bases de données.

Tip : ne pas commencer par définir $PGDATA et ainsi de suite, prendre l'emplacement des fichiers comme tel.

Vous auriez ce fichier: / Library/Server/PostgreSQL/Config / org.PostgreSQL.postgres.plist

Pour commencer:

sudo serveradmin start postgres

le processus a commencé avec les arguments:

/Applications / Server.app/Contents/ServerRoot/usr/bin /postgres_real-D/Library/Server/PostgreSQL/Data-C listen_addresses=127.0.0.1,::1-c log_connections=on-c log_directory=/Library/log / PostgreSQL-c log_filename=PostgreSQL.journal -c log_line_prefix=%t -c log_lock_waits=c log_statement=ddl -c logging_collector=c unix_socket_directory=/private/var/pgsql_socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770

Vous pouvez sudo:

sudo -u _postgres psql template1

Ou de se connecter:

psql -h localhost -U _postgres postgres

vous pouvez trouver le répertoire de données, la version, l'état courant et ainsi de suite avec

sudo serveradmin fullstatus postgres  
4
répondu datasmid 2013-11-24 00:58:26

Variation sur cette réponse: https://stackoverflow.com/a/13103603/2394728

initdb `brew --prefix`/var/postgres/data -E utf8`
4
répondu substancejoy 2017-05-23 12:34:45

aucune des réponses ci-dessus, fixe le problème pour moi malgré obtenir les mêmes messages d'erreur. J'ai pu relancer mon instance en supprimant le postmaster existant.fichier pid verrouillé et ne permettant pas les connexions.

1
répondu Swedendrift 2017-01-04 10:03:17
   # remove old database files (If there was any)
   $rm -rf /usr/local/var/postgres    # install the binary

    $ brew install postgresql

    # init it
    $ initdb /usr/local/var/postgres

    # start the postgres server
    $ postgres -D /usr/local/var/postgres

    # create your database
    $ createdb mydb


    # Access db.
    $ psql mydb
    psql (9.0.1)
    Type "help" for help.
1
répondu zee 2018-01-21 23:41:49

Pour Mac/OSX, j'aime vraiment LaunchRocket pour cela et d'autres services d'arrière-plan que j'ai utilisé dans le développement.

https://github.com/jimbojsb/launchrocket

ce site a de belles instructions sur l'installation: http://macappstore.org/launchrocket /

cela vous donne un bel écran dans vos préférences système qui vous permet de lancer, redémarrer, root, lancer à la connexion.

0
répondu theUtherSide 2016-10-20 02:38:50

$ brew upgrade postgres

l'a réparé pour moi.

qui, bien sûr, mettra à jour votre version postgres et mettra à jour/installera toutes les dépendances. AVERTISSEMENT: Faites ceci en sachant que votre version de postgresql sera susceptible de changer. pour moi, ce n'était pas grand chose.

0
répondu thedanotto 2016-12-29 18:43:20

pour macports, il suffit d'utiliser la commande load/unload et le nom du port du serveur courant:

sudo port load postgresql96-server
- or -
sudo port unload postgresql96-server

donc vous n'avez pas à vous rappeler où se trouve le fichier /Library/LaunchDaemons/org.macports.postgresql96.plist 151930920"

0
répondu Steve 2018-08-17 03:28:20