我一直在根据概述的步骤使用 postgreSQL 配置 EC2 实例 in this tutorial .我正在使用 AWS Linux 2018-03 并通过以下方式安装了 postgres92
:
$ sudo yum install postgresql postgresql-server postgresql-devel postgresql-contrib postgresql-docs
我的理解是我应该能够直接初始化 postgres:
$ sudo postgresql-setup initdb
如 this related question 中所述(注意:看来我也需要执行此步骤,我现在还无法将 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 ...
来运行它,这取决于当前的角色,但我最终收到了:
Success. You can now start the database server using:
postgres -D /var/lib/pgsql or pg_ctl -D /var/lib/pgsql -l logfile start
2。不同的服务名称
最后,this post事实证明,它对诊断围绕 postgres 的问题非常有帮助,因为它是一项无法识别的服务。许多流行的教程建议使用 sudo service postgres start
,但是检查运行级别 3 服务(不是我知道那是什么,但是 this Gunther Schadow guy 确实知道)
$ ls -1 /etc/rc.d/rc3.d | fgrep post
表明我们真的应该将服务称为 postgresql。如果我们执行以下操作:
$ sudo service postgresql initdb
$ sudo service postgresql start
我们实际上让服务运行,其余过程只是通过 psql
进行配置,这按预期工作。
关于在 AWS Linux 上找不到 postgresql-setup 命令和 postgres 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58979227/