Hoe kan ik de PostgreSQL-server starten op Mac OS X?

Ik was vergeten de opdracht initdbuit te voeren.


Door deze opdracht uit te voeren

ps auxwww | grep postgres

Ik zie dat postgresniet actief is

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

Dit roept de vraag op:

Hoe start ik de PostgreSQL-server?

Bijwerken:

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

De aanrakingwas niet succesvol, dus ik deed dit in plaats daarvan:

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

Maar als ik de Ruby on Rails-server probeer te starten, zie ik nog steeds dit:

Loopt de server op host “localhost” en accepteert
TCP/IP-verbindingen op poort 5432?

Update 3:

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

Update 4:

Ik ontdekte dat er geenpg_hba.confbestand was (alleen bestand pg_hba.conf.sample), dus ik heb het voorbeeld aangepast en hernoemd (om het .sample te verwijderen). Dit is de inhoud:

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

Maar ik begrijp dit niet:

> 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

Ook:

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:

Dit lijkt vreemd:

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

Hoewel ik dit wel heb gedaan:

>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

Dus ik deed dit:

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

Dus ik probeerde dit:

> 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

Ik krijg nog steeds dezelfde melding “Is de server actief?” bericht.


Antwoord 1, autoriteit 100%

De pakketbeheerder Homebrewbevat launchctl-lijsten om automatisch te starten. Voer brew info postgresuit voor meer informatie.

Handmatig starten

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

Handmatig stoppen

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

Automatisch starten

“Om te starten postgresql nu te starten en opnieuw te starten bij inloggen:”

brew services start postgresql


Wat is het resultaat van pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start?

Wat is het resultaat van pg_ctl -D /usr/local/var/postgres status?

Zijn er foutmeldingen in de server.log?

Zorg ervoor dat tcp localhost-verbindingen zijn ingeschakeld in pg_hba.conf:

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

Controleer de listen_addresses en 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)

Opruimen

PostgreSQL is hoogstwaarschijnlijk geïnstalleerd via Homebrew, Fink, MacPortsof de EnterpriseDBinstallatieprogramma.

Controleer de uitvoer van de volgende opdrachten om te bepalen met welke pakketbeheerder het is geïnstalleerd:

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

Antwoord 2, autoriteit 21%

Als je PostgreSQL handmatig wilt starten en stoppen (geïnstalleerd via Homebrew), de gemakkelijkste manier is:

brew services start postgresql

en

brew services stop postgresql

Als je een specifieke versie hebt, zorg er dan voor dat je de versie achtervoegt. Bijvoorbeeld:

brew services start postgresql@10

Antwoord 3, autoriteit 9%

Ik had bijna exact hetzelfde probleem en u noemde het initdb-commando als de oplossing. Dit was voor mij ook de oplossing, maar ik zag niet dat iemand het hier gepost had, dus voor wie het zoekt:

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

4, Autoriteit 6%

Als uw computer abrupt opnieuw is opgestart


Mogelijk wilt u PG-server starten, maar het was niet.

Ten eerste moet u het bestand verwijderen /usr/local/var/postgres/postmaster.pidDAN U kunt de service opnieuw opstarten met behulp van een van de vele andere genoemde methoden, afhankelijk van uw installatie.

U kunt dit verifiëren door naar de logboeken van PostGres te kijken om te zien wat er mogelijk aan de gang is: tail -f /usr/local/var/postgres/server.log

Voor specifieke versie: –

tail -f /usr/local/var/postgres@[VERSION_NUM]/server.log
Eg:
 tail -f /usr/local/var/postgres@11/server.log

5, Autoriteit 4%

Een andere aanpak gebruikt de lunchy edelstenen (een wrapper voor launchctl):

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

Start PostGresql:

lunchy start postgres

Om PostGresql te stoppen:

lunchy stop postgres

Zie voor meer informatie: Hoe PostGresql op een Mac met homebrew en lunch te installeren


6, Autoriteit 2%

De schoonste manier veruit om PostGRESQL te starten / stoppen / opnieuw opstarten als u deze hebt geïnstalleerd via brewis om eenvoudigweg de LaunchD configuratiebestand met de installatie:

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

De eerste regel stopt postgresql en de tweede regel zal het starten. Er is geen behoefte aan gegevensdirectories, enz. Omdat alles in dat bestand is.


7

Om de PostgreSQL-server te starten:

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

Om de PostgreSQL-server te beëindigen:

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

U kunt ook een alias maken via CLI om het gemakkelijker te maken:

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'

Met deze kunt u gewoon “PG-start” typen om PostgreSQL en “PG-STOP” te starten om deze af te sluiten.


8

Voor testdoeleinden denk ik dat Postgresql-app de beste optie is!

Voer een app uit en de server is actief.

Sluit de app en de server daalt.

http://postgresapp.com/


9

Wanneer u PostgreSQL installeert met homebrew ,

brew install postgres

Aan het einde van de uitvoer ziet u deze methoden om de server te 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

Ik denk dat dit de beste manier is.

U kunt een alias toevoegen aan uw .Profile -bestand voor het gemak.


10

Als u met Homebrew hebt geïnstalleerd, moet de onderstaande opdracht voldoende zijn.

brew services restart postgresql

Dit werkt soms niet. In dat geval moeten de onderstaande twee opdrachten beslist werken:

rm /usr/local/var/postgres/postmaster.pid
pg_ctl -D /usr/local/var/postgres start

Antwoord 11

Ik had hetzelfde probleem en heb alle updates vanaf de eerste post uitgevoerd. Maar na controle van het logbestand,

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

Ik zie de ware oorzaak:

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

Na het wijzigen van de rechten voor deze map,

chmod 0700 /usr/local/var/postgres

de PostgreSQL-server is gestart.

Controleer het logbestand elke keer.


