Я хотел бы получить путь к pg_hba.conf из оболочки. Путь варьируется между версиями PostgreSQL. Например, для 8.4 и 9.1:
/etc/postgresql/8.4/main/pg_hba.conf
/etc/postgresql/9.1/main/pg_hba.conf
Я пробовал pg_config
команду, но она, кажется, не включает эту информацию.
Это сделано для того, чтобы я мог использовать единую команду для открытия pg_hba.conf
и другие файлы конфигурации PostgreSQL для редактирования.
Я использую Bash.
postgresql
Роджер Даль
источник
источник
find / -name pg_hba.conf -amin -5
(если сервер был перезапущен за последние 5 минут; достаточно легко изменить его на-atime
последний перезапуск более длительного времени назад). Или вы можете фильтровать по времени доступа новее, чем время изменения, или один из других вариантов поиска на основе времени ... (хотя фильтрацияlsof | grep pg_hba.conf
во время работы сервера не работает).Ответы:
pg_config
для информации о комплиментах, чтобы помочь расширениям и клиентским программам компилировать и связывать с PostgreSQL. Он ничего не знает об активных экземплярах PostgreSQL на машине, только двоичные файлы.pg_hba.conf
может появиться во многих других местах в зависимости от того, как был установлен Pg. Стандартное расположение вpg_hba.conf
пределахdata_directory
базы данных (который может быть в/home
,/var/lib/pgsql
,/var/lib/postgresql/[version]/
,/opt/postgres/
и т.д. и т.д. и т.д.) , но пользователи и упаковщиков может поставить его там , где им нравится. К несчастью.Единственный верный способ найти
pg_hba.conf
- это спросить работающий экземпляр PostgreSQL, где онpg_hba.conf
находится, или спросить системного администратора, где он находится. Вы даже не можете полагаться на вопрос, где находится datadir, и на синтаксический анализ,postgresql.conf
потому что сценарий инициализации может передавать параметр, как-c hba_file=/some/other/path
при запуске Pg.Что вы хотите сделать, это спросить PostgreSQL:
Эта команда должна выполняться в сеансе суперпользователя, поэтому для сценариев оболочки вы можете написать что-то вроде:
и установить переменные окружения
PGUSER
,PGDATABASE
и т.д. , чтобы убедиться , что соединение является правильным.Да, это в некоторой степени проблема курицы и яйца: если пользователь не может подключиться (скажем, испортил редактирование
pg_hba.conf
), вы не можете найти егоpg_hba.conf
, чтобы исправить.Другой вариант - посмотреть на
ps
вывод команды и посмотреть, видим ли там аргумент каталога данных postmaster-D
, напримертак как
pg_hba.conf
будет в каталоге данных (если вы не используете Debian / Ubuntu или какую-либо производную и используете их пакеты).Если вы нацелены конкретно на системы Ubuntu с PostgreSQL, установленным из пакетов Debian / Ubuntu, это станет немного проще. Вам не нужно иметь дело с Pg, скомпилированным вручную из исходного кода, для которого чей-то
initdb
da dadadir находится в его домашнем каталоге, или с Pg EnterpriseDB, установленным в / opt, и т. Д. Вы можете спроситьpg_wrapper
, многоверсионный Pg Debian / Ubuntu менеджер, где PostgreSQL использует вpg_lsclusters
команду сpg_wrapper
.Если вы не можете подключиться (Pg не запущен, или вам нужно отредактировать
pg_hba.conf
для подключения), вам придется искать в системеpg_hba.conf
файлы. На Mac и Linux что-то подобноеsudo find / -type f -name pg_hba.conf
подойдет. Затем проверьтеPG_VERSION
файл в том же каталоге, чтобы убедиться, что это правильная версия PostgreSQL, если у вас их больше одной. (Еслиpg_hba.conf
находится в/etc
/, игнорируйте это, вместо этого это имя родительского каталога). Если у вас есть несколько каталогов данных для одной и той же версии PostgreSQL, вам придется посмотреть на размер базы данных, проверьте командную строку запущенного postgres,ps
чтобы узнать,-D
совпадает ли его аргумент каталога данных с тем, где вы редактируете, и т. Д.источник
psql: invalid port number: "format=unaligned"
когда я запускаю эту команду psql.-P
не-p
. Исправлена.Вот как я это делаю:
Так как путь такой:
/etc/postgresql/[VERSION]/main/pg_hba.conf
источник
Я использую следующее для обнаружения файлов конфигурации:
источник
Редактировать правильное изображение
pg_hba.conf
с помощью визуального редактора по умолчанию (vim, emacs, nano, joe и т. Д.) Так же просто, как:$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf
источник
Задайте свою базу данных:
источник
Чтобы узнать, где находится файл, просто введите:
источник