sudo
не сохраняет большинство переменных среды. Если вы хотите указать переменные среды для команды, выполняемой под sudo
, сделайте это с помощью sudo
:
sudo PGPASSWORD="postgres" -u postgres psql -d pg_ldap -w --no-password -h localhost -p 5432 -t -c "SELECT id FROM radusers WHERE id=1"
Разрешает ли sudo
это будет зависеть от политика безопасности, действующая на вашем сайте.
Я не рекомендую этот подход, поскольку он показывает пароль в истории командной строки и в списке процессов. Намного лучше использовать файл .pgpass
или, предпочтительно, установить pg_hba.conf
для аутентификации однорангового узла
локальных
подключений от пользователя postgres
.
Вы можете использовать файл .pgpass
, но это должен быть .pgpass
пользователя, которого вы sudo
'ing to, а не пользователь вы' re sudo
ing из ; в данном случае это должно быть ~ postgres / .pgpass
. Подумайте об этом: psql
, запущенный как postgres
, не знает, что вы запускали его через sudo
из своей учетной записи, он не знает, какая у вас учетная запись, и даже если это так, у него нет разрешения на чтение, поскольку у пользователя postgres
до ~ youruser / .pgpass
.
Кроме того, -w
то же самое как - без пароля
. Нет смысла указывать и то, и другое.
postgres
до ~ youruser / .pgpass
.
Кроме того, -w
то же самое, что и - без пароля
. Нет смысла указывать и то, и другое.
postgres
до ~ youruser / .pgpass
.
Кроме того, -w
то же самое, что - без пароля
. Нет смысла указывать и то, и другое.
Это происходит, если пароль для базы данных не указан.
default="postgres://postgres:password@127.0.0.1:5432/DBname"
Я даже пытался настроить файл .pgpass в моем домашнем каталоге , но безуспешно:
Вам нужно создать файл .pgpass в домашнем каталоге учетной записи, в которой выполняется команда psql , то есть учетной записи postgres , а не вашей!
psql -d pg_ldap -w - no-password ...
Я думаю, что эти параметры тоже могут сбивать с толку.
Оба значения означают одно и то же, а именно: «не используйте пароль».
Я предлагаю удалить их. psql подтвердит, что пароль требуется, но должен определить правильно размещенный файл .pgpass и использовать его вместо , запрашивающего у пароль.
И, конечно же, пароль вашей учетной записи postgres не на самом деле "postgres", не так ли? :-)