Antwoord 12

Voor een snelle testdatabase voor eenmalig gebruik kunt u de server op de voorgrond gebruiken.

Initialiseer een nieuwe PostgreSQL-database in een nieuwe map:

mkdir db
initdb db -E utf8
createdb public

Start de server op de voorgrond (Ctrl+ Com de server te stoppen):

postgres -d db

Verbind in een andere shell-sessie met de server

psql -d public

Antwoord 13

Variatie op dit antwoord: https://stackoverflow.com/a/13103603/2394728

initdb `brew --prefix`/var/postgres/data -E utf8`` &&  pg_ctl -D /usr/local/var/postgres/data -l logfile start

Antwoord 14

PostgreSQL is geïntegreerd in Server.appbeschikbaar via de App Storein Mac OS X v10.8(Mountain Lion ). Dat betekent dat het al is geconfigureerd en dat u het alleen hoeft te starten en vervolgens gebruikers en databases aan te maken.

Tip: Begin niet met het definiëren van $PGDATA enzovoort. Neem bestandslocaties zoals ze zijn.

Je zou dit bestand hebben:
/Bibliotheek/Server/PostgreSQL/Config/org.postgresql.postgres.plist

Om te beginnen:

sudo serveradmin start postgres

Proces gestart met argumenten:

/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=/ Bibliotheek/Logs/PostgreSQL -c log_filename=PostgreSQL.log -c log_line_prefix=%t -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/private/var/pgsql_socket -c unix_socket_group unix_socket_permissions=0770

U kunt sudo:

sudo -u _postgres psql template1

Of maak verbinding:

psql -h localhost -U _postgres postgres

U kunt de gegevensmap, versie, status enzovoort vinden met

sudo serveradmin fullstatus postgres

Antwoord 15

Voor ontwikkelingsdoeleinden is een van de eenvoudigste manieren om Postgres.app te installeren vanaf de officiële site. Het kan worden gestart/gestopt vanuit de map Applicatiesof door de volgende opdrachten in terminal te gebruiken:

# Start
open -a Postgres
# Stop
killall Postgres
killall postgres

Antwoord 16

Als je het niet hebt geïnstalleerd met Homebrewen rechtstreeks vanaf de Mac pakket, werkte dit voor mij voor PostgreSQL 12 bij gebruik van alle standaardlocaties, variabelen, enz.

$ sudo su postgres
bash-3.2$ /Library/PostgreSQL/12/bin/pg_ctl -D /Library/PostgreSQL/12/data/ stop

Antwoord 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 PostgreSQL server
$ postgres -D /usr/local/var/postgres
# Create your database
$ createdb mydb
# Access the database
$ psql mydb
psql (9.0.1)
Type "help" for help.

Antwoord 18

Dit werkte voor mij (macOS v10.13(High Sierra)):

sudo -u postgres /Library/PostgreSQL/9.6/bin/pg_ctl start -D /Library/PostgreSQL/9.6/data

Of eerst

cd /Library/PostgreSQL/9.6/bin/

Antwoord 19

voor macports , gebruik gewoon de opdracht Load / Unload en de poortnaam van het hardlopen Server:

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

Dus u hoeft u niet te onthouden waar de /Library/LaunchDaemons/org.macports.postgresql96.plistBestand bevindt.


20

Als u PostgreSQL hebt geïnstalleerd met behulp van de EnterprisedB-installatieprogramma, dan wat Kenial suggereerde is de manier om te gaan:

sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data start
sudo -u postgres pg_ctl -D /Library/PostgreSQL/{version}/data stop

21

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

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


22

Geen van de vorige antwoorden heeft het probleem voor mij vastgesteld, ondanks dat het verkrijgen van dezelfde foutmeldingen.

Ik was in staat om mijn instantie weer te krijgen en te draaien door het bestaande postmaster.pid -bestand te verwijderen dat is vergrendeld en niet toestond.


23

homebrew is de weg !!

Om de service te starten:

brew services start postgresql

Om het te vermelden:

brew services list | grep postgres

Om de service te stoppen:

brew services stop postgresql

24

Voor Mac & NBSP; OS & NBSP; X, ik hou echt van launchreket voor deze en andere achtergronddiensten die ik gebruikte in ontwikkeling.

Deze site heeft leuk instructies op installatie .

Hiermee geeft u een mooi scherm in uw systeemvoorkeuren waarmee u inloggen, opnieuw opstarten, rooten, rooten en starten.


25

Dit werkte elke keer voor mij, geïnspireerd op Craig Ringer:

brew install proctools
sudo pkill -u postgres

Proctools omvat pkill . Als je geen homebrew hebt: https://brew.sh/


26

Voor de volledigheid: Controleer of u zich in een tmux of scherm instantie. Beginnend werkt niet vanaf daar.

Van: Fout bij het starten van PostgreSQL geïnstalleerd via Homebrew: “Bewerking niet toegestaan”

Dit heeft het voor mij opgelost.


Antwoord 27

Er is een randgeval dat misschien nuttig is voor iemand:

Er is een optie dat je postgres.pid gevuld hebt met een of andere PID.
Als u uw machine opnieuw opstart en voordat PostgreSQL weer terug is, zal een ander proces die PID gebruiken.

Als dat gebeurt, worden zowel de pg_ctl-status als de brew-service gevraagd naar de PostgreSQL-status, en wordt u verteld dat deze upis .

Doe gewoon ps aux | grep <yourPID>en controleer of het echt PostgreSQL is.


Antwoord 28

Ik had hetzelfde probleem. Ik heb al deze oplossingen geprobeerd, maar geen enkele werkte.

Ik heb het eindelijk werkend gekregen door de PostgreSQL HOSTte wijzigen in Django-instellingen van localhosttot 127.0.0.1.

Other episodes