จะเริ่มต้นเซิร์ฟเวอร์ PostgreSQL บน Mac OS X ได้อย่างไร


989

การปรับปรุงครั้งสุดท้าย:

ฉันลืมรันinitdbคำสั่ง

</ ปรับปรุงครั้งสุดท้าย>

โดยเรียกใช้คำสั่งนี้

ps auxwww | grep postgres

ฉันเห็นว่า postgres ไม่ทำงาน

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

สิ่งนี้ทำให้เกิดคำถาม: ฉันจะเริ่มเซิร์ฟเวอร์ postgresql ได้อย่างไร

อัปเดต:

>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

อัปเดต 2:

การสัมผัสไม่ประสบความสำเร็จดังนั้นฉันจึงทำเช่นนี้แทน:

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

แต่เมื่อฉันพยายามเริ่มต้นเซิร์ฟเวอร์ rails ฉันยังคงเห็นสิ่งนี้:

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

อัปเดต 3:

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

อัปเดต 4:

ฉันพบว่าไม่มี pg_hba.conf (เฉพาะ pg_hba.conf.sample) ดังนั้นฉันจึงปรับเปลี่ยนตัวอย่างและเปลี่ยนชื่อใหม่ (เพื่อกำจัด. ตัวอย่าง) นี่คือเนื้อหา:

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

แต่ฉันไม่เข้าใจสิ่งนี้:

> 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

เพิ่มเติม:

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

อัปเดต 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.

อัปเดต 6:

ดูเหมือนว่าจะแปลก:

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

แม้ว่าฉันทำเช่นนี้:

>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

ดังนั้นฉันทำสิ่งนี้:

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

ดังนั้นฉันลองทำสิ่งนี้:

> 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 

ยังคงได้รับเหมือนกัน "เซิร์ฟเวอร์ทำงานอยู่หรือไม่" ข่าวสาร


คุณติดตั้ง Postgres ได้อย่างไร คุณใช้ผู้จัดการแพ็คเกจหรือติดตั้งด้วยตนเองหรือไม่?
James Allman

1
ไม่สามารถจำได้อย่างแน่นอน แต่ติดตั้งแล้วหรือฉันเรียกใช้ "brew ติดตั้ง postgres" ฉันเอนไปทางหลัง แต่อีกครั้งฉันไม่แน่ใจ 100%
Ramy

ใช้sudoเช่นsudo pg_ctl...
โบฮีเมียน

54
ฉันโหวตสิ่งนี้เพราะการอัพเดทครั้งสุดท้ายทำให้ฉันหัวเราะยากมาก! : D
pkoch

14
ต้อง upvote ฉันมาที่นี่อย่างน้อย 3 ครั้งต่อสัปดาห์เพื่อคัดลอกคำสั่ง pg_ctl แรกเพื่อรีสตาร์ท psql หลังจากการสิ้นสุดที่ไม่คาดคิด .. เฮ้ฉันต้องเรียนรู้มัน: D ขอบคุณเพื่อน!
lucygenik

คำตอบ:


1848

ตัวจัดการแพ็กเกจHomebrewมีตัวเรียกใช้งาน ctl เพื่อเริ่มต้นโดยอัตโนมัติ brew info postgresสำหรับข้อมูลเพิ่มเติมวิ่ง

เริ่มด้วยตนเอง:

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

หยุดด้วยตนเอง:

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

เริ่มโดยอัตโนมัติ:

"หากต้องการให้ launchd เริ่ม postgresql ทันทีและรีสตาร์ทเมื่อเข้าสู่ระบบ:"

brew services start postgresql


ผลลัพธ์ของpg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log startคืออะไร

ผลลัพธ์ของpg_ctl -D /usr/local/var/postgres statusคืออะไร

มีข้อความแสดงข้อผิดพลาดใด ๆ ในเซิร์ฟเวอร์หรือไม่

ตรวจสอบให้แน่ใจว่าการเชื่อมต่อ tcp localhost เปิดใช้งานใน pg_hba.conf:

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

ตรวจสอบ Listen_addresses และพอร์ตเป็น 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)

การทำความสะอาด

Postgres มักถูกติดตั้งผ่านHomebrew , Fink , MacPortsหรือตัวติดตั้งEnterpriseDB

