macos - postgresql安裝 - postgresql教學




如何在Mac OS X上啟動PostgreSQL服務器? (13)

最終更新:

我忘記了運行initdb命令。

</ FINAL UPDATE>

通過運行這個命令

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 

仍然相同“服務器正在運行嗎?” 信息。


PostgreSQL集成在Server.app中,可通過Mountain Lion的App Store獲得。 這意味著它已經配置好了,你只需要啟動它,然後創建用戶和數據庫。

提示 :不要從定義$ 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 unix_socket_group = _postgres -c unix_socket_permissions = 0770

你可以sudo:

sudo -u _postgres psql template1

或連接:

psql -h localhost -U _postgres postgres

你可以找到數據目錄,版本,運行狀態等等

sudo serveradmin fullstatus postgres  

Homebrew軟件包管理器包括launchctl plists自動啟動。 有關更多信息,請運行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什麼?

server.log中是否有錯誤消息?

確保在pg_hba.conf中啟用了tcp localhost連接:

# 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)

打掃乾淨

Postgres很可能是通過HomebrewFinkMacPortsEnterpriseDB安裝程序安裝的。

檢查以下命令的輸出以確定安裝了哪個軟件包管理器:

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

到目前為止 ,如果您已經通過brew安裝了它,啟動/停止/重新啟動postgres的最簡潔方法是簡單地卸載和/或加載安裝隨附的啟動配置文件:

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

第一行將停止postgres,第二行將啟動它。 不需要指定任何數據目錄等,因為一切都在該文件中。


如果您的電腦突然重新啟動

首先,您必須刪除文件/usr/local/var/postgres/postmaster.pid然後,您可以使用許多其他提及的方法之一重新啟動服務,具體取決於您的安裝。

您可以通過查看Postgres的日誌來驗證這一點,以查看可能發生的事情: tail -f /usr/local/var/postgres/server.log


出於測試目的,我認為PostgreSQL應用程序是最好的選擇!

運行一個應用程序,服務器啟動並運行。 關閉應用程序,服務器關閉。

http://postgresapp.com/


出於開發目的,最簡單的方法之一是從官方網站安裝Postgres.app。 它可以從Applications文件夾中啟動/停止或在終端中使用以下命令:

# start
open -a Postgres

# stop
killall Postgres
killall postgres

如果你想手動啟動和停止postgresql(通過自製軟件安裝),最簡單的方法是:

brew services start postgresql

brew services stop postgresql


我有同樣的問題,並執行從第一篇文章的所有更新。 但是在檢查日誌文件之後:

/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服務器已啟動。

每次檢查日誌文件。


我有幾乎完全相同的問題,你引用initdb命令作為修復。 這也是我的解決方案,但我沒有看到任何人在這裡發布它,所以對於那些正在尋找它的人:

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

要啟動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”即可關閉它。


這個答案的變化: https://.com/a/13103603/2394728 : https://.com/a/13103603/2394728

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

   # 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