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.
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
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
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
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 "
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
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
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.
Zu Testzwecken denke ich, dass PostgreSQL App die beste Option ist!
Führen Sie eine App aus, und der Server ist in Betrieb.
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.
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.
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
Variation dieser Antwort: https://stackoverflow.com/a/13103603/2394728
initdb `brew --prefix`/var/postgres/data -E utf8`
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
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
# 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.
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
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
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ß.
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
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
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/
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.
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
$ 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.
Der Vollständigkeit halber: Überprüfen Sie, ob Sie sich in einer Tmux
- oder Screen
-Instanz befinden. Von dort aus funktioniert das Starten nicht.
Das hat es für mich gelöst.
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/