MISE À JOUR FINALE:
J'avais oublié de lancer la commande initdb
.
</ FINAL UPDATE>
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 suivante: 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 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 Rails, je vois encore 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 PAS de pg_hba.conf (seulement pg_hba.conf.sample), j'ai donc modifié l'échantillon et je l'ai renommé (pour supprimer 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
également:
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
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 le même "Est-ce que le serveur tourne?" message.
Le gestionnaire de paquets Homebrew inclut des plists 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:
"Pour que launchd lance postgresql maintenant et 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 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 a probablement été installé via Homebrew , Fink , MacPorts ou l'installateur EnterpriseDB .
Vérifiez le résultat des commandes suivantes pour déterminer le gestionnaire de packages avec lequel 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 méthode la plus simple est la suivante:
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 solution. C'était aussi la solution pour moi, mais je n'ai vu personne qui l'a posté ici, donc pour ceux qui le cherchent:
initdb /usr/local/var/postgres -E utf8
Une autre approche consiste à utiliser lunchy gem (un wrapper 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, consultez: " Comment installer PostgreSQL sur un Mac avec Homebrew et Lunchy "
Si votre ordinateur a été redémarré brusquement
Tout d’abord, vous devez supprimer le fichier /usr/local/var/postgres/postmaster.pid
. Vous pouvez ensuite redémarrer le service en utilisant l’une des nombreuses méthodes mentionnées en fonction de votre installation.
Vous pouvez le vérifier en consultant les journaux de Postgres pour voir ce qui pourrait se passer: tail -f /usr/local/var/postgres/server.log
Voici mes 2 centimes: j'ai créé un alias pour postgres pg_ctl et je l'ai mis dans .bash_profile (ma version de 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
Le moyen le plus propre de loin de démarrer/arrêter/redémarrer postgres si vous l'avez installé via brew
consiste 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 seconde le démarrera. Pas besoin de spécifier des répertoires de données, etc., car 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 également créer un alias via CLI pour simplifier les choses:
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 démarrer Postgres et "pg-stop" pour le fermer.
À des fins de test, je pense que PostgreSQL App est la meilleure option!
Exécutez une application et le serveur est opérationnel . Fermez 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 ces 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 un alias dans votre .profile pour plus de commodité.
J'ai le même problème et effectuer toutes les mises à jour du premier 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 modification, autorisation sur ce répertoire
chmod 0700 /usr/local/var/postgres
le serveur postgres a commencé.
Vérifier à chaque fois le fichier journal.
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 l'arrêter)
postgres -d db
Dans une autre session Shell, connectez-vous au serveur.
psql -d public
Variation sur cette réponse: https://stackoverflow.com/a/13103603/2394728
initdb `brew --prefix`/var/postgres/data -E utf8`
Pour le développement, l’un des moyens les plus simples consiste à installer Postgres.app à partir du site officiel . Il peut être démarré/arrêté depuis le dossier Applications ou en utilisant les commandes suivantes dans le terminal:
# start
open -a Postgres
# stop
killall Postgres
killall postgres
PostgreSQL est intégré à Server.app disponible sur l’App Store de Mountain Lion. Cela signifie qu'il est déjà configuré et qu'il vous suffit de le lancer pour créer des utilisateurs et des bases de données.
Conseil : Ne commencez pas par définir $ PGDATA, etc., prenez les emplacements de fichiers tels quels.
Vous auriez ce fichier: /Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist
Commencer:
Sudo serveradmin start postgres
Le processus a commencé avec des 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/Logs/PostgreSQL -c nom_fichier_log = PostgreSQL.log -c log_line_prefix =% t -c log_lock_waits = on -c log_statement = ddl -c logging_collector = sur -c
Vous pouvez Sudo:
Sudo -u _postgres psql template1
Ou connectez-vous:
psql -h localhost -U _postgres postgres
Vous pouvez trouver le répertoire de données, la version, l'état de fonctionnement, etc. avec
Sudo serveradmin fullstatus postgres
# 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.
Si vous avez installé avec Brew, la commande ci-dessous devrait suffire.
brew services restart postgresql
Et cela peut parfois ne pas fonctionner, dans ce cas ci-dessous deux commandes devraient fonctionner définitivement
rm /usr/local/var/postgres/postmaster.pid
pg_ctl -D /usr/local/var/postgres start
Si vous avez installé Postgres à l'aide du programme d'installation d'EnterpriseDB, voici ce que @Kenial a suggéré.
Sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data start
Sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data stop
aucune des réponses ci-dessus n'a résolu le problème pour moi malgré les mêmes messages d'erreur. J'ai pu remettre mon instance en service en supprimant le fichier postmaster.pid existant qui était verrouillé et en n'autorisant pas les connexions.
Pour macports, utilisez simplement la commande load/unload et le nom du port du serveur en cours d’exécution:
Sudo port load postgresql96-server
- or -
Sudo port unload postgresql96-server
de sorte que vous ne devez pas vous rappeler où se trouve le fichier /Library/LaunchDaemons/org.macports.postgresql96.plist
Il existe des cas Edge qui seront peut-être utiles pour quelqu'un:
Il est possible que postgres.pid soit rempli avec un certain PID. Mais si vous redémarrez votre machine, et avant que postgress revienne, un autre processus utilisera ce PID. Si cela se produit, pg_ctl status et le service brasseur interrogé sur le statut postgres vous indiqueront qu'il s'agit de UP. Juste ps aux | grep et vérifier si c'est vraiment postgress
Cela a fonctionné pour moi à chaque fois, inspiré par Craig Ringer:
brew install proctools
Sudo pkill -u postgres
proctools inclut pkill. Si vous n'avez pas Brew: https://brew.sh/
Pour Mac/OSX, j'aime beaucoup LaunchRocket pour ce service et les autres services d'arrière-plan utilisés en développement.
https://github.com/jimbojsb/launchrocket
Ce site contient de bonnes instructions d’installation: http://macappstore.org/launchrocket/
Cela vous donne un joli écran dans vos préférences système qui vous permet de lancer, redémarrer, root, lancer à la connexion.
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
$ brew upgrade postgres
corrigé pour moi.
Cela, bien sûr, mettra à niveau votre version de Postgres et mettra à jour/installera toutes les dépendances. AVERTISSEMENT: Faites ceci en sachant que votre version de postgresql changera probablement. Pour moi, ce n'était pas grave.
Par souci d'exhaustivité: vérifiez si vous êtes dans une instance Tmux
ou Screen
, le démarrage ne fonctionnant pas à partir de là.
Cela a résolu le problème pour moi.
cela a fonctionné pour moi (macOS 10.13) Sudo -u postgres /Library/PostgreSQL/9.6/bin/pg_ctl start -D /Library/PostgreSQL/9.6/data
ou premier cd /Library/PostgreSQL/9.6/bin/