postgresql - psql 总是转到端口 5432,即使 2 个版本的 postgresql 运行

postgresql - psql always goes to port 5432, even when 2 versions of postgresql are running

我在 Suse SLES 上有 2 个版本的 postgresql 运行,9.6 和 10.7。 9.6 版本 运行 端口 5432,10.7 版本 运行 端口 5433。每个版本的所有可执行文件都在该版本的目录中,包括 psql。

如果我执行默认的 psql,我得到版本 9.6.3 的 psql:

psql (9.6.3)

但是,当我尝试执行版本 10.7 的 psql 时:

/usr/pgsql-10/bin/psql

它打开 10.7 的版本,但从 postgresql 9.6.3 读取:

psql (10.7, Server 9.6.3).

如果我尝试给它 10.7 的端口号:

/usr/pgsql-10/bin/psql -p 5433

它要求输入密码,但拒绝了我知道在其他情况下可用的用户 postgres 的密码。

我花了相当多的时间寻找这个问题的答案,很抱歉我没有找到任何有用的东西。感谢您的任何建议!

这里有两个问题。

1)

I su to postgres: su - postgres This requires a password, and the password that works here, does not work when psql wants/demands a password.

OS postgres 用户与数据库 postgres 用户不同。

  1. 全新安装数据库 postgres 用户没有密码。一般来说,用户的 auth 方法设置为 trustidentpeer。请参阅此处 pg_hba.conf 它们的含义。解决方案的关键是修改 pg_hba.conf 以允许用户连接以便能够创建密码。最简单的方法是设置一个连接方式,最佳实践local(socket) to trust。然后你可以不用密码连接并创建一个。