Сценарий 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. Спасибо, парни!
Согласно сообщениям об ошибках, вы должны попробовать использовать обратную косую черту \:
/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"