最终更新:
我忘了运行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
仍然相同“服务器正在运行吗?”信息 .
20 回答
要启动postgresql服务器:
结束postgresql服务器:
您还可以通过CLI创建别名以简化:
有了这些,你可以输入“pg-start”来启动Postgres,然后输入“pg-stop”来关闭它 .
如果你通过
brew
安装了postgres,那么到目前为止最简单的启动/停止/重启postgres的方法就是简单地卸载和/或加载安装时附带的launchd配置文件:第一行将停止postgres,第二行将启动它 . 无需指定任何数据目录等,因为一切都在该文件中 .
如果你想手动启动和停止postgresql(通过自制软件安装),最简单的方法是:
和
另一种方法是使用lunchy gem(launchctl的包装器):
开始postgres:
停止postgres:
有关详细信息,请参阅:“How to Install PostgreSQL on a Mac With Homebrew and Lunchy”
$ brew upgrade postgres
为我修好了 .
当然,这将升级您的postgres版本并更新/安装任何依赖项 . WARNING: Do this knowing that your postgresql version will likely change. 对我来说,这不是什么大问题 .
我有同样的问题,并从第一篇文章执行所有更新 . 但检查日志文件后:
我看到了真正的原因:
在此目录上更改权限后
postgres服务器已启动 .
每次检查日志文件 .
Homebrew包管理器包含自动启动的launchctl plists . 有关更多信息,请运行
brew info postgres
.Start manually:
pg_ctl -D /usr/local/var/postgres start
Stop manually:
pg_ctl -D /usr/local/var/postgres stop
Start automatically:
“要启动postd立即启动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连接:
检查postgresql.conf中的listen_addresses和port:
egrep 'listen|port' /usr/local/var/postgres/postgresql.conf
Cleaning up
Postgres最有可能通过Homebrew,Fink,MacPorts或EnterpriseDB安装程序安装 .
检查以下命令的输出以确定安装它的软件包管理器:
对于macport,只需使用load / unload命令和正在运行的服务器的端口名称:
所以你不必记住
/Library/LaunchDaemons/org.macports.postgresql96.plist
文件的位置PostgreSQL通过Mountain Lion的App Store集成在 Server.app 中 . 这意味着它已经配置,您只需要启动它,然后创建用户和数据库 .
Tip :不要从定义$ PGDATA等开始,按原样取文件位置 .
你会有这个文件:/ Library/Server/PostgreSQL/Config/org.postgresql.postgres.plist
开始:
Process started with arguments:
/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
You can sudo:
Or connect:
您可以找到数据目录,版本,运行状态等
对于Mac / OSX,我真的很喜欢LaunchRocket这个以及我在开发中使用的其他后台服务 .
https://github.com/jimbojsb/launchrocket
这个网站有很好的安装说明:http://macappstore.org/launchrocket/
这为您在系统偏好设置中提供了一个漂亮的屏幕,允许您在登录时启动,重启,root,启动 .
出于开发目的,最简单的方法之一是从official site安装Postgres.app . 它可以从Applications文件夹启动/停止,也可以在终端中使用以下命令:
对于快速一次性测试数据库,您可以在前台运行服务器 .
在新目录中初始化一个新的postgres数据库
在前台启动服务器(ctrl-C停止服务器)
在另一个shell会话中,连接到服务器
If your computer was abruptly restarted
首先,您必须删除文件
/usr/local/var/postgres/postmaster.pid
然后,您可以使用许多其他提到的方法之一重新启动服务,具体取决于您的安装 .您可以通过查看Postgres的日志来验证这一点,看看可能会发生什么:
tail -f /usr/local/var/postgres/server.log
当你使用自制软件安装postgresql时:
在输出结束时,您将看到此方法启动服务器:
我认为这是最好的方法 .
为方便起见,您可以在.profile中添加别名 .
尽管得到了相同的错误消息,上述答案都没有为我解决问题 . 通过删除已锁定且不允许连接的现有postmaster.pid文件,我能够恢复并运行我的实例 .
这里我的2美分:我为postgres pg_ctl创建了一个别名并将其放在.bash_profile中(我的postgresql版本是9.2.4,数据库路径是/Library/PostgreSQL/9.2/data) .
推出新终端 .
然后?您可以使用以下命令启动/停止postgresql服务器:
出于测试目的,我认为PostgreSQL App是最好的选择!
运行应用程序,服务器已启动并正在运行 . 关闭应用程序,服务器关闭 .
http://postgresapp.com/
我几乎完全相同的问题,你引用initdb命令作为修复 . 这也是我的解决方案,但我没有看到有人在这里发布,所以对于那些正在寻找它的人:
这个答案的变化:https://stackoverflow.com/a/13103603/2394728