MySQLdump через crontab – Pass –password = / hashed / password / file, поэтому я могу использовать crontab без использования текстового пароля

Поэтому я настраиваю руководство по резервному копированию WordPress / составление расписания резервного копирования для себя.

Я хочу ежедневно делать отвалы MySQL, но для этого требуется либо

-p then user input 

или

 --password="plain text password" 

Могу ли я передать его файлу, который по крайней мере MD5 или лучше хэширован и защищен для повышения безопасности, но заставить команду не требовать ввода пользователем?

Любая помощь приветствуется!

Для справки здесь приведена команда, которую я хочу запустить

 mysqldump -u [username] --password=~/wp_backups/sqldumps/.sqlpwd [database name] > ~/wp_backups/sqldumps/"$(date '+%F').sql" 

У вас есть следующие параметры пароля:

  • введите пароль в командной строке через опцию -p
  • предоставить пароль через переменную среды MYSQL_PWD
  • поместите свою конфигурацию в файл ~/.my.cnf разделе [mysqldump]

Во всех случаях для проверки подлинности ваш клиент нуждается в текстовом пароле. Вы упомянули хэши, но черта хэша заключается в том, что это односторонняя функция преобразования (т. Е. Вы не сможете восстановить исходный пароль из хэша), поэтому он неприменим как токен аутентификации.

Поскольку вы создаете резервную копию базы данных WordPress, предположительно, той же учетной записи, на которой размещен ваш WordPress, нет улучшений безопасности, связанных с попыткой скрыть пароль от пользователя, который запускает WordPress (учетные данные базы данных можно легко извлечь из wp-config.php файл в любом случае).

Итак, я бы предложил определить следующее ~/.my.cnf :

 [mysqldump] host = your_MySQL_server_name_or_IP port = 3306 user = database_user_name password = database_password 

Затем убедитесь, что файл имеет разрешения 0600. Таким образом, mysqldump не нуждается в учетных данных базы данных, указанных в ее командной строке (они будут считаны из файла ~/.my.cnf .

Это создает файл (это может быть любой файл anywere is OS), который передает пароль и имя пользователя из файла. Даже если бы это было «хэшировано», это не имело бы значения, если кто-то схватил файл, они могли бы просто использовать его как есть. Если это сработает для меня, это сработает для них.

Поэтому, чтобы ответить на секретную часть моего вопроса, chmod 0600 & sudo chown $ USER: nogroup предотвратит несанкционированный доступ к файлу после его создания.

 mkdir ~/wp_backups/sqldumps && touch ~/wp_backups/.sqlpwd && nano ~/wp_backups/.sqlpwd && chmod 600 ~/wp_backups/.sqlpwd && sudo chown $USER:nogroup ~/wp_backups/.sqlpwd 

Содержимое. sqlpwd

 [mysqldump] # NEEDED FOR DUMP user=username password=password [mysql] # NEEDED FOR RESTORE user=username password=password 

– Синтаксис CLI CLI

 mysqldump --defaults-extra-file=~/wp_backups/.sqlpwd [database] > ~/wp_backups/sqldumps/"$(date '+%F').sql" 

Вы можете взглянуть на mysqldump-secure, который действует как сценарий оболочки вокруг mysqldump и будет заботиться о безопасности паролей (через defaults-extra-file по defaults-extra-file ), а также предлагает вам шифровать ваши базы данных mysql с помощью асимметричного шифрования.