Django подключается к удаленному Postgres: '127.0.0.1 работает, а 'localhost' не работает
Я настроил локальный проброс портов на удаленный сервер, на котором работает база данных Postgres.
ssh -v -L 127.0.0.1:5433:localhost:5432 user@server-ip
Мои настройки django:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '<db_name>',
'USER': '<db_user>',
'PASSWORD': 'django',
'HOST': 'localhost',
'PORT': '5433',
}
}
Когда я запускаю сервер, я получаю ошибку, как показано ниже:
При проверке произошла ошибка: OperationalError('connection failed: :1), port 5433 failed: could not receive data from server: Connection refused\ncould not send startup packet: Connection refused')
Я хотел определить, возникает ли проблема с подключением на стороне клиента или сервера, поэтому я попытался подключиться к бд по адресу psql
:
psql <db_name> -U <db_user> -p 5433 -h localhost
и он работает!!! Поэтому я решил, что это проблема клиента.
Сервер django смог подключиться к бд только тогда, когда я изменил 'HOST': 'localhost'
на 'HOST': '127.0.0.1'
Мой /etc/hosts:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 postgres
127.0.0.1 mysql
127.0.0.1 redis
pg_hba.conf:
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
# Added by saritasa
127.0.0.1 postgres
127.0.0.1 mysql
127.0.0.1 redis
# Added by Docker Desktop
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section
127.0.0.1 mysql
127.0.0.1 redis
Я не могу подключиться с локального сервера django, если HOST
установлен на localhost
, но он работает, если его заменить на 127.0.0.1
Можете ли вы, ребята, дать мне некоторые соображения? Спасибо