繁体   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