2009-12-08 6 views
2

Я пытаюсь написать скрипт для резервного копирования базы данных 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("Y-m-d-H-i-s").".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

Enter password: [I INPUT PASSWORD]

mysqldump: Got error: 1044: Access denied for user '[USERNAME]'@'208.113.128.0/255.255.128.0' to database '[PASSWORD]' when selecting the database

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

Спасибо.

ответ

3

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

+0

Спасибо, что сделал трюк! –

+1

Я так много раз бил головой о стену :) –

1

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

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

Если вы просто копируете вещи я бы настоятельно рекомендовал использовать this very easy, very configurable, open source cron backup script. Это превосходно, и я думаю, вам понравится, если это все, что вам нужно.

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

0

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

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

1

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

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

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

Смежные вопросы