我一直在根据本教程中概述的步骤使用postgreSQL配置EC2实例。我使用的是AWS Linux 2018-03,并通过以下方式安装了postgres92
:
$ sudo yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs
我的理解是,我应该能够直接初始化postgres与:
$ sudo postgresql-setup initdb
正如这个相关问题中所指出的(注意:我似乎也需要执行这一步骤,我还不能将postgres作为服务运行(。但是,对postgresql-setup
的调用返回:
sudo: postgresql-setup: command not found
我也尝试过find / postgresql-setup
,只是想看看它是否在系统的某个地方,但没有结果。我无法通过sudo service postgres ...
命令启动postgres,因为该服务尚未被识别。我已经确认该服务不是通过运行的
$ sudo service postgres status
这只是告诉我该服务无法识别,我还使用ps -ef | grep postgres
进行了检查,但也没有结果。
我的问题仍然是,如果找不到postgresql-setup
,我如何初始化postgres,以便将其识别为服务?谢谢
我对参考教程/问题中的配置说明进行了轻微修改,就解决了我的问题。
1.初始化数据库的不同调用
postgresql似乎在v9前后做了一些相当大的名称更改,使得postgresql-setup --initdb
和postgresql-setup initdb
现在等价于initdb
。
首先,可能需要更改数据目录的权限/所有权。典型的用户是postgres
。
$ sudo chmod 775 /var/lib/pgsql92
$ sudo chown USER /var/lib/pgsql92
使用初始化数据库
$ initdb -D /var/lib/pgsql92
根据当前角色的不同,可能需要sudo -u USER ...
才能运行此程序,但我最终收到了:
成功。您现在可以使用启动数据库服务器
postgres-D/var/lib/pgsql或pg_ctl-D/var/lib/pgsql-l日志文件启动
2.不同的服务名称
最后,这篇文章被证明对诊断postgres作为一种未被识别的服务的问题非常有帮助。许多流行的教程都建议使用sudo service postgres start
,但使用检查run-level-3服务(我不知道这是什么,但这个Gunther Schadow家伙确实知道(
$ ls -1 /etc/rc.d/rc3.d | fgrep post
表明我们实际上应该将服务调用为postgresql。如果我们执行以下操作:
$ sudo service postgresql initdb
$ sudo service postgresql start
我们实际让服务运行,剩下的过程只是通过psql
进行配置,它按预期工作。