PHP-скрипт для резервного копирования базы данных MySQL

Я пытаюсь написать PHP-скрипт для резервного копирования базы данных MySQL:

if ( $db_resource = mysql_connect($db_server, $db_username, $db_password, $db_newlink) ) { if ( mysql_select_db( $db_name, $db_resource ) ) { $backupFile = $db_name."_".date( "YmdHis" ).".gz"; $command = "mysqldump --opt -h ".$db_server." -u ".$db_username." -p ".$db_password." ".$db_name." | gzip > ".$db_save_dir."/".$backupFile; system( $command ); } } mysql_close( $db_resource ); 

Когда я запускаю его из терминала оболочки, я получаю следующее:

[stingray] $ php / [ABSOLUTE PATH ] /db_backup.php

Введите пароль: [ I INPUT PASSWORD ]

mysqldump: получена ошибка: 1044: доступ запрещен для пользователя '[ USERNAME ]' @ '208.113.128.0/255.255.128.0' в базу данных '[ ПАРОЛЬ ]' при выборе базы данных

Хорошо, теперь я действительно не понимаю, почему он вызывает базу данных в качестве моего пароля. Если я укажу свой веб-браузер на файл, он будет работать нормально. Кто-нибудь знает, что я должен делать? Лично мне все равно, если это PHP, Python, CGI и т. Д., Только если он может работать на сервере Apache.

Благодарю.

    Синтаксис флага пароля отличается. Удалите пробел после флага -p и дайте ему еще один снимок.

    попробуйте использовать полные имена опций; У меня была аналогичная проблема, но нет времени, чтобы решить настоящий корень неудачи; однако это сработало и работает для меня:

     /usr/bin/mysqldump \ --user=username \ --password=password \ dbname > mysqldump.sql 

    1: нет пробела между -p и PASSWORD ex: -p ". $ Db_password."

    2: предоставить все (если хотите) привилегии для определенного пользователя для этой базы данных.

    3: предоставить правильному правилу файла для выполнения команды.

    Если вы просто поддерживаете это, я настоятельно рекомендую использовать этот очень простой и настраиваемый сценарий резервного копирования cron с открытым исходным кодом . Это превосходно, и я думаю, вам понравится, если это все, что вам нужно.

    Если это действительно необходимо для запуска через apache, вы можете использовать backticks для удаленного запуска сценария, а затем вы получаете резервные вращения и еженедельные / ежемесячные резервные копии, сжатие и ведение журнала бесплатно.

    Я предлагаю вам использовать SqlBuddy , он решил мою проблему, как ваш.

    Выполняйте собственный скрипт только в том случае, если вы хотите использовать cron или автоматический скрипт.