如何在 Amazon Linux 上配置 Postgres

如何在 Amazon Linux 上配置 Postgres

大多数教程都安装 postgresql 和 postgresql-server:

$ sudo yum install postgresql postgresql-server

Installed:
  postgresql.x86_64 0:9.2.24-1.amzn2.0.1                         
  postgresql-server.x86_64 0:9.2.24-1.amzn2.0.1                        

Dependency Installed:
  postgresql-libs.x86_64 0:9.2.24-1.amzn2.0.1                                                                                          

程序安装在这里:

$ which psql
/usr/bin/psql


$ which postgres
/usr/bin/postgres

此时,大多数教程都会进入initdbpg_ctl <path> start

$ cd '/usr/lib'

$ service postgresql initdb
Hint: the preferred way to do this is now "postgresql-setup initdb"

$ sudo postgresql-setup initdb
[sudo] password for CORP\layne.sadler: 
Initializing database ... OK


$ systemctl enable postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to usr/lib/systemd/system/postgresql.service.



$ systemctl start postgresql
[18:47:32]  /usr/bin ☯  systemctl status postgresql
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-03-05 18:47:32 EST; 7s ago
  Process: 25559 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
  Process: 25553 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 25562 (postgres)
   CGroup: /system.slice/postgresql.service
           ├─25562 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           ├─25564 postgres: logger process   
           ├─25566 postgres: checkpointer process   
           ├─25567 postgres: writer process   
           ├─25568 postgres: wal writer process   
           ├─25569 postgres: autovacuum launcher process   
           └─25570 postgres: stats collector process

$ passwd postgres  

笔记:/usr/bin/postgres -D /var/lib/pgsql/data -p 5432

卡住

$postgres
postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.

$ psql
psql: FATAL:  role "CORP\layne.sadler" does not exist

$ sudo pg_ctl -D postgresql-setup initdb
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

# can't seem to login as su despite other sudo commands working

笔记:

  • 操作系统声称有,rhel fedora centos但没有rhel-release库。
  • 看起来好像epel-releasednf阻止安装。
  • ^^^ postgres安装说明需要以上工具。

答案1

CentOS(社区 ENTerprise 操作系统)是 RHEL(红帽企业 Linux)的社区(重新)构建,更改了品牌和其他一些细节。它努力实现二进制完全兼容,直至 bug-for-bug。它无权访问 RHEL 软件包存储库,它使用自己的软件包存储库。 EPEL(Extra Packages for Enterprise Linux)是一个 Fedora 项目,为 RHEL/CentOS 提供 RHEL 不附带的软件包。

我不知道“dnf 被阻止安装”从何而来。请注意,在 RHEL/CentOS 中,dnf 相对较新(我相信从版本 7 开始有替代方案),也许只有(旧版)yum 可用?yum install dnf如果你需要的话可以尝试一下。根据您的 CentOS 的具体版本,它可能根本不存在。

您引用的最后一个错误消息非常清楚:Postgres 无法找到/读取它的配置。查看小心设置是否正确完成。某个地方错误的文件名可能会破坏一切。

相关内容