it-swarm.com.de

So starten Sie den PostgreSQL-Server unter Mac OS X

LETZTE AKTUALISIERUNG:

Ich hatte vergessen, den Befehl initdb auszuführen.

</ FINAL UPDATE>

indem Sie diesen Befehl ausführen

ps auxwww | grep postgres

Ich sehe, dass Postgres nicht läuft

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

dies wirft die Frage auf: Wie starte ich den Postgresql-Server?

aktualisieren:

>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

update 2:

Die Berührung war nicht erfolgreich, also habe ich stattdessen Folgendes getan:

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

Wenn ich jedoch versuche, den Rails-Server zu starten, sehe ich immer noch Folgendes:

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

update 3:

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

update 4:

Ich fand, dass es KEINE pg_hba.conf war (nur pg_hba.conf.sample). Also habe ich das Beispiel geändert und es umbenannt (um das .sample zu entfernen). Hier sind die Inhalte:

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

aber ich verstehe das nicht:

> 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

ebenfalls:

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

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

update 6:

das scheint seltsam:

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

obwohl ich das gemacht habe:

>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

also tat ich das:

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

also habe ich es versucht:

> 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 

immer noch das gleiche "läuft der Server?" Botschaft.

832
Ramy

Der Paketmanager Homebrew enthält Startprogramme, die automatisch gestartet werden. Für weitere Informationen führen Sie brew info postgres aus.

Manuell starten:

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

Manuell anhalten:

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

Automatisch starten:

Msgstr "Damit startd postgresql jetzt starten und beim Login neu starten kann:"

brew services start postgresql 


Was ist das Ergebnis von pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start?

Was ist das Ergebnis von pg_ctl -D /usr/local/var/postgres status

Gibt es Fehlermeldungen im server.log?

Stellen Sie sicher, dass tcp localhost-Verbindungen in pg_hba.conf aktiviert sind: 

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

Überprüfen Sie die listen_addresses und den Port in 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)

Aufräumen

Postgres wurde höchstwahrscheinlich über Homebrew , Fink , MacPorts oder das EnterpriseDB - Installationsprogramm installiert.

Überprüfen Sie die Ausgabe der folgenden Befehle, um festzustellen, mit welchem ​​Paket-Manager er installiert wurde:

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

Wenn Sie Postgresql (installiert über Homebrew) manuell starten und stoppen möchten, ist der einfachste Weg:

brew services start postgresql

und

brew services stop postgresql
294
malopezcruz

Ich hatte fast genau das gleiche Problem, und Sie haben den Befehl initdb als Fix angegeben. Dies war auch die Lösung für mich, aber ich habe nicht gesehen, dass jemand es hier gepostet hat, also für diejenigen, die danach suchen:

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

Ein anderer Ansatz ist die Verwendung von lunchy gem (einem Wrapper für launchctl):

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

Postgres starten:

lunchy start postgres

Um postgres zu stoppen:

lunchy stop postgres

Weitere Informationen finden Sie unter: " So installieren Sie PostgreSQL auf einem Mac mit Homebrew und Lunchy "

78
pisaruk

Wenn Ihr Computer abrupt neu gestartet wurde

Zuerst müssen Sie die Datei /usr/local/var/postgres/postmaster.pid löschen. Anschließend können Sie den Dienst mit einer der vielen anderen genannten Methoden neu starten, je nach Ihrer Installation.

Sie können dies überprüfen, indem Sie in den Protokollen von Postgres nachsehen, was möglicherweise vor sich geht: tail -f /usr/local/var/postgres/server.log

73
rafaelportela

Hier meine 2 Cent: Ich habe einen Alias ​​für postgres pg_ctl erstellt und in .bash_profile eingefügt (meine postgresql-Version ist 9.2.4 und der Datenbankpfad ist /Library/PostgreSQL/9.2/data).

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

Neues Terminal starten. 

Und dann? Sie können Ihren Postgresql-Server folgendermaßen starten/stoppen:

