

关于PHP代码调用mysqldump备份mysql数据的
1. 使用下面的代码提示备份失败
<?php
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';
// 数据库备份配置
$hostname = '192.168.13.77';
$username = 'root';
$password = 'root';
$database = 'ctcms';
$backup_path = 'databak';
// 创建备份文件名
$backup_file = $backup_path . '\backup_' . date('YmdHis') . '.sql';
// $backup_file = 'd:\backup_' . date('YmdHis') . '.sql';
// 导出数据库
$command = "mysqldump --opt -h$hostname -u$username -p$password $database > $backup_file"; //这句没有意义,测试用
$command = "C:\wamp\bin\mysql\mysql5.6.17\bin\mysqldump --opt -h$hostname -u$username -p$password $database > $backup_file";
system($command, $output); //这种方式生成的代码大小为0
exec($command); //这种方式就正常了
if ($output === 0) {
echo '数据库备份成功!';
} else {
echo '数据库备份失败!';
}
echo $command;
?>
2. 怀疑是没有安装mysqldump
1)注:mysqldump是一个单独的文件,要在cmd下执行,而不能到mysql的命令控制台执行。不能通过点击右击绿色WAMP图标--mysql--Mysql Console打开mysql的命令行控制台中执行,
2)需要先把mysqldump路径添加到环境变量里,才能在cmd下打开mysqldump,可通过在cmd在执行mysqldump --version查看环境变量有没有安装成功
3. 最后使用如下命令成功
C:\Users\Administrator>mysqldump --opt -h 127.0.0.1 -uroot -proot ctcms >d:\aa.sql //成功
C:\Users\Administrator>mysqldump --opt -h 127.0.0.1 -u root -p root ctcms >d:\aa.sql //失败
注:出错的地方:-uroot -proot //这里的-u和-p和它后面的用户名和密码之间不能有空格
恢复数据库的代码,未测试过
<?php
// 设置数据库连接信息
$hostname = 'localhost';
$username = 'root';
$password = 'your_password';
$database = 'your_database';
// 恢复数据库的 SQL 文件路径
$sqlFile = '/path/to/backup.sql';
// 构建恢复命令
$command = "mysql -h {$hostname} -u {$username} -p{$password} {$database} < {$sqlFile}";
// 执行恢复命令
$output = shell_exec($command);
// 输出执行结果
echo $output;
?>