PHP脚本备份MySQL数据库
-
18-09-2019 - |
题
我试着写一个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或自动化脚本自定义脚本。