Ошибка подключения к серверу на «localhost», порт 5432 не удалось: соединение отклонено. Сервер работает на этом хосте иPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка подключения к серверу на «localhost», порт 5432 не удалось: соединение отклонено. Сервер работает на этом хосте и

Сообщение Anonymous »

Я пытаюсь создать API (с FastAPI), используя Python. Я установил Python в Windows WSL (ubuntu)
и у меня есть postgress в Windows. Теперь я пытаюсь подключиться к Postgresssql через код Python, как показано ниже. но соединение не установлено с ошибкой Соединение отклонено
код:

Код: Выделить всё

try:
conn = psycopg2.connect(host='localhost',database='fastapi',password='xxxx',cursor_factory=RealDictCursor)
cursor = conn.cursor()
print("Database connection was successfull")
except Exception as error:
print("Connetion to database has failed")
print("Error", error)
Ошибка

Код: Выделить всё

Connetion to database has failed
Error connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused
Is the server running on that host and accepting TCP/IP connections?
Я прошел по ссылке ниже из Stackoverflow, но удачи, не могли бы вы посоветовать, в чем может быть проблема?
Как подключиться к Windows Postgres База данных из WSL
Действия, выполненные по ссылке выше
Добавить правило входящего порта брандмауэра Windows для IP-адреса WSL2 Адреса:
  • Откройте брандмауэр Защитника Windows в режиме повышенной безопасности.
  • Нажмите «Новое правило»...
    Выберите «Порт» в качестве типа правила.
  • Выберите «TCP», а в поле «Определенные локальные порты» введите 5432.
  • Выберите «Разрешить соединение». Подключение из WSL2 не будет безопасным, поэтому не выбирайте безопасный вариант.
  • Выберите хотя бы «Общедоступный». Также можно выбрать Домен и Частный. Я мог подключиться только в том случае, если был выбран параметр «Общедоступный».
  • Назовите правило, например. Postgres — подключитесь из WSL2 и создайте его.
  • Щелкните правой кнопкой мыши только что созданное правило и выберите «Свойства», затем перейдите на вкладку «Область».
  • В разделе «Удаленный IP-адрес» выберите Затем эти IP-адреса нажмите «Добавить...» и введите диапазон от 172.0.0.1 до 172.254.254.254
    10.Повторите шаг 9 для диапазона IP-адресов от 192.0.0.1 до 192.254.254.254
    11.Нажмите «Применить», затем «ОК»12.Убедитесь, что правило включено.
Настройте Postgres для приема подключений с IP-адресов WSL2Предполагая, что Postgresql для Windows устанавливается/настраивается по умолчанию, следующие файлы расположены в каталоге

Код: Выделить всё

C:\Program Files\PostgresSQL\$VERSION\data
Убедитесь, что в postgresql.conf установлено следующее:

Код: Выделить всё

listen_addresses = '*'
Здесь уже должно быть установлено значение «*», поэтому здесь ничего не нужно делать.
Обновите pg_hba.conf, чтобы разрешить соединения из диапазона WSL2, например. для Postgresl 15:

Код: Выделить всё

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32       scram-sha-256
host    all             all             172.0.0.0/8        scram-sha-256
host    all             all             192.0.0.0/8        scram-sha-256
Для Postgresql 13+ в качестве метода следует использовать scram-sha-256.
Перезапустите Postgres, чтобы изменения вступили в силу. Это можно сделать либо из приложения «Службы Windows», либо из cmd с правами администратора, например. для Postgresql 15:

Код: Выделить всё

net stop postgresql-x64-12
net start postgresql-x64-12
Удобства оболочки WSL
В WSL добавьте следующее в свой ~/.bashrc или подобное:

Код: Выделить всё

# Add DNS entry for Windows host
if ! $(cat /etc/hosts | grep -q 'winhost'); then
echo 'Adding DNS entry for Windows host in /etc/hosts'
echo '\n# Windows host - added via ~/.bashhrc' | sudo tee -a /etc/hosts
echo -e "$(grep nameserver /etc/resolv.conf | awk '{print $2, "   winhost"}')" | sudo tee -a /etc/hosts
fi
Затем перезагрузите изменения .bashrc: источник ~/.bashrc
Я установил и импортировал psycopg2 в код.

Код: Выделить всё

pip install psycopg2-binary
Ошибка при запуске кода
Изображение

Спасибо
К

Подробнее здесь: https://stackoverflow.com/questions/778 ... on-refused
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»