Назад | Перейти на главную страницу

Сценарий Postgresql pg_dump на RHEL 5: «сбой: 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».

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

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


/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"

Проблема заключалась в том, что были символы возврата каретки DOS. Я использовал шпатлевку, и, по-видимому, кодировка 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#comment24313493_16857726