web-dev-qa-db-fra.com

Mysqldump via crontab - passe -password = / hachée / mot de passe / fichier afin que je puisse utiliser via crontab w / o à l'aide du mot de passe texte

Donc, je confecte un WordPress guide de sauvegarde/faisant un horaire de sauvegarde pour moi-même pour de vrai.

Je veux faire des vidanges MySQL tous les jours, mais la commande nécessite soit

-p then user input 

ou

--password="plain text password"

Puis-je le transmettre à un fichier au moins MD5 ou mieux haché et protégé pour augmenter la sécurité mais que la commande ne nécessite aucune entrée utilisateur?

Toute aide est appréciée!

Pour référence voici la commande que je veux exécuter

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

Vous avez suivi des options de mot de passe:

  • fournir le mot de passe sur la ligne de commande via le -p option
  • fournir le mot de passe via le MYSQL_PWD variable d'environnement
  • mettez votre configuration dans le ~/.my.cnf Fichier sous le [mysqldump] section

Dans tous les cas, votre client a besoin d'un mot de passe en texte brut pour pouvoir s'authentifier. Vous avez mentionné les hachages, mais le trait d'un hachage est que c'est une fonction de conversion à sens unique (c'est-à-dire que vous ne pourrez pas restaurer le mot de passe d'origine d'un hachage), il est donc inutilisable comme jeton d'authentification.

Puisque vous sauvegardez le Wordpress Database à partir du même compte qui héberge votre Wordpress Il n'existe aucune amélioration de la sécurité d'essayer de masquer le mot de passe de la utilisateur qui exécute Wordpress (les informations d'identification de la base de données peuvent être facilement extraites du wp-config.php Dossier de toute façon).

Donc, je suggère de définir ce qui suit ~/.my.cnf:

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

Assurez-vous ensuite que le fichier contient les 0600 autorisations. De cette façon mysqldump n'a pas besoin d'identification de base de données spécifiée sur sa ligne de commande (elles seront lues à partir de l'~/.my.cnf déposer.

12
galaxy

Cela crée un fichier (il pourrait s'agir d'un fichier n'importe quel fichier er est OS) qui transmet le mot de passe et le nom d'utilisateur dans le fichier. Même si c'était "haché", cela ne ferait pas la différence si quelqu'un a eu une prise du fichier, ils pourraient simplement l'utiliser comme cela. Si cela fonctionne pour moi, cela fonctionnerait pour eux.

Donc, pour répondre à la partie Sécurité de ma question, chmod 0600 et sudo chown $ utilisateur: NogRoup empêchera un accès non autorisé au fichier une fois créé.

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

- contenu SQLPWD

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

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

--SQL CLI Syntaxe

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