postgres.server start
postgres.server stop
68
Kenial

Der sauberste Weg bei weitem um Postgres zu starten/stoppen/neustarten, wenn Sie ihn über brew installiert haben, ist das Entladen und/oder Laden der startd-Konfigurationsdatei, die mit der Installation geliefert wird:

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

Die erste Zeile stoppt Postgres und die zweite Zeile beginnt damit. Es müssen keine Datenverzeichnisse usw. angegeben werden, da sich alles in dieser Datei befindet.

So starten Sie den Postgresql-Server:

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

um den Postgresql-Server zu beenden:

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

Sie können einen Alias ​​auch über die CLI erstellen, um es zu vereinfachen:

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'

Mit diesen können Sie einfach "pg-start" eingeben, um Postgres zu starten, und "pg-stop", um es abzuschalten.

27
Todd

Zu Testzwecken denke ich, dass PostgreSQL App die beste Option ist!

Führen Sie eine App aus, und der Server ist in Betrieb.

http://postgresapp.com/

22
Crystian Leão

wenn Sie Postgresql mit Homebrew installieren:

brew install postgres

am Ende der Ausgabe sehen Sie folgende Methoden, um den Server zu starten:

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

Ich denke, das ist der beste Weg. 

Sie können der .profile zur Vereinfachung einen Alias ​​hinzufügen. 

9
jkaluzka

Ich habe das gleiche Problem und führe alle Updates aus dem ersten Beitrag aus. Aber nach der Protokolldatei prüfen:

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

Ich sehe einen wahren Grund:

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

Nach dem Ändern der Berechtigung für dieses Verzeichnis

chmod 0700 /usr/local/var/postgres

postgres-Server hat Start.

Überprüfen Sie jedes Mal die Protokolldatei.

7
Roosh

Für eine schnelle Einweg-Testdatenbank können Sie den Server im Vordergrund ausführen.

Initialisieren Sie eine neue Postgres-Datenbank in einem neuen Verzeichnis

mkdir db
initdb db -E utf8
createdb public

Starten Sie den Server im Vordergrund (Strg-C, um den Server zu stoppen)

postgres -d db

Stellen Sie in einer anderen Shell-Sitzung eine Verbindung zum Server her

psql -d public
7
k107

Variation dieser Antwort: https://stackoverflow.com/a/13103603/2394728

