2017-05-26 32 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从数据库本身复制并粘贴它。 –