【问题标题】:PHP Script to Backup MySQL Database用于备份 MySQL 数据库的 PHP 脚本
【发布时间】:2023-03-17 13:37:01
【问题描述】:

我正在尝试编写一个 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 终端运行它时,我得到了这个:

[黄貂鱼]$ php /[绝对 路径]/db_backup.php

输入密码:[我输入密码]

mysqldump:得到错误:1044:访问 拒绝用户 '[用户名]'@'208.113.128.0/255.255.128.0' 到数据库 '[PASSWORD]' 时 选择数据库

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

谢谢。

【问题讨论】:

    标签: php mysql database-backups mysql-error-1044


    【解决方案1】:

    密码标志的语法不同。删除 -p 标志后的空格,然后再试一次。

    【讨论】:

    • 我已经用这个把头撞到墙上很多次了:)
    【解决方案2】:

    尝试使用完整的选项名称;我有类似的问题,但没有时间解决失败的真正根源;但是这对我有用并且对我有用:

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

    【讨论】:

      【解决方案3】:

      1: -p 和 PASSWORD 之间没有空格 例如:-p".$db_password."

      2:为该数据库的特定用户授予所有(如果需要)权限。

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

      【讨论】:

        【解决方案4】:

        如果您只是备份内容,我强烈建议您使用this very easy, very configurable, open source cron backup script。这太棒了,我想你会喜欢的,如果这就是你所追求的。

        如果确实需要通过 apache 运行,您可以使用反引号远程触发脚本,然后您可以免费获得备份轮换和每周/每月备份、压缩和日志记录。

        【讨论】:

          【解决方案5】:

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

          仅当您想使用 cron 或自动脚本时才继续使用自定义脚本。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-05
            • 2013-11-09
            • 2011-11-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多