initdb `brew --prefix`/var/postgres/data -E utf8`
4
substancejoy

Zu Entwicklungszwecken ist es am einfachsten, Postgres.app von der offiziellen offiziellen Site zu installieren. Es kann aus dem Anwendungsordner oder mit den folgenden Befehlen im Terminal gestartet/gestoppt werden:

# start
open -a Postgres

# stop
killall Postgres
killall postgres
4
Melnosta

PostgreSQL ist in Server.app integriert, das über den App Store in Mountain Lion verfügbar ist. Dies bedeutet, dass es bereits konfiguriert ist und Sie es lediglich starten und Benutzer und Datenbanken erstellen müssen. 

Tipp : Beginnen Sie nicht mit der Definition von $ PGDATA usw., sondern nehmen Sie die Dateispeicherorte so wie sie sind.

Sie hätten diese Datei: /Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist

Anfangen:

Sudo serveradmin start postgres

Prozess wurde mit Argumenten gestartet:

/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 = auf -c log_directory =/Library/Logs/PostgreSQL -c log_filename = PostgreSQL.log -c log_line_prefix =% t -c log_lock_waits = auf -c log_statement = ddl -c logging_collector = auf -c unix_socket_directory =/private/var/pgsql_socket -_runde_cup_ruffin_up_rock_up_ruffin_up_rock_up_rock_up_rock_up_rock_up_rock_up_up_up_up_up_up_up_up_up_up_up_up_up_up_up_up_up_up_up_up_update

Sie können Sudo:

Sudo -u _postgres psql template1

Oder verbinden:

psql -h localhost -U _postgres postgres

Sie finden das Datenverzeichnis, die Version, den Laufstatus usw. mit 

Sudo serveradmin fullstatus postgres  
4
bbaassssiiee
   # 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.
3
zee

Wenn Sie mit brew installiert haben, sollte der folgende Befehl ausreichen.

brew services restart postgresql

Und dies funktioniert manchmal möglicherweise nicht. In diesem Fall sollten auf jeden Fall zwei Befehle funktionieren

rm /usr/local/var/postgres/postmaster.pid

pg_ctl -D /usr/local/var/postgres start
2
shanu khera

Wenn Sie Postgres mit dem EnterpriseDB-Installationsprogramm installiert haben, ist @Kenial der richtige Weg.

Sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data start
Sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data stop
1
hithacker

keine der obigen Antworten hat das Problem behoben, obwohl ich die gleichen Fehlermeldungen erhalten habe. Ich konnte meine Instanz wieder in Betrieb nehmen, indem ich die vorhandene Datei postmaster.pid löschte, die gesperrt war und keine Verbindungen zuließ.

1
Swedendrift

Verwenden Sie für Macports einfach den Befehl load/unload und den Portnamen des laufenden Servers:

Sudo port load postgresql96-server
- or -
Sudo port unload postgresql96-server

sie müssen sich also nicht merken, wo sich die /Library/LaunchDaemons/org.macports.postgresql96.plist-Datei befindet

1
Steve

Es gibt einige Edge-Fälle, die für jemanden hilfreich sein könnten:

Es besteht die Möglichkeit, dass postgres.pid mit einer PID gefüllt wird. Wenn Sie den Computer jedoch neu starten und der Postgress vor dem nächsten Neustart erneut ausgeführt wird, wird diese PID von einem anderen Prozess verwendet. In diesem Fall werden sowohl der pg_ctl-Status als auch der Brühservice, die nach dem Postgres-Status gefragt wurden, darüber informiert, dass UP ist. Nur ps aux | grep und überprüfe ob es wirklich postgress ist

0
Adam Piotrowski

Dies funktionierte jedes Mal für mich, inspiriert von Craig Ringer:

brew install proctools
Sudo pkill -u postgres

proctools beinhaltet pkill. Wenn Sie nicht Brew haben: https://brew.sh/

0
Punnerud

Für Mac/OSX mag ich LaunchRocket für diese und andere Hintergrunddienste, die ich in der Entwicklung verwendete.

https://github.com/jimbojsb/launchrocket

Diese Seite enthält Nizza Anweisungen zur Installation: http://macappstore.org/launchrocket/

Dadurch erhalten Sie in Ihren Systemeinstellungen einen schönen Bildschirm, in dem Sie beim Anmelden starten, neu starten, root starten und starten können.

0
theUtherSide
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

https://hub.docker.com/_/postgres

0
dewijones92

$ brew upgrade postgres

reparierte es für mich.

Das wird natürlich Ihre Postgres-Version aktualisieren und alle Abhängigkeiten aktualisieren/installieren. WARNUNG: Machen Sie sich bewusst, dass sich Ihre Postgresql-Version wahrscheinlich ändert. Für mich war das keine große Sache.

0
thedanotto

Der Vollständigkeit halber: Überprüfen Sie, ob Sie sich in einer Tmux- oder Screen-Instanz befinden. Von dort aus funktioniert das Starten nicht.

Von: https://superuser.com/questions/879640/fehler-während-versuch-zu-start-postgres-installiert-über-homebrew-operation-not-permi/898585

Das hat es für mich gelöst.

0
Fr4nc3sc0NL

das hat bei mir funktioniert (macOS 10.13) Sudo -u postgres /Library/PostgreSQL/9.6/bin/pg_ctl start -D /Library/PostgreSQL/9.6/data

oder erst cd /Library/PostgreSQL/9.6/bin/

0