抱歉,帖子太长了。我想尽可能详细地说明,以便更容易发现问题。
所以我按照 PostgreSQL 下载上的说明进行操作页并开始运行在我的 CentOS 7 VM 的端口 5432 上运行的 PostgreSQL 服务器。
## Install the repository RPM
sudo yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
## Install the client packages
sudo yum install postgresql11
## Install the server packages
sudo yum install postgresql11-server
## Initialise the database and enable automatic start
sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
sudo systemctl enable postgresql-11
sudo systemctl start postgresql-11
完成上述步骤后,我执行了以下步骤以使 postgres 服务器可远程访问。
# Open DB port
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent # success
sudo firewall-cmd --reload # success
# Added "listen_addresses = '*'" in the file below
nano /var/lib/pgsql/11/data/postgresql.conf
# and wrote the following lines...
host all all ::0/0 md5
host all all 0.0.0.0/0 md5
# at the end of the `pg_hba.conf` file.
在继续之前,我只想看看我是否可以以其他用户的身份登录 psql。因此,我使用我的个人帐户登录并执行此操作psql -h 127.0.0.1 -U postgres
,结果如下:
psql:严重错误:用户“postgres”的身份认证失败
这位好心人说,虚拟机用户名postgres
登录密码和数据库角色postgres
密码是两个不同的东西(关联),因此我执行以下操作来更改 postgres 角色的密码
# bash
su - postgres
psql
# postgreSQL
ALTER USER postgres PASSWORD 'new_password'
\q
# bash
exit
psql -h 127.0.0.1 -U postgres # this works now
现在我觉得自己已经准备好了。
我在本地机器上启动 pgAdmin 4,然后请执行下列操作并点击保存。我收到以下错误消息:
无法连接到服务器:
无法连接到服务器:连接超时(0x0000274C/10060)
服务器是否在主机“XX.XXX.XX.XX”上运行并
在端口 5432 上接受 TCP/IP 连接?
所以我去仔细检查端口是否正在监听。
sudo netstat -nlt | grep 5432
# Output
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
tcp6 0 0 :::5432 :::* LISTEN
作为替代方案,我使用 建立一个 ssh 隧道,然后ssh -N -L localhost:5432:localhost:5432 [email protected]
在 pgAdmin 中执行此操作并点击保存。我收到以下错误消息:
无法连接到服务器:
严重错误:用户“postgres”的身份认证失败
我很困惑..我不明白为什么我会收到此消息,因为我以为当我为该角色分配密码时这个问题就解决了postgres
..
我已经阅读了很多与此问题相关的 SOF 帖子,并尝试使用该pg_hba.conf
文件建立连接,但没有成功......
我已经努力了好几个小时了。请有人帮帮我。