Як підключитися до віддаленої бази даних PostgreSQL на Ubuntu за допомогою pgAdmin3?


22

Я намагаюся налаштувати базу даних PostgreSQL на машині Ubuntu. Я хотів би мати доступ до нього за допомогою pgAdmin3 з віддаленої машини. Як це налаштувати?

Я встановив базу даних PostgreSQL в Ubuntu за допомогою:

sudo apt-get install postgresql

У мене /etc/postgresql/9.1/main/pg_hba.confє цей рядок:

host    all    all    all    password

тому він повинен приймати з'єднання з усіх IPv4-адрес і паролів, надсилаючи їх чітким текстом (це з міркувань розвитку).

Якщо я запускаю цю команду, щоб побачити, які служби запущені:

sudo netstat -tulpn

Я бачу ці рядки, що показує, що PostgreSQL приймає з'єднання на порту за замовчуванням:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

Коли я намагаюся підключитися до цього сервера PostgreSQL з віддаленого комп'ютера в тій же локальній мережі, я отримую це повідомлення про помилку:

Сервер не слухає

Сервер не приймає з'єднання: звіт про бібліотеку з'єднань

не вдалося підключитися до сервера: відмовлено в підключенні Чи працює сервер на хості "10.0.1.7" і приймає TCP / IP з'єднання на порт 5432?

Я використовував postgresяк ім’я користувача та пароль. Але я також намагався використовувати postgresяк пароль. На локальному сервері я можу ввійти за допомогою:

sudo -u postgres psql postgres

Як я можу підключитися до бази даних PostgreSQL, що працює на Ubuntu, з віддаленої машини за допомогою pgAdmin3?

Відповіді:


25

Рядок у звіті про netstat показує, що база даних прослуховує лише на localhost: 5432 (127.0.0.1) для вхідних підключень tcp.

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

Тож він може приймати лише локальні з'єднання tcp незалежно від того, які дозволи ви вказали в pg_hba.conf. pg_hba.conf вказує лише дозволені з'єднання, але не вказує, які інтерфейси буде слухати ваша служба.

Адреси, які слухає сервер, визначаються за допомогою GUC прослуховування адреси в postgresql.conf . Якщо ви хочете, щоб сервер прослуховував віддалені з'єднання, вам слід вказати ip (и), які ви хочете, щоб вони прослуховували або *слухали всі доступні інтерфейси хоста.

Щоб ваш сервер postgresql прослуховував усі інтерфейси хоста, вам слід мати такий рядок у postgresql.conf:

listen_addresses = '*'

але я вже вказав allу pg_hba.confфайлі ... тому він повинен приймати з'єднання з усіх ip-адрес.
Йонас

Можливо, я міг би сказати це більш чітко. pg_hba не визначає, що слухає база даних, дозволено лише з'єднання протоколу / db / user / remote-addr.
dbenhur

Гаразд, так як я можу це виправити? у вас є якісь пропозиції?
Йонас

1
ви виправите це, поставивши рядок listen_addresses = '*'у postgresql.conf і перезапустивши ваш сервер.
dbenhur

Дякую, це вирішило цю проблему. Тепер у мене просто проблеми з паролем за замовчуванням :(
Йонас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.