MySQL转储cron作业的PHP脚本

MySQL转储cron作业的PHP脚本,php,mysql,cron,Php,Mysql,Cron,我正在尝试创建一个脚本,该脚本将通过cron作业运行,因此它将定期转储数据库。我还尝试了两种带引号和圆点的组合,但都不起作用 <?php $date = date('Y-m-d-H:i:s'); $host = 'localhost'; $user = 'username'; $password = 'password'; $database = 'databasename'; echo shell_exec("mysqldump -h $host -u $user -p$password

我正在尝试创建一个脚本,该脚本将通过cron作业运行,因此它将定期转储数据库。我还尝试了两种带引号和圆点的组合,但都不起作用

<?php
$date = date('Y-m-d-H:i:s');
$host = 'localhost';
$user = 'username';
$password = 'password';
$database = 'databasename';
echo shell_exec("mysqldump -h $host -u $user -p$password $database > mysqlbackup$date.sql");
?>

将数据库转储直接作为cron作业运行会明智得多。我可以看到您已经准备好了命令,所以键入
crontab-e
,然后输入类似于在凌晨3:30运行它的内容:

30 03 * * * /usr/bin/mysqldump -u[username] -p[password] --all-databases --single-transaction > /home/USERNAME/backups/full_backup_`date +%Y-%m-%d_%H-%M-%S`.sql

并避免在命令中写入密码-而是使用。

使用普通bash脚本,而不是PHPAre。您是否看到任何错误?您到底在哪里遇到问题?不知道您会遇到什么错误,常见的情况是:1)在
$PATH
中找不到
mysqldump
可执行文件,因此请使用其完整路径。2) 密码中包含需要在shell中引用的字符3)指定输出文件的完整路径,以便您可以找到它。@Lix-这就是您应该做的:“连接到服务器时使用的密码。如果使用短选项形式(-p),则选项和密码之间不能有空格。”@Fred ii-这是唯一一个密码参数,在密码字符串之前不应该有空格啊,这正是我想要将其创建为PHP脚本的原因,因为我不知道bash脚本可以获取日期。我会尝试一下,非常感谢。在这种情况下,避免使用php并不总是很舒服。1.网站连接设置通常存储在
.php
文件中,而不是存储在配置2中。您可以操纵以前的转储,例如,删除一些旧的转储