Простите за длинный пост.. Я хотел быть как можно более подробным, чтобы легче было определить проблему ..
Поэтому я следовал инструкциям на странице загрузки PostgreSQL и начал запускать сервер PostgreSQL, работающий на порту 5432 моей виртуальной машины CentOS 7.
## 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 как postgres от другого пользователя. Поэтому я вхожу в личный кабинет и делаю это psql -h 127.0.0.1 -U postgres
, что дает мне следующее:
psql: FATAL: аутентификация идентификатора не удалась для пользователя "postgres"
Это прекрасно джентльмены говорит , что имя пользователя postgres
VM Логгина пароль и роль базы данных postgres
пароль являются две разные вещи (Link), так что я следующее , чтобы изменить пароль 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" и принимает
Соединения TCP/IP на порту 5432?
Поэтому я иду и перепроверяю, что порт слушает.
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 postgres@XX.XXX.XX.XX
, и делаю это в pgAdmin и нажимаю save. Я получаю следующее сообщение об ошибке:
Невозможно подключиться к серверу:
FATAL: Идентификационная идентификация не удалась для пользователя "postgres"
Я сбит с толку .. Я не понимаю, почему я получаю это сообщение, потому что я думал, что это было решено, когда я назначил пароль для роли postgres
..
Я прочитал так много сообщений SOF, связанных с этой проблемой, и экспериментировал с файлом pg_hba.conf
чтобы попытаться установить соединение без успеха ...
Я боролся в течение нескольких часов Кто-нибудь, пожалуйста, помогите ..