PostgreSQL определение службы не найдено (pgAdmin, psql, ...) - PullRequest
0 голосов
/ 02 апреля 2020

Контекст

У меня есть простой pg_service.conf файл, расположенный по адресу ${HOME}/pg_service.conf, содержимое которого выглядит следующим образом:

# comment
[service_name]
host=localhost
port=5432
dbname=databasename
user=username

Проблема

Всякий раз, когда я пытаюсь создать новый сервер от pgAdmin III , установив 'service_name' под опцией 'Service', я получаю это сообщение об ошибке:

pgAdmin III error box

Я также пытался скопировать файл pg_service.conf рядом с .pg_hba.conf и перезапустить PostgreSQL; возникла та же проблема.

Та же ошибка возникает при попытке выполнить команду psql:

psql: definition of service "service_name" not found

Как я могу заставить ее работать?
Я нашел это , но это мне мало помогает, потому что оно для Windows пользователей.

Среда

Я на Ubuntu 18.04 с использованием "PostgreSQL 10.12 (Ubuntu 10.12-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit".

1 Ответ

1 голос
/ 02 апреля 2020

1. Решение на основе пользователя

Остерегайтесь точки . перед именем файла!
Следующая установка работает с PG 10.12 в CentOS 7.7 и .pg_service.conf, расположенном в каталоге $HOME:

   $ cat .pg_service.conf 
    [service_name]
    host=localhost
    port=5410
    dbname=postgres
    user=postgres

Затем подключитесь к PostgreSQL следующим образом;

    $ psql postgresql://?service=service_name
    psql (10.12)
    Type "help" for help.

Проверка порта:

    postgres=# show port;
     port 
    ------
     5410
    (1 row)

Проверка соединения:

    postgres=# \c
    You are now connected to database "postgres" as user "postgres".
    postgres=# 

2. Общесистемное решение

Вы можете ввести это, чтобы проверить путь, по которому должен находиться глобальный файл pg_service.conf:

$ pg_config --sysconfdir
/etc/postgresql-common

Вы можете скопировать файл pg_service.conf в этом каталог (но без точки . здесь). Это должно быть собственностью root.

Общие советы

1) Приоритет файла

Как указано в do c;

"The Пользовательский файл имеет приоритет над общесистемным файлом. "

2) Пароль

В случае одноранговой аутентификации оба решения должны работать с пароль хранится в вашем файле .pgpass. В этом случае вам не нужно записывать это в файл .pg_service.conf.

...