[英]PHP Script to Backup MySQL Database
我正在嘗試編寫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 );
當我從shell終端運行它時,得到以下信息:
[stingray] $ php / [ 絕對路徑 ] /db_backup.php
輸入密碼:[ 我輸入密碼 ]
mysqldump:得到錯誤:1044:選擇數據庫時,拒絕用戶'[ USERNAME ]'@'208.113.128.0/255.255.128.0'對數據庫'[ PASSWORD ]'的訪問
好的,現在我真正不明白的是為什么它調用數據庫作為密碼。 如果我將Web瀏覽器指向該文件,則該文件運行正常。 有人知道我應該做什么嗎? 就個人而言,我真的不在乎它是否是PHP,Python,CGI等,只要它可以在Apache服務器上運行即可。
謝謝。
密碼標志的語法不同。 刪除-p標志后的空格,然后再進行拍攝。
1 :-p和PASSWORD之間沒有空格,例如:-p“。$ db_password。”
2:為該數據庫的特定用戶授予所有(如果需要)特權。
3:授予文件執行命令的正確權限。
嘗試使用完整的選項名稱; 我遇到了類似的問題,但是沒有時間解決失敗的根源。 但是,這對我有用並起作用:
/usr/bin/mysqldump \
--user=username \
--password=password \
dbname > mysqldump.sql
如果您只是備份內容,我強烈建議您使用此非常簡單,可配置的開源cron備份腳本 。 這太棒了,我想您會喜歡的。
如果確實需要通過apache運行它,則可以使用反引號遠程觸發腳本,然后免費獲得備份輪換以及每周/每月的備份,壓縮和日志記錄。
我建議您使用SqlBuddy ,它像您一樣解決了我的問題。
僅當您要使用cron或自動腳本時,才繼續使用自定義腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.