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.
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
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
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
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
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
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
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.
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.
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.
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é.
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
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.
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
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
Variation sur cette réponse: https://stackoverflow.com/a/13103603/2394728
initdb `brew --prefix`/var/postgres/data -E utf8`
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.
# 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.
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.
$ 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.
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"