Mysqldump lancé par cron et sécurité par mot de passe

J’ai écrit un script pour sauvegarder mes bases de données MySQL en utilisant:

mysqldump --opt --all-databases -u user -pmypassword > myDump.sql 

Un cron le lance tous les soirs et scp le résultat sur un autre serveur. mypassword apparaît en clair dans mon script, tout le monde peut le voir avec les droits appropriés. On m’a parlé des problèmes / proc aussi (où l’on peut voir le cmd run).

La documentation MySQL dit:

Spécifier un mot de passe sur la ligne de commande doit être considéré comme non sécurisé. Voir Section 7.6, «Protection de votre mot de passe».

Je n’ai pas trouvé cette magie 7.6 sections n’importe où.

Quelle est la bonne pratique pour gérer la sécurité automatique de mysqldump et de mot de passe?

Citant les documents MySQL ( http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html ):

Stockez votre mot de passe dans un fichier d’options. Par exemple, sous Unix, vous pouvez répertorier votre mot de passe dans la section [client] du fichier .my.cnf de votre répertoire personnel:

 [client] password=your_pass 

Pour que le mot de passe rest sécurisé, le fichier ne doit être accessible à personne d’autre que vous-même. Pour cela, définissez le mode d’access au fichier sur 400 ou 600. Par exemple:

 shell> chmod 600 .my.cnf 

Pour nommer à partir de la ligne de commande un fichier d’options spécifique contenant le mot de passe, utilisez l’ --defaults-file=file_name , où file_name correspond au chemin d’access complet du fichier.

pour append à la réponse de Sahil ci-dessus, utilisez –defaults-extra-file

–defaults-extra-file est utilisé pour indiquer à un programme de lire un seul fichier d’options spécifique en plus des fichiers d’options standard.

alors que –defaults-file est lu à la place du fichier my.cnf par défaut.

Toutes les réponses ici sont en morceaux, donc le partage d’ une commande complète qui fera le nécessaire et doit être utilisé si la firebase database est lourde, --single-transaction et --lock-tables sont très importants ici

 mysqldump --defaults-extra-file=/home/dangi/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz; 

Note: La réponse est en plus de la réponse Avibodha et sahil, ils ont déjà fait le point. Je suis en train de mettre leur réponse en un seul morceau de code avec important measure should be taken at time of backing up live database

Vérifiez la sécurité des mots de passe pour une bonne réponse. Vous pouvez stocker votre mot de passe dans le fichier my.cnf en modifiant les permissions sur ce fichier pour conserver le mot de passe sécurisé.

Vous pouvez également vérifier le dernier commentaire sur cette page aussi:

MYSQL_PWD = “tinkerbell” mysqldump -ubackup –all-databases> dump.sql

La méthode suivante fonctionne pour moi sur une machine Windows, si vous avez 2 versions de MySQL installées et que vous ne savez pas quel my.ini est utilisé lorsque vous exécutez mysqldump, cela vous aidera également:

1, C: \ ProgramData \ MySQL \ Serveur MySQL 5.6 \ my.ini, bien [client], remplacez-le par:

 [client] user=my_user password=my_password 

2, utilisez cette commande:

C: \ Program Files \ Serveur MySQL 5.6 \ bin> mysqldump –default-extra-file = “C: \ ProgramData \ MySQL \ Serveur MySQL 5.6 \ my.ini” -u my_user db_to_export> db_to_export.sql

La réponse acceptée stocke le mot de passe dans un fichier en texte brut, qui peut être lu par toute personne ayant un access administratif (root). Si votre firebase database se trouve dans un environnement d’hébergement partagé, cela n’est pas souhaitable.

Une meilleure option serait d’utiliser mysql_config_editor pour créer un chemin de connexion chiffré nommé mysqldump . Selon la documentation MySQL :

mysql_config_editor crypte le fichier .mylogin.cnf pour qu’il ne puisse pas être lu en clair et que son contenu, lorsqu’il est décrypté par les programmes clients, n’est utilisé qu’en mémoire. De cette manière, les mots de passe peuvent être stockés dans un fichier au format non-texte et utilisés ultérieurement sans avoir à être exposés sur la ligne de commande ou dans une variable d’environnement.

La commande suivante créera votre chemin d’access mysqldump :

 mysql_config_editor set --login-path=mysqldump --host=your_hostname --user=your_username --password 

Vous serez invité à entrer votre mot de passe et le chemin de connexion que vous avez créé sera stocké au format crypté. mysqldump utilisera automatiquement ce chemin de connexion à chaque fois que vous l’appelez, à moins que vous ne --login-path un chemin de connexion différent avec l’option de ligne de commande --login-path .

Voici comment invoquer mysqldump après avoir créé un chemin de connexion chiffré:

 mysqldump database_name > output_file