Сценарий Postgresql pgdump на RHEL5: "ошибка: fe_sendauth: пароль не предоставлен"

Я пытаюсь выполнить скрипт pg_dump в качестве задания cron. Сейчас я просто пытаюсь запустить скрипт, вызывая его сам в командной строке. Я искал списки рассылки postgresql и следовал за документацией postgresql, но безуспешно. Я также посмотрел на StackOverflow, но после прочтения аналогичного поста в StackOverflow кажется, что такого рода проблемы должны быть на этом сайте.

Системные характеристики:

RHEL5

Postgresql 9.0.3

Вот что я делаю:

Сценарий находится здесь ~/database_backup/pg_dump_script

Я запускаю это из каталога

./pg_dump_script.sh

Сценарий выглядит так:

/home/myusername/lappstack-1.2-5/postgresql/bin/pg_dump --host=localhost 
--port 5433 --username "myusername" --no-password  --format plain --inserts 
--column-inserts --verbose
--file "/home/username/database_backup/$(%m.%d.%y_%1.%M%P).sql"
--table "schema.table_name" --table "schema.table_name1" "db_name"

Этот сценарий, конечно, изменен, и не является действительным, но дает вам представление о том, что я делаю. Я пробовал другие предложенные имена хостов: 127.0.0.1, 10.32.123.22 (не реальный IP-адрес, конечно). Порт правильный. 5433 - это то, что находится в pg_hba.conf

Ошибка, которую я получаю:

./pg_dump_script.sh
" failed: fe_sendauth: no password supplieddatabase "
pg_dump.bin: *** aborted because of error
./pg_dump_script.sh: line 2: fg: no job control
./pg_dump_script.sh: line 2: --file: command not found
./pg_dump_script.sh: line 3: --table: command not found
./pg_dump_script.sh: line 4: --table: command not found
./pg_dump_script.sh: line 5: --table: command not found
./pg_dump_script.sh: line 6: --table: command not found
./pg_dump_script.sh: line 7: --table: command not found
./pg_dump_script.sh: line 8: --table: command not found
./pg_dump_script.sh: line 9: --table: command not found
./pg_dump_script.sh: line 10: --table: command not found
./pg_dump_script.sh: line 11: --table: command not found
./pg_dump_script.sh: line 12: --table: command not found
./pg_dump_script.sh: line 13: --table: command not found
./pg_dump_script.sh: line 14: --table: command not found
./pg_dump_script.sh: line 15: --table: command not found
./pg_dump_script.sh: line 16: --table: command not found
./pg_dump_script.sh: line 17: --table: command not found
./pg_dump_script.sh: line 18: --table: command not found
./pg_dump_script.sh: line 19: --table: command not found
./pg_dump_script.sh: line 20: --table: command not found
./pg_dump_script.sh: line 21: --table: command not found
./pg_dump_script.sh: line 22: --table: command not found
./pg_dump_script.sh: line 23: --table: command not found
./pg_dump_script.sh: line 24: --table: command not found
./pg_dump_script.sh: line 25: --table: command not found
./pg_dump_script.sh: line 26: --table: command not found
./pg_dump_script.sh: line 27: --table: command not found
./pg_dump_script.sh: line 28: --table: command not found
./pg_dump_script.sh: line 29: --table: command not found
./pg_dump_script.sh: line 30: --table: command not found
./pg_dump_script.sh: line 31: --table: command not found
./pg_dump_script.sh: line 32: --table: command not found
./pg_dump_script.sh: line 33: --table: command not found
./pg_dump_script.sh: line 34: --table: command not found
./pg_dump_script.sh: line 35: --table: command not found
./pg_dump_script.sh: line 36: --table: command not found
./pg_dump_script.sh: line 37: --table: command not found
./pg_dump_script.sh: line 38: --table: command not found
./pg_dump_script.sh: line 39: --table: command not found
./pg_dump_script.sh: line 40: --table: command not found
./pg_dump_script.sh: line 41: --table: command not found
./pg_dump_script.sh: line 42: --table: command not found
./pg_dump_script.sh: line 43: --table: command not found
./pg_dump_script.sh: line 44: --table: command not found

Другие файлы, которые нужно было настроить

у меня есть .pgpass в моей ~ директории. Следуя этой конвенции:

http://www.postgresql.org/docs/9.0/static/libpq-pgpass.html

Я также убедился, что я сделал chmod 0600 ~/.pgpass

Я умею бегать pg_dump используя PgAdmin3 на моем компьютере с Windows. Так что я не думаю, что это проблема с подключением. Я тоже умею бегать psql без указания пароля, поэтому это должно означать pgpass работает правильно?

Дайте мне знать, если потребуется дополнительная информация!

Обновления

Я использовал все предложения и дошел до того, что отлаживаю по одному параметру за раз.

Вот что у меня есть:

/home/username/lappstack-1.2-5/postgresql/bin/pg_dump --host=127.0.0.1 --port=5433 --username=myusername mydb_name

Это даст ошибку:

$ ./pg_dump_script.sh
Password:
" does not exist  database "my_dbnamenection to database "mydb_name

^ Это не выводит ошибку правильно. Это не орфографическая ошибка. Я просто заменил фактическое имя БД на "mydb_name".

У меня есть запрос пароля, и затем я ввожу свой пароль. Я ценю комментарии. Они определенно помогают в процессе устранения неполадок и сэкономят мне время в будущем!

2 ответа

Решение

Проблема заключалась в том, что были DOS возврат каретки. Я использовал putty, и, видимо, кодирование DOS пробивалось в сценарий. Что я сделал, так это запустил dos2unix в сценарии. Я разместил этот вопрос на stackoverflow, увидев, что это скорее проблема сценариев, чем администрирование БД. Вот URL для вопроса и решения, которое решено. Настоящая заслуга достается Chepner & Mbratch. Спасибо, парни!

https://stackoverflow.com/questions/16857726/linux-bash-script-doesnt-run-correctly-but-when-run-at-the-command-line-everyt?noredirect=1

Согласно сообщениям об ошибках, вы должны попробовать использовать обратную косую черту \:


/home/myusername/lappstack-1.2-5/postgresql/bin/pg_dump --host=localhost \
--port 5433 --username "myusername" --no-password  --format plain --inserts \
--column-inserts --verbose \
--file "/home/username/database_backup/$(%m.%d.%y_%1.%M%P).sql" \
--table "schema.table_name" --table "schema.table_name1" "db_name"
Другие вопросы по тегам