如何在Mac OS X上启动PostgreSQL服务器?

最终更新:

我忘了运行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, eg, "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 

仍然相同“服务器是否在运行? 信息。

Homebrew软件包pipe理器包括launchctl plists自动启动。 有关更多信息,请运行brew info postgres

手动启动:

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

手动停止:

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


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很可能是通过Homebrew , Fink , MacPorts或EnterpriseDB安装程序安装的。

检查以下命令的输出以确定安装了哪个软件包pipe理器:

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

如果你想手动启动和停止postgresql(通过自制软件安装),最简单的方法是:

 brew services start postgresql 

 brew services stop postgresql 

我有几乎完全相同的问题,你引用initdb命令作为修​​复。 这也是我的解决scheme,但是我没有看到有人在这里发布,所以对于那些正在寻找它的人:

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

另一种方法是使用午餐gem。

 gem install lunchy 

要开始postgres:

 lunchy start postgres 

要停止postgres:

 lunchy stop postgres 

有关更多信息,请参阅:“ 如何在Mac上使用自制软件和午餐安装PostgreSQL ”

在这里,我的2美分:我做了postgres pg_ctl的别名,并把它放在.bash_profile(我的postgresql版本是9.2.4,数据库path是/Library/PostgreSQL/9.2/data)。

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

启动新的terminal。

接着? 你可以用这个开始/停止你的postgresql服务器:

 postgres.server start postgres.server stop 

如果您的电脑突然重新启动

首先,您必须删除文件/usr/local/var/postgres/postmaster.pid然后,您可以使用其他提到的方法之一重新启动服务,具体取决于您的安装。

您可以通过查看Postgres的日志来查看可能发生的事情: tail -f /usr/local/var/postgres/server.log

到目前为止 ,如果您已经通过brew安装了它,启动/停止/重新启动postgres最简单的方法是简单地卸载和/或加载安装随附的launchdconfiguration文件:

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

第一行将停止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 

您也可以通过CLI创build一个别名来简化操作:

 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' 

有了这些,你可以input“pg-start”来启动Postgres和“pg-stop”来closures它。

出于testing目的,我认为PostgreSQL应用程序是最好的select!

运行一个应用程序,服务器启动并运行。 closures应用程序,服务器closures。

http://postgresapp.com/

当你使用自制软件安装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 

我认为这是最好的方法。

为方便起见,您可以将。alias添加到.profile中。

对于快速的一次性testing数据库,您可以在前台运行服务器。

在新目录中初始化一个新的postgres数据库

 mkdir db initdb db -E utf8 createdb public 

在前台启动服务器(ctrl-C停止服务器)

 postgres -d db 

在另一个shell会话中,连接到服务器

 psql -d public 

我有同样的问题,并执行从第一篇文章的所有更新。 但是在检查日志文件之后:

 /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服务器已经启动。

每次检查日志文件。

PostgreSQL被集成在可以通过Mountain Lion的App Store获得的Server.app中。 这意味着它已经configuration好了,你只需要启动它,然后创build用户和数据库。

提示 :不要从定义$ 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 

你可以find数据目录,版本,运行状态等等

 sudo serveradmin fullstatus postgres 

为了开发的目的,最简单的方法之一是从官方网站安装Postgres.app。 它可以从Applications文件夹中启动/停止或在terminal中使用以下命令:

 # start open -a Postgres # stop killall Postgres killall postgres 

这个答案的变化: https : //stackoverflow.com/a/13103603/2394728

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

尽pipe得到了相同的错误信息,但上述答案都没有解决我的问题。 我能够通过删除现有的postmaster.pid文件locking并且不允许连接来恢复我的实例。

对于Mac / OSX,我真的很喜欢LaunchRocket这个和我在开发中使用的其他背景服务。

https://github.com/jimbojsb/launchrocket

这个网站有很好的安装说明: http : //macappstore.org/launchrocket/

这给你一个很好的屏幕在你的系统首选项,允许您启动,重新启动,根login启动。

$ brew upgrade postgres

给我修好了

当然,这将升级你的postgres版本,并更新/安装任何依赖项。 警告:这样做知道你的postgresql版本可能会改变。 对我来说,这不是什么大不了的事情。