ตรวจสอบเอาต์พุตของคำสั่งต่อไปนี้เพื่อพิจารณาว่าตัวจัดการแพ็กเกจที่ติดตั้งด้วย:

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

1
@Ramy การสัมผัสประสบความสำเร็จหรือไม่? ตรวจสอบการดำรงอยู่และสิทธิ์ของ/ usr / local / var / postgresและserver.log ควรเป็น rw สำหรับหมายเลขผู้ใช้ของคุณ
James Allman

1
@Ramy: คุณสามารถรวมข้อมูลใด ๆ ใน /usr/local/var/postgres/server.log ได้หรือไม่? การติดตั้งของคุณอาจเสียหายและอาจเร็วกว่าในการล้างและติดตั้งใหม่โดยใช้แหล่งที่รู้จักเช่น Homebrew
James Allman

10
เหตุใดจึงจำเป็นทั้งหมดนี้ ทำไมคุณไม่เริ่ม postgres ในแบบที่คุณเริ่มโหนด?
Kinnard Hockenhull

32
ช่างเป็นคำสั่งที่ซับซ้อนอย่างยิ่งที่จะเริ่มและหยุดโปรแกรม
ahnbizcad

3
ยังใช้งานได้ แต่ล้าสมัยเล็กน้อย คำตอบด้านล่างนี้brew services start postgresqlเป็นคำตอบที่ทันสมัยและตรงไปตรงมามากขึ้น
mthorley

372

หากคุณต้องการเริ่มและหยุด postgresql ด้วยตนเอง (ติดตั้งผ่าน homebrew) วิธีที่ง่ายที่สุดคือ:

brew services start postgresql

และ

brew services stop postgresql

หากคุณมีรุ่นที่เฉพาะเจาะจงให้แน่ใจว่าจะต่อท้ายรุ่นเช่น:

brew services start postgresql@10

7
ฉันหวังว่าฉันจะรู้brew servicesเร็วกว่านี้ ... นี่เป็นทางออกเดียวที่เหมาะกับฉัน <3 ขอบคุณ!
seanlinsley

5
brew tap gapple/servicesจะทำให้คำสั่งบริการการชงทำงานได้อีกครั้ง
Fabian Leutgeb

4
ดูเหมือนว่าbrew tap homebrew/servicesยังทำงานได้อยู่github.com/Homebrew/homebrew-services
kangkyu

4
ใช้งานได้หลังจากที่ initdbเรียกใช้สำเร็จแล้ว มิฉะนั้นก็เงียบล้มเหลว ( แต่ดูเหมือนจะได้ทำงานกับบริการที่แสดงเป็นเริ่มต้นในbrew services list.
Dmitri

1
ฉันต้องการเรียกใช้brew services restart postgresqlเนื่องจากเริ่มต้น db ด้วย pg_ctl หรือbrew services startพูดว่า "เซิร์ฟเวอร์อื่นอาจกำลังทำงาน" และหยุด db ด้วย pg_ctl ที่หยุดทำงาน
tomf

181

ฉันมีปัญหาเดียวกันเกือบทั้งหมดและคุณอ้างคำสั่ง initdb ว่าเป็นการแก้ไข นี่เป็นทางออกสำหรับฉันด้วย แต่ฉันไม่เห็นว่ามีใครโพสต์ไว้ที่นี่ดังนั้นสำหรับผู้ที่กำลังมองหา:

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

16
สิ่งนี้ใช้งานได้สำหรับฉันด้วย initdb บอกฉันว่าฉันได้ตั้งค่าเรียบร้อยแล้วดังนั้นฉันจึงลบไดเรกทอรีทั้งหมด: "rm -rf / usr / local / var / postgres" รันคำสั่งของคุณอีกครั้งและเซิร์ฟเวอร์ของฉันเริ่มทำงานแล้ว ขอบคุณมากครับ!
Jorge Sampayo

5
ใช่ฉันต้องวิ่งrm -rf /usr/local/var/postgresแล้วสิ่งนี้ก็ใช้ได้กับฉัน
Lee McAlilly

2
นี่คือสิ่งที่ทำงานสำหรับฉันเช่นกัน ก่อน initdb ฉันต้อง chown postgres dir ( chown _your username on your comp_ usr/local/var/postgres) แล้วก็ initdb หลังจากนั้นเซิร์ฟเวอร์เริ่มทำงานโดยอัตโนมัติเมื่อคุณเริ่มต้น (ถ้าคุณทำตามคำแนะนำของ Homebrew สำหรับที่) pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log startหรือด้วยตนเอง
septerr

2
หลังจากinitdb(รวมถึงการลบไดเรกทอรีเก่าถ้าจำเป็น) brew services start postgresqlทำงาน
Dmitri

หากแนวคิดในการทำrm -rfทุกสิ่งที่อยู่ในฐานข้อมูลของคุณทำให้คุณกลัวเล็กน้อยแทนที่จะลบทิ้งทั้งหมดคุณสามารถใช้สิ่งที่ต้องการmv /usr/local/var/postgres /usr/local/var/postgres.backupย้ายไปยังไดเรกทอรีสำรองข้อมูลใหม่จากนั้นเรียกใช้คำสั่งเพื่อเริ่มต้นฐานข้อมูลอีกครั้ง
Hartley Brody

102

หากคอมพิวเตอร์ของคุณเริ่มระบบใหม่ทันที

ก่อนอื่นคุณต้องลบไฟล์/usr/local/var/postgres/postmaster.pidจากนั้นคุณสามารถเริ่มบริการใหม่ได้โดยใช้หนึ่งในวิธีที่กล่าวถึงอื่น ๆ ขึ้นอยู่กับการติดตั้งของคุณ

คุณสามารถตรวจสอบสิ่งนี้ได้โดยดูที่บันทึกของ Postgres เพื่อดูว่าเกิดอะไรขึ้น: tail -f /usr/local/var/postgres/server.log


2
คุณสามารถตรวจสอบtail -f /usr/local/var/postgres/server.logเพื่อดูว่าคุณควรลบไฟล์นั้น ref coderwall.com/p/zf-fww/…
user1448319

Mine อยู่ภายใต้ / Users / <user> / Library / Application \ Support / Postgres / var-9.6 / postmaster.pid
BatteryAcid

สำหรับ homebrew ติดตั้งพา ธ คือ~/homebrew/var/postgres/postmaster.pid
blnc

2
ว้าว ... แค่นี้ใช้ได้สำหรับฉัน! คุณช่วยอธิบายรายละเอียดเพิ่มเติมpostmaster.pidได้ไหมว่าทำไมเราควรลบหากคอมพิวเตอร์รีสตาร์ทโดยฉับพลัน?
adkl

1
สิ่งนี้มีประโยชน์จริงๆ
NinComPoop

81

อีกวิธีหนึ่งคือการใช้อัญมณีอาหารกลางวัน (เสื้อคลุมสำหรับ Launchctl):

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

ในการเริ่มต้น postgres:

lunchy start postgres

หากต้องการหยุด postgres:

lunchy stop postgres

สำหรับข้อมูลเพิ่มเติมอ้างถึง: " วิธีการติดตั้ง PostgreSQL บน Mac ด้วย Homebrew และ Lunchy "


ขึ้นอยู่กับว่าคุณติดตั้ง postgres อย่างไรคุณอาจต้องใช้ postgresql แทน postgres
Devon Kiss

72

ที่นี่ 2 เซนต์ของฉัน: ฉันสร้างนามแฝงสำหรับ postgres pg_ctl และวางไว้ใน. bash_profile (เวอร์ชัน postgresql ของฉันคือ 9.2.4 และพา ธ ฐานข้อมูลคือ /Library/PostgreSQL/9.2/data)

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

เรียกใช้เทอร์มินัลใหม่

ถ้าอย่างนั้น คุณสามารถเริ่ม / หยุดเซิร์ฟเวอร์ postgresql ของคุณด้วยสิ่งนี้:

postgres.server start
postgres.server stop

การระบุไดเรกทอรีข้อมูลด้วย -D เป็นกุญแจสำคัญที่นี่
olore

3
ฉันยังคงได้รับ "โปรดเข้าสู่ระบบ (ใช้เช่น" su ") ในฐานะผู้ใช้ (ไม่มีสิทธิ์) ที่จะเป็นเจ้าของกระบวนการเซิร์ฟเวอร์" เมื่อใช้งาน sudo +1
pyb

ขอบคุณ คำแนะนำของเครื่องมือ postgres เพื่อใช้ su ล้มเหลวอย่างน่าสังเวช sudo -u ทำงานได้ยอดเยี่ยม (ใน El Capitan)
uchuugaka

33

วิธีที่สะอาดโดยไกลที่จะเริ่มต้น / หยุด / postgres รีสตาร์ทถ้าคุณได้ติดตั้งมันผ่านbrewคือการยกเลิกการโหลดเพียงและ / หรือโหลดไฟล์การกำหนดค่า launchd ที่มาพร้อมกับการติดตั้ง:

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

บรรทัดแรกจะหยุด postgres และบรรทัดที่สองจะเริ่มขึ้น ไม่จำเป็นต้องระบุไดเรกทอรีข้อมูลใด ๆ เป็นต้นเนื่องจากทุกอย่างอยู่ในไฟล์นั้น


ใช้งานได้ดีสำหรับ PostgreSQL 9.5.3 ที่ติดตั้งบน OS X ผ่าน Brew !! ขอบคุณ!
jpswain

สิ่งนี้ทำงานได้อย่างมีเสน่ห์เมื่อเซิร์ฟเวอร์ postgres ไม่ได้ปิดอย่างถูกต้องและไม่ยอมรับการเชื่อมต่อขาเข้า
Augusto Samamé Barrientos

5
Homebrew เองมีคำสั่งล้อมง่ายสำหรับคำสั่งเหล่านี้เช่น: brew services start postgres(และหยุด) โยน-vท้ายที่สุดแล้วคุณจะเห็นว่ามันกำลังทำอะไรอยู่
Mark Edington

28

ในการเริ่มต้นเซิร์ฟเวอร์ postgresql:

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

เพื่อสิ้นสุดเซิร์ฟเวอร์ postgresql:

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

คุณสามารถสร้างนามแฝงผ่าน CLI เพื่อให้ง่ายขึ้น:

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'

ด้วยสิ่งเหล่านี้คุณสามารถพิมพ์ "pg-start" เพื่อเริ่ม Postgres และ "pg-stop" เพื่อปิดมัน


3
ฉันพบข้อผิดพลาดในpg_ctl: directory "/usr/local/var/postgres" is not a database cluster directoryการแก้ไขปัญหานี้อย่างไร
Rohman Masyhar

22

สำหรับวัตถุประสงค์ในการทดสอบฉันคิดว่า PostgreSQL App เป็นตัวเลือกที่ดีที่สุด!

เรียกใช้แอปและเซิร์ฟเวอร์เปิดใช้งาน ปิดแอพและเซิร์ฟเวอร์จะหยุดทำงาน

http://postgresapp.com/


9

เมื่อคุณติดตั้ง postgresql โดยใช้ homebrew:

brew install postgres

ในตอนท้ายของผลลัพธ์คุณจะเห็นวิธีนี้เพื่อเริ่มต้นเซิร์ฟเวอร์:

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

ฉันคิดว่านี่เป็นวิธีที่ดีที่สุด

คุณสามารถเพิ่มนามแฝงลงในโปรไฟล์ของคุณเพื่อความสะดวก


7

สำหรับฐานข้อมูลการทดสอบแบบใช้ครั้งเดียวแบบรวดเร็วคุณสามารถเรียกใช้เซิร์ฟเวอร์ในเบื้องหน้า

เริ่มต้นฐานข้อมูล postgres ใหม่ในไดเรกทอรีใหม่

mkdir db
initdb db -E utf8
createdb public

เริ่มต้นเซิร์ฟเวอร์ในเบื้องหน้า (ctrl-C เพื่อหยุดเซิร์ฟเวอร์)

postgres -d db

ในเซสชันเชลล์อื่นให้เชื่อมต่อกับเซิร์ฟเวอร์

psql -d public

ดูเหมือนว่าจะดี แต่ใช้งานไม่ได้สำหรับฉัน - ไม่ใช่เซิร์ฟเวอร์ที่จะทำงานอยู่แล้วเพื่อทำตามขั้นตอนที่สร้างขึ้น เมื่อฉันพยายามที่จะเริ่มให้บริการมันบอกว่ามันต้องการ PGDATA หรือ config-file ซึ่งยังไม่มีอยู่ ฉันพลาดอะไรไป
szeitlin

7

ฉันมีปัญหาเดียวกันและดำเนินการอัปเดตทั้งหมดจากโพสต์แรก แต่หลังจากตรวจสอบไฟล์บันทึก:

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

ฉันเห็นสาเหตุที่แท้จริง:

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

หลังจากเปลี่ยนสิทธิ์ในไดเรกทอรีนี้

chmod 0700 /usr/local/var/postgres

เซิร์ฟเวอร์ postgres เริ่มต้นแล้ว

ตรวจสอบไฟล์บันทึกทุกครั้ง


5

PostgreSQL นั้นรวมอยู่ในServer.appผ่านทาง App Store ใน Mountain Lion ซึ่งหมายความว่ามีการกำหนดค่าไว้แล้วและคุณจะต้องเปิดใช้งานจากนั้นสร้างผู้ใช้และฐานข้อมูล

เคล็ดลับ : อย่าเริ่มต้นด้วยการกำหนด $ PGDATA และอื่น ๆ ใช้ตำแหน่งไฟล์ตามที่เป็น

คุณจะมีไฟล์นี้: /Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist

เริ่ม:

sudo serveradmin start postgres

กระบวนการเริ่มต้นด้วยอาร์กิวเมนต์:

/Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D / ไลบรารี / เซิร์ฟเวอร์ / PostgreSQL / ข้อมูล -c Listen_addresses = 127.0.0.1, :: 1 -c log_connections = บน -c log_directory = / ไลบรารี / บันทึก / PostgreSQL -c log_filename = PostgreSQL.log -c log_line_prefix =% t -c log_lock_wa_g_messages_waits = บน -c log_statement = ddl -c logging_collector = บน -c unix_socket_directory =

คุณสามารถ sudo:

sudo -u _postgres psql template1

หรือเชื่อมต่อ:

psql -h localhost -U _postgres postgres

คุณสามารถค้นหาไดเรกทอรีข้อมูลรุ่นสถานะการทำงานและอื่น ๆ ด้วย

sudo serveradmin fullstatus postgres  

ไม่พบสิ่งอื่นอีกมากมายที่แสดงวิธีใช้ตัวสร้างใน Postgres ช่วยฉันค้นหาคำสั่ง serveradmin ด้วย ขอบคุณ
Jason S

การเรียกใช้บริการในฐานะผู้ใช้รูท (sudo) ไม่ใช่ความคิดที่ดีทันทีที่เกิดปัญหาด้านความปลอดภัยคอมพิวเตอร์ทั้งหมดจะถูกบุกรุก
Carlos Barcelona

postgresql ไม่ได้ทำงานเป็น root แต่เป็น _postgres
bbaassssiiee

5

รูปแบบของคำตอบนี้: 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

คุณควรเพิ่มลิงค์ไปยังคำตอบที่คุณอ้างถึง
Jeffrey Bosboom

สิ่งนี้มีประโยชน์เนื่องจาก pg ของฉันทำงานได้ดีและทันใดนั้นก็หยุดทำงานและไม่สามารถค้นหาโฟลเดอร์ / var / postgres ได้
shinesecret

ใครช่วยกรุณาแสดงความคิดเห็นว่าทำไมถึงดีกว่าคำตอบที่เชื่อมโยง? อย่างที่ฉันเห็นฉัน upvoted จากครั้งล่าสุดที่ฉันมีปัญหาที่คล้ายกันฉันจะใช้มันเนื่องจากไม่มีเหตุผลให้ที่นี่
MCB

4

เพื่อการพัฒนาซึ่งเป็นหนึ่งในวิธีที่ง่ายที่สุดคือการติดตั้ง Postgres.app จากเว็บไซต์อย่างเป็นทางการ สามารถเริ่ม / หยุดจากโฟลเดอร์ Applications หรือใช้คำสั่งต่อไปนี้ใน terminal:

# start
open -a Postgres

# stop
killall Postgres
killall postgres

18
killallอาจไม่ใช่วิธีที่ดีที่สุดในการหยุดฐานข้อมูล
Risadinha

4
   # 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.

4

หากคุณติดตั้งโดยใช้การชงคำสั่งด้านล่างควรจะเพียงพอ

brew services restart postgresql

และบางครั้งสิ่งนี้อาจไม่ทำงานในกรณีที่ด้านล่างสองคำสั่งควรใช้งานได้อย่างแน่นอน

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

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

1

ไม่มีคำตอบข้างต้นแก้ไขปัญหาสำหรับฉันแม้จะได้รับข้อความแสดงข้อผิดพลาดเดียวกัน ฉันสามารถรับอินสแตนซ์ของฉันสำรองและเรียกใช้โดยการลบไฟล์ postmaster.pid ที่มีอยู่ซึ่งถูกล็อคและไม่อนุญาตการเชื่อมต่อ


1

สำหรับ macports เพียงใช้คำสั่ง load / unload และชื่อพอร์ตของเซิร์ฟเวอร์ที่รันอยู่:

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

ดังนั้นคุณไม่จำเป็นต้องจำตำแหน่งของ/Library/LaunchDaemons/org.macports.postgresql96.plistไฟล์



1

หากคุณติดตั้ง Postgres โดยใช้ตัวติดตั้ง EnterpriseDB สิ่งที่ @Kenial แนะนำคือวิธีที่จะไป

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

1

ที่เหมาะกับฉัน (macOS 10.13) sudo -u postgres /Library/PostgreSQL/9.6/bin/pg_ctl start -D /Library/PostgreSQL/9.6/data

หรือก่อน cd /Library/PostgreSQL/9.6/bin/


1

$ brew upgrade postgres

แก้ไขให้ฉัน

แน่นอนว่าจะอัพเกรดรุ่น postgres ของคุณและอัปเดต / ติดตั้งการอ้างอิงใด ๆ

คำเตือน: ทำสิ่งนี้โดยรู้ว่ารุ่น postgresql ของคุณมีแนวโน้มที่จะเปลี่ยนไป สำหรับฉันนั่นไม่ใช่เรื่องใหญ่


0

สำหรับ Mac / OSX ฉันชอบ LaunchRocket สำหรับบริการนี้และบริการอื่น ๆ ที่ฉันใช้ในการพัฒนา

https://github.com/jimbojsb/launchrocket

ไซต์นี้มีคำแนะนำที่ดีเกี่ยวกับการติดตั้ง: http://macappstore.org/launchrocket/

สิ่งนี้จะช่วยให้คุณมีหน้าจอที่ดีในการตั้งค่าระบบของคุณที่ช่วยให้คุณสามารถเปิด, รีบูต, รูท, เปิดตัวที่เข้าสู่ระบบ


0

สิ่งนี้ใช้ได้กับฉันทุกครั้งที่ได้แรงบันดาลใจจาก Craig Ringer:

brew install proctools
sudo pkill -u postgres

proctools รวมถึง pkill หากคุณไม่มี Brew: https://brew.sh/



0

มีกรณีขอบบางอย่างที่อาจจะเป็นประโยชน์สำหรับใครบางคน:

มีตัวเลือกคือคุณจะมี postgres.pid ที่เต็มไปด้วย PID บางส่วน แต่ถ้าคุณรีสตาร์ทเครื่องของคุณและก่อนที่ postgress จะกลับมาอีกครั้งกระบวนการอื่นจะใช้ PID นั้น หากสิ่งนั้นจะเกิดขึ้นทั้งสถานะ pg_ctl และบริการชงถามเกี่ยวกับสถานะ postgres จะบอกคุณว่ามันเป็น UP เพียงแค่ ps aux | grep และตรวจสอบว่ามัน postgress จริง ๆ


0

Homebrew เป็นวิธี !!

ในการเริ่มบริการ:

brew services start postgresql   

ในการแสดงรายการ:

brew services list |grep postgres

เพื่อหยุดบริการ:

brew services stop postgresql 

0

หากคุณไม่ได้ติดตั้งด้วย brew และโดยตรงจากแพ็คเกจ mac สิ่งนี้ใช้ได้กับ PostgreSQL 12 เมื่อใช้ตำแหน่งตัวแปรและอื่น ๆ ทั้งหมด

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

0

ฉันกำลังเผชิญกับปัญหาเดียวกัน ลองใช้วิธีแก้ไขปัญหาทั้งหมด แต่ก็ไม่ได้ผล

การจัดการในที่สุดจะได้รับมันทำงานโดยการเปลี่ยน postgres HOST ในการตั้งค่า Django จากไปlocalhost127.0.0.1

ไชโยถ้ามันช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.