it-swarm.asia

كيف تبدأ خادم PostgreSQL على نظام Mac OS X؟

التحديث النهائي:

لقد نسيت تشغيل الأمر 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) لذا قمت بتعديل العينة وأعدت تسميته (لمزيل .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 

لا يزال الحصول على نفسه "هل يعمل الخادم؟" رسالة.

876
Ramy

يتضمن Homebrew package manager قوائم تشغيل لبدء التشغيل تلقائيًا. لمزيد من المعلومات ، قم بتشغيل brew info postgres.

ابدأ يدويًا:

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

توقف يدويًا:

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

ابدأ تلقائيًا:

"لبدء إطلاق 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؟

هل هناك أي رسائل خطأ في server.log؟

تأكد من تمكين اتصالات المضيف المحلي tcp في 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 على الأرجح من خلال البيرة ، Fink ، MacPorts أو EnterpriseDB المثبت.

تحقق من إخراج الأوامر التالية لتحديد مدير الحزم الذي تم تثبيته به:

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

إذا كنت ترغب في بدء postgresql وإيقافه يدويًا (مثبت عبر البيرة) ، فإن أسهل طريقة هي:

brew services start postgresql

و

brew services stop postgresql
308
malopezcruz

كان لدي نفس المشكلة تقريبًا ، وقد ذكرت أن الأمر initdb هو الإصلاح. كان هذا هو الحل أيضًا بالنسبة لي ، لكنني لم أر أن أي شخص نشره هنا ، لذلك بالنسبة لأولئك الذين يبحثون عنه:

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

هناك طريقة أخرى تتمثل في استخدام الأحجار الكريمة lunchy (غلاف لـ 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 and Lunchy "

80
pisaruk

إذا تم إعادة تشغيل جهاز الكمبيوتر الخاص بك فجأة

أولاً ، يجب عليك حذف الملف /usr/local/var/postgres/postmaster.pid ، ثم يمكنك إعادة تشغيل الخدمة باستخدام إحدى الطرق الأخرى العديدة المذكورة بناءً على التثبيت.

يمكنك التحقق من ذلك من خلال الاطلاع على سجلات Postgres لمعرفة ما يمكن أن يحدث: tail -f /usr/local/var/postgres/server.log

76
rafaelportela

هنا سنتي: لقد قمت بعمل اسم مستعار لـ 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
68
Kenial

الطريقة الأنظف إلى حد بعيد لبدء/إيقاف/إعادة تشغيل postgres إذا كنت قد قمت بتثبيته من خلال brew هو ببساطة إلغاء تحميل و/أو تحميل ملف تكوين launchd الذي يأتي مع التثبيت:

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

سيتم إيقاف السطر الأول postgres والبدء في تشغيل السطر الثاني. لا حاجة لتحديد أي أدلة البيانات وما إلى ذلك لأن كل شيء موجود في هذا الملف.

33
Markus Amalthea Magnuson

لبدء خادم 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" لإغلاقها.

27
Todd

لأغراض الاختبار ، أعتقد أن تطبيق PostgreSQL هو الخيار الأفضل!

قم بتشغيل تطبيق ، والخادم قيد التشغيل. أغلق التطبيق ، وينخفض ​​الخادم.

http://postgresapp.com/

22
Crystian Leão

عند تثبيت postgresql باستخدام البيرة:

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

أعتقد أن هذه هي أفضل طريقة.

يمكنك إضافة اسم مستعار إلى ملفك الشخصي للراحة.

9
jkaluzka

لدي نفس المشكلة وأجري جميع التحديثات من أول وظيفة. ولكن بعد التحقق من ملف السجل:

/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

خادم بوستجرس بدأ.

في كل مرة تحقق ملف السجل.

7
Roosh

للحصول على قاعدة بيانات اختبار سريعة يمكن التخلص منها ، يمكنك تشغيل الخادم في المقدمة.

تهيئة قاعدة بيانات postgres جديدة في دليل جديد

mkdir db
initdb db -E utf8
createdb public

قم ببدء تشغيل الخادم في المقدمة (ctrl-C لإيقاف الخادم)

postgres -d db

في جلسة عمل Shell أخرى ، اتصل بالخادم

psql -d public
7
k107

الاختلاف في هذه الإجابة: https://stackoverflow.com/a/13103603/2394728

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

لأغراض التطوير ، واحدة من أبسط الطرق هي تثبيت Postgres.app من الموقع الرسمي . يمكن تشغيله/إيقافه من مجلد التطبيقات أو استخدام الأوامر التالية في الجهاز:

# start
open -a Postgres

# stop
killall Postgres
killall postgres
4
Melnosta

تم دمج 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/Library/Server/PostgreSQL/Data -c listen_addresses = 127.0.0.1، :: 1 -c log_connections = on -c log_directory =/Library/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-unc_project_copy

يمكنك سودو:

Sudo -u _postgres psql template1

أو الاتصال:

psql -h localhost -U _postgres postgres

يمكنك العثور على دليل البيانات والإصدار وحالة التشغيل وما إلى ذلك

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

أيا من الإجابات المذكورة أعلاه إصلاح المشكلة بالنسبة لي على الرغم من الحصول على رسائل الخطأ نفسها. تمكنت من استعادة مثيلي وتشغيله عن طريق حذف ملف postmaster.pid الموجود والذي تم إغلاقه وعدم السماح بالاتصالات.

1
Swedendrift

بالنسبة لنظام التشغيل macports ، ما عليك سوى استخدام أمر التحميل/إلغاء التحميل واسم منفذ خادم التشغيل:

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

لذلك ليس عليك أن تتذكر مكان وجود ملف /Library/LaunchDaemons/org.macports.postgresql96.plist

1
Steve

$ brew upgrade postgres

إصلاحه بالنسبة لي.

هذا ، بالطبع ، سوف ترقية إصدار postgres الخاص بك وتحديث/تثبيت أي التبعيات. تحذير: هل هذا مع العلم أن إصدار postgresql الخاص بك من المرجح أن يتغير. بالنسبة لي ، لم يكن ذلك مشكلة كبيرة.

1
thedanotto

كان هذا الأمر مفيدًا لي في كل مرة ، مستوحى من كريج رينجر:

brew install proctools
Sudo pkill -u postgres

proctools يشمل pkill. إذا لم يكن لديك مشروب: https://brew.sh/

0
Punnerud

بالنسبة لنظام التشغيل Mac/OSX ، أحب تطبيق LaunchRocket لهذه الخدمات وغيرها من الخدمات الأساسية التي استخدمتها في التطوير.

https://github.com/jimbojsb/launchrocket

يحتوي هذا الموقع على تعليمات لطيفة بشأن التثبيت: http://macappstore.org/launchrocket/

يمنحك هذا شاشة جميلة في "تفضيلات النظام" الخاصة بك والتي تتيح لك التشغيل ، إعادة التشغيل ، الجذر ، التشغيل عند تسجيل الدخول.

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

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

0
dewijones92

للتأكد من اكتمالها: تحقق مما إذا كنت داخل مثيل Tmux أو Screen ، فالبدء لن ينجح من هناك.

من: https://superuser.com/questions/879640/error-while-trying-to-start-postgres-installed-via-homebrew-operation-not-permi/898585

هذا حلها بالنسبة لي.

0
Fr4nc3sc0NL