macos - मैक ओएस एक्स पर PostgreSQL सर्वर कैसे शुरू करें?




homebrew (13)

अंतिम अद्यतन:

मैं initdb कमांड चलाने के लिए भूल गया था।

</ अंतिम अपडेट>

इस आदेश को चलाकर

ps auxwww | grep 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

लेकिन जब मैं रेल सर्वर शुरू करने का प्रयास करता हूं, तो भी मुझे यह दिखाई देता है:

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 

अभी भी वही हो रहा है "क्या सर्वर चल रहा है?" संदेश।


PostgreSQL को माउंटन शेर में ऐप स्टोर के माध्यम से उपलब्ध सर्वर.एप में एकीकृत किया गया है। इसका मतलब है कि यह पहले ही कॉन्फ़िगर किया गया है, और आपको केवल इसे लॉन्च करने की आवश्यकता है, और फिर उपयोगकर्ता और डेटाबेस बनाएं।

युक्ति : $ PGDATA को परिभाषित करने के साथ शुरू न करें और इसी तरह, फ़ाइल स्थान ले लें।

आपके पास यह फ़ाइल होगी: /Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist

शुरू करना:

sudo serveradmin start postgres

तर्क के साथ प्रक्रिया शुरू हुई:

/ अनुप्रयोग / सर्वर .app/Contents/ServerRoot/usr/bin/postgres_real -D / लाइब्रेरी / सर्वर / PostgreSQL / डेटा -c listen_addresses = 127.0.0.1, :: 1 -c log_connections = on -c log_directory = / लाइब्रेरी / लॉग / 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 = _postgres -c unix_socket_permissions = 0770

आप सूडो कर सकते हैं:

sudo -u _postgres psql template1

या कनेक्ट करें:

psql -h localhost -U _postgres postgres

आप डेटा निर्देशिका, संस्करण, चलने की स्थिति और आगे के साथ पा सकते हैं

sudo serveradmin fullstatus postgres  

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

आप इसे आसान बनाने के लिए सीएलआई के माध्यम से उपनाम भी बना सकते हैं:

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'

इनके साथ आप इसे पोस्ट करने के लिए पोस्टग्रेस और "पीजी-स्टॉप" शुरू करने के लिए बस "पीजी-स्टार्ट" टाइप कर सकते हैं।


उपर्युक्त उत्तरों में से कोई भी एक ही त्रुटि संदेश प्राप्त करने के बावजूद मेरे लिए समस्या का समाधान नहीं करता है। मैं अपने इंस्टेंस को बैक अप और मौजूदा पोस्टमास्टर.pid फ़ाइल को हटाकर चला रहा था जो लॉक था और कनेक्शन की अनुमति नहीं दे रहा था।


एक और दृष्टिकोण लंच मणि (लॉन्चक्ल के लिए एक रैपर) का उपयोग कर रहा है:

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

पोस्टग्रेस शुरू करने के लिए:

lunchy start postgres

पोस्टग्रेज़ को रोकने के लिए:

lunchy stop postgres

अधिक जानकारी के लिए देखें: " होमब्री और लंच के साथ मैक पर PostgreSQL कैसे स्थापित करें "


जब आप homebrew का उपयोग कर 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

मुझे लगता है कि यह सबसे अच्छा तरीका है।

आप सुविधा के लिए अपने .profile में उपनाम जोड़ सकते हैं।


परीक्षण उद्देश्यों के लिए, मुझे लगता है कि PostgreSQL ऐप सबसे अच्छा विकल्प है!

एक ऐप चलाएं, और सर्वर ऊपर और चल रहा है। ऐप बंद करें, और सर्वर नीचे चला जाता है।

http://postgresapp.com/


मेरे पास लगभग एक ही समस्या थी, और आपने initdb कमांड को ठीक करने के रूप में उद्धृत किया। यह मेरे लिए भी समाधान था, लेकिन मैंने नहीं देखा कि किसी ने इसे यहां पोस्ट किया है, इसलिए जो लोग इसे ढूंढ रहे हैं उनके लिए:

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

मैक / ओएसएक्स के लिए, मुझे वास्तव में विकास के लिए उपयोग की जाने वाली अन्य पृष्ठभूमि सेवाओं के लिए लॉन्चरॉकेट पसंद है।

https://github.com/jimbojsb/launchrocket

इस साइट पर स्थापना पर अच्छे निर्देश हैं: http://macappstore.org/launchrocket/

यह आपको आपकी सिस्टम प्राथमिकताओं में एक अच्छी स्क्रीन देता है जो आपको लॉगिन पर लॉन्च, रीबूट, रूट, लॉन्च करने की अनुमति देता है।


यदि आपने brew माध्यम से इसे इंस्टॉल किया है तो पोस्टग्रेस को शुरू / बंद / पुनरारंभ करने के लिए सबसे साफ तरीका यह है कि इंस्टॉलेशन के साथ आने वाली लॉन्च की गई कॉन्फ़िगरेशन फ़ाइल को अनलोड और / या लोड करना है:

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

पहली पंक्ति पोस्टग्रेज़ को रोक देगी और दूसरी लाइन इसे शुरू करेगी। किसी भी डेटा निर्देशिका आदि को निर्दिष्ट करने की आवश्यकता नहीं है क्योंकि सबकुछ उस फ़ाइल में है।


यहां मेरे 2 सेंट: मैंने postgres pg_ctl के लिए उपनाम बनाया है और इसे .bash_profile में रखा है (मेरा पोस्टग्रेस्क्ल संस्करण 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

Homebrew पैकेज मैनेजर में स्वचालित रूप से प्रारंभ करने के लिए लॉन्चक्टल प्लिस्ट शामिल हैं। अधिक जानकारी के लिए 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 localhost कनेक्शन pg_hba.conf में सक्षम हैं:

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

Postgresql.conf में listen_addresses और पोर्ट को देखें:

egrep 'listen|port' /usr/local/var/postgres/postgresql.conf

#listen_addresses = 'localhost'     # what IP address(es) to listen on;
#port = 5432                # (change requires restart)

सफाई करना

पोस्टग्रेज़ Homebrew , Fink , MacPorts या EnterpriseDB MacPorts इंस्टॉलर के माध्यम से सबसे अधिक स्थापित किया गया था।

निम्न आदेशों के आउटपुट को यह निर्धारित करने के लिए जांचें कि यह किस पैकेज प्रबंधक के साथ स्थापित किया गया था:

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

$ brew upgrade 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.




homebrew