2017-05-26 51 views
0

使用以下腳本來備份數據庫(不是全部,只是其中之一)。mysqldump說無效的數據庫和結果有錯誤:1045:

#!/usr/bin/php 
<?php 
$file = "/home/southel2/public_html/archives/BACKUPS/backup.sql"; 
$backupFile = $dbname.date("Y-m-d-H-i-s").".zip"; 
$command = "mysqldump user=###_### --password=### --databases=###_### > $file"; 
system($command); 
?> 

得到這個錯誤在cron電子郵件:

Content-type: text/html; charset=UTF-8 


Warning: mysqldump: ignoring option '--databases' due to invalid value 'southel2_archives' 
mysqldump: Got error: 1045: Access denied for user 'southel2'@'localhost' (using password: YES) when trying to connect 

沒有條目添加到錯誤日誌。

有沒有建議嗎?

+0

這是字面上告訴你到底是什麼問題... –

+0

我添加了--host =「local_host」。雖然我發現它發現它將以下內容添加到目標sql文件中,但它並沒有壓縮sql文件,也沒有添加任何新的錯誤日誌條目:用法:mysqldump [選項]數據庫[tables] 或mysqldump [選項] --databases [選項] DB1 [DB2 DB3 ...] 或mysqldump [選項] - 全部數據庫[選項] 有關更多選項,請使用mysqldump --help –

+0

它在何處以及如何告訴我何時用戶名和密碼被驗證爲正確,數據庫名稱正確。所以當它說不是的時候,那麼當它說的話是不真實的時候,我就看不到問題。 –

回答

0

這是一個權限錯誤。你或別人可以訪問到MySQL需要show the grants'southel2'@'localhost'

mysql> SHOW GRANTS for 'southel2'@'localhost'; 

既然你說的用戶名和密碼是正確的,一種可能性是主機是不正確的。例如,'southel2'@'1.2.3.4'的撥款將不允許您從其他主機連接,例如5.6.7.8

另一種可能性是您沒有必要的權限來執行mysqldump需要執行的操作。除了SELECT,您需要LOCK TABLESpossibly more,具體取決於數據庫中的內容。

+0

終於得到它與[#!/ usr/bin/php <?php $ file =「/home/southel2/public_html/archives/BACKUPS/backup.sql」; $ command =「mysqldump -usouthel2_admin -pBowen -1992 --all-databases> $ file」; system($ command); ?>]它會做所有的dbs,但不是特定的。我在同一主機上通過cron運行腳本。根據我的配置文件local_host是它。如果這是一個權限問題,我不認爲它會願意做所有的數據庫而不是個人數據庫,你不會這麼想嗎? –

+0

如果它能起作用--all-databases而不是-databases,那麼你確定你傳遞了正確的數據庫名稱給--databases嗎? –

+0

我通過myphpadmin從數據庫本身複製並粘貼它。 –