我试着写一个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 );

当我从壳终端运行它,我得到这样的:

  

[魟] $ PHP / [<强> ABSOLUTE   PATH ] / db_backup.php

     

输入密码:[<强> 我输入密码

     

的mysqldump:GOT错误:1044:访问   拒绝用户   '[<强> USERNAME ]' @ '208.113.128.0/255.255.128.0'   到数据库 '[<强> PASSWORD ]' 时   选择数据库

好了,现在我真的不明白的是为什么它被调用数据库作为我的密码。如果我在文件指向我的网页浏览器,它运行得很好。有谁知道我应该做什么?就个人而言,我真的不在乎,如果它是PHP,Python和CGI,等等,仅仅只要它可以在Apache服务器上运行。

感谢。

有帮助吗?

解决方案

的密码标志的语法是不同的。 -p标志后删除空间,并给它一个镜头。

其他提示

尝试使用完整的选项名称;我有一个类似的问题,但没有时间来处理失败的真正根源;但是这个工作和对我的作品:

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

1: -p和PASSWORD之间没有空格 例如:-p “$ DB_PASSWORD”

2:授予所有(如果你想),用于该数据库中的特定用户的权限

3:赋予文件执行该命令正确的权限。

如果你只是备份的东西了,我会强烈建议您使用这很容易,很可配置的,开源cron的备份脚本的。这是一流的,我想你会喜欢它,如果这是你所追求。

如果它真的需要通过Apache,你可以使用反引号远程触发脚本运行,然后你会得到备份旋转和每周/每月备份,压缩和记录是免费的。

我建议你使用 SqlBuddy ,它解决了我的问题,像你。

继续,只有当你想使用cron或自动化脚本自定义脚本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top