mysqldump всегда создает резервную копию одной и той же базы данных, используя другой файл config.cnf

Посмотрите на эту структуру на сервере:

/home
/home/user1
config.cnf
/home/user2
config.cnf
/home/user3
config.cnf

Каждый пользователь имеет связанную базу данных со своей учетной записью на том же сервере. Я создал скрипт php, который создает резервную копию базы данных, используя mysqldump Команда с использованием учетных данных для каждого пользователя для резервного копирования каждой базы данных в отдельности. Прежде всего, позвольте мне показать вам рабочий процесс:

  1. Объявите параметры подключения, такие как пользователь, хост, имя базы данных

    $user = env('db_username');
    $password = env('db_password');
    $db = env('db_database');
    $host = env('db_host');
    
  2. Потому что используя mysqldump -p{password} передача пароля в качестве аргумента является рискованной, поэтому я продолжаю создавать временный файл config.cnf, имеющий следующее содержимое (каждый файл конфигурации имеет вид):

    $config = 'config.cnf';
    
    // [client]
    // user = the-user
    // password = the-password
    // host = localhost
    
    $credentials = "[client]\nuser = {$user}\npassword = {$password}\nhost = {$host}";
    \File::put($config, $credentials);
    
  3. Как только файл конфигурации сгенерирован, настало время переписать резервную копию:

    exec("mysqldump --defaults-extra-file={$config} {$db} | gzip > bk.sql.gz");
    

Я могу подтвердить, что скрипт работает без ошибок. Я открыл файл, и данные там, но каждая сделанная резервная копия всегда возвращает данные для первой пользовательской базы данных, всегда. Я имею в виду:

  • Запуск сценария в /home/user1 резервное копирование базы данных пользователя 1;
  • Запуск сценария в /home/user2 резервное копирование базы данных пользователя 1;
  • Запуск сценария в /home/user3 резервное копирование базы данных пользователя 1;

Кроме того, это очень странно, потому что после запуска скрипта я проверяю config.cnf для каждого пользователя и учетные данные пишутся правильно. Так что я что-то упустил, чтобы mysqldump работал так, как ожидалось для базы данных каждого пользователя?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]