簡體   English   中英

PHP腳本備份MySQL數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM