Гммм ...
Якщо ви можете підключитися з ім'ям користувача та паролем у pgAdminIII, але ви не можете підключитися psql
ці дві програми, ймовірно, підключаються до бази даних по-різному.
[Якщо ви підключаєтесь до різних баз даних, спершу спробуйте підключитися до однієї бази даних. Дивись нижче.]
Від PostgreSQL: Документація: 9.3: psql :
Якщо ви опустите ім'я хоста, psql підключиться через сокет Unix домену до сервера на локальному хості або через TCP / IP до localhost на машинах, у яких немає розеток домену Unix.
Якщо ви не запускаєте щось подібне psql ... -h host_name ...
, а у вас працює Ubuntu, psql
слід підключатися через сокет Unix-домену, тому PostgreSQL, ймовірно, не налаштований, щоб дозволити один із методів аутентифікації пароля для постгресів .
Ви можете перевірити це, запустивши:
sudo -u postgres psql
Якщо вищезазначене працює, ваш сервер, ймовірно, налаштований використовувати аутентифікацію однорангових для локальних з'єднань користувачем postgres , тобто запитуючи ОС для вашого імені користувача, щоб підтвердити, що ви postgres .
Отже, це, ймовірно, ваш файл pg_hba.conf
Повний шлях файлу буде чимось на зразок /etc/postgresql/9.3/main/pg_hba.conf . Ви можете переглянути його, наприклад sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Якщо у вашій psql
команді пропущено ім'я хоста , ви зможете підключитися, якщо ви додасте наступний запис у файл pg_hba.conf :
# Connection type Database User IP addresses Method
local all postgres md5
[ Коментовані рядки у файлі pg_hba.conf починаються з #
.]
Якщо будуть в тому числі імені хоста в psql
команді, додайте цей запис замість:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
Потрібно поставити запис, перш ніж будь-які інші записи будуть узгоджені для вашого з'єднання через psql
. Якщо ви сумніваєтесь у тому, куди його поставити, просто поставте його перед першим рядком без коментарів.
Більше про pg_hba.conf
Від PostgreSQL: Документація: 9.3: Файл pg_hba.conf [мій жирний акцент]:
Перша запис із відповідним типом з'єднання , адресою клієнта , запитуваною базою даних та іменем користувача використовується для аутентифікації. Не існує "пропускного" чи "резервного копіювання": якщо обраний один запис, а автентифікація не вдалася, наступні записи не враховуються. Якщо записи не збігаються, доступ заборонено.
Зауважте, що записи не відповідають методу аутентифікації. Отже, якщо ваш файл pg_hba.conf містить такий запис:
# Connection type Database User IP addresses Method
local all postgres peer
Тоді ви не зможете підключитися через:
psql -u postgres
Якщо одна з цих записів не знаходиться у вашому файлі pg_hba.conf над попереднім записом:
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!