【问题标题】:MySQL database backup using PHP使用 PHP 备份 MySQL 数据库
【发布时间】:2014-02-20 11:08:09
【问题描述】:

我已使用以下内容检查我的服务器上是否启用了exec()

public function exec_enabled() {
  $disabled = explode(',', ini_get('disable_functions'));
  return !in_array('exec', $disabled);
}

我发现它已在我的服务器上启用。现在我正在尝试运行以下命令,但数据库没有得到备份:

exec('mysqldump --user=foo --password=bar --host=localhost foobar > backup.sql');

我也试过

exec('mysqldump -u foo -p bar foobar > backup.sql');

但它也没有工作。此外,我没有收到任何错误(错误报告已打开)。谁能告诉我我在这里做错了什么?

【问题讨论】:

  • 试试这个exec('mysqldump -ufoo -pbar foobar > backup.sql');。用户名和密码后不要留空格
  • 使用system("mysqldump -ufoo -pbar foobar > backup.sql");而不是exec。
  • 已经试过了,亲爱的。在尝试使用 exec()shell_exec()system()
  • exec("/usr/bin/mysqldump -uusername-ppassword 数据库名 | gzip -9 > /path/to/backupfile.gz");对于 Linux
  • 密码字段:-pbar 代替 -p bar

标签: php mysql mysqli backup database-backups


【解决方案1】:

这应该可行 -

exec('mysqldump -u foo --password=bar --host=localhost foobar > backup.sql');

【讨论】:

    【解决方案2】:

    在 *nix 系统中,使用 WHICH 命令显示 mysqldump 的位置,试试这个:

    <?php
    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = 'password';
    $dbname = 'test';
    $mysqldump=exec('which mysqldump');
    
    $backup_file = $dbname .'.gz';
    $command = "$mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ".
               "test_db | gzip > $backup_file";
    
    exec($command);
    ?>
    

    【讨论】:

      【解决方案3】:

      语法:

      mysqldump -u username -ppass_word database_name table_name > path/sql_file_name.sql
      

      【讨论】:

      • -p 选项告诉 MySQL 提示输入密码
      【解决方案4】:

      将完整路径放入 mysql 转储似乎可行

      exec('complete\path\to\mysqldump.exe -uUSERNAME -pPASSWORD DATABASE_NAME > output_folder_path/filename.sql');
      

      【讨论】:

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