Puisque vous utilisez Ubuntu, tout ce que vous avez à faire est simplement d'ajouter un fichier dans votre répertoire personnel et cela désactivera l'invite de mot de passe mysqldump. Cela se fait en créant le fichier ~/.my.cnf
(les autorisations doivent être de 600).
Ajoutez ceci au fichier .my.cnf
[mysqldump]
user=mysqluser
password=secret
Cela vous permet de vous connecter en tant qu'utilisateur MySQL qui nécessite un mot de passe sans avoir à entrer réellement le mot de passe. Vous n'avez même pas besoin du mot de passe -p ou -.
Très pratique pour l'écriture de scripts mysql et mysqldump.
Les étapes pour y parvenir se trouvent dans ce lien .
Vous pouvez également utiliser la commande suivante:
mysqldump -u [user name] -p[password] [database name] > [dump file]
mais sachez qu'elle est intrinsèquement non sécurisée, car l'intégralité de la commande (y compris le mot de passe) peut être visualisée par tout autre utilisateur du système pendant l'exécution du vidage, à l'aide d'une simple ps ax
commande.
--defaults-file
. Comme `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. Voir stackoverflow.com/a/14653239/470749 . MySql s'attendait à ce que le mien soit àc:\wamp\bin\mysql\mysql5.5.24\my.cnf
. J'ai donc créé un fichier là-bas. Le redémarrage de Mysql n'était pas nécessaire; cela a fonctionné immédiatement pour mon prochain mysqldump.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Ajout à la réponse de @ Frankline:
le
-p
option doit être exclue de la commande pour utiliser le mot de passe dans le fichier de configuration.Correct:
mysqldump –u my_username my_db > my_db.sql
Faux:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
peut omettre le nom d'utilisateur.Si votre
.my.cnf
fichier ne se trouve pas dans un emplacement par défaut etmysqldump
ne le voit pas, spécifiez-le à l'aide de--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
la source
Quelques réponses mentionnent la mise du mot de passe dans un fichier de configuration.
Alternativement, à partir de votre script, vous pouvez
export MYSQL_PWD=yourverysecretpassword
.L'avantage de cette méthode par rapport à l'utilisation d'un fichier de configuration est que vous n'avez pas besoin d'un fichier de configuration distinct pour rester synchronisé avec votre script. Vous n'avez que le script à maintenir.
Il n'y a aucun inconvénient à cette méthode.
Le mot de passe n'est pas visible pour les autres utilisateurs du système (il serait visible s'il se trouve sur la ligne de commande). Les variables d'environnement ne sont visibles que par l'utilisateur exécutant la commande mysql et root.
Le mot de passe sera également visible par toute personne pouvant lire le script lui-même, alors assurez-vous que le script lui-même est protégé. Ce n'est en rien différent de la protection d'un fichier de configuration. Vous pouvez toujours obtenir le mot de passe à partir d'un fichier séparé si vous souhaitez que le script soit publiquement lisible (
export MYSQL_PWD=$(cat /root/mysql_password)
par exemple). Il est toujours plus facile d'exporter une variable que de créer un fichier de configuration.Par exemple,
la source
export MYSQL_PWD=...
n'apparaît pas dans la liste des processus. Pas même une fraction de seconde. En effet, laexport
commande est (et doit être) un shell intégré. Ainsi, le shell ne fork / exécute pas un processus avec l'argument de la commande si vous l'exécutez dans votre shell.Pour utiliser un fichier qui se trouve n'importe où dans le système d'exploitation, utilisez
--defaults-extra-file
par exemple:Remarque:
.sqlpwd
n'est qu'un exemple de nom de fichier. Vous pouvez utiliser tout ce que vous désirez.Remarque: MySQL vérifiera automatiquement
~/.my.cnf
ce qui peut être utilisé au lieu de--defaults-extra-file
Si vous utilisez CRON comme moi, essayez ceci!
Autorisation requise et propriété recommandée
.sqlpwd
Contenu:Autres exemples à passer
.cnf
ou.sqlpwd
Si vous souhaitez vous connecter automatiquement à une base de données, vous aurez besoin de l'
[mysql]
entrée par exemple.Vous pouvez maintenant créer un alias qui vous connecte automatiquement à la base de données
Vous ne pouvez également mettre que le mot de passe à l'intérieur
.sqlpwd
et transmettre le nom d'utilisateur via le script / cli. Je ne sais pas si cela améliorerait la sécurité ou non, ce serait une question tout à fait différente.Par souci d'exhaustivité, je dirai que vous pouvez effectuer les opérations suivantes, mais qu'elles sont extrêmement précaires et ne doivent jamais être utilisées dans un environnement de production:
Remarque: il n'y a AUCUN ESPACE entre -p et le mot de passe.
Par exemple,
-pPassWord
est correct alors qu'il-p Password
est incorrect.la source
Oui, c'est très facile .... juste en une seule ligne de commande magique plus
Et.. Voila :)
la source
Pour moi, en utilisant MariaDB, je devais faire ceci: ajouter le fichier
~/.my.cnf
et modifier les autorisations en faisantchmod 600 ~/.my.cnf
. Ajoutez ensuite vos informations d'identification au fichier. La pièce magique qui me manquait était que le mot de passe doit être sous le bloc client (ref: docs ), comme ceci:Si vous venez ici pour chercher comment faire un mysqldump avec MariaDB. Placez le mot de passe sous un bloc [client], puis l'utilisateur sous un bloc [mysqldump].
la source
[mysqldump]
section et cela a fonctionné sans aucun problème. Ubuntu 18.04 LTSVoici une solution pour Docker dans un script / bin / sh:
Remplacez
[MYSQL_CONTAINER_NAME]
et assurez-vous que la variable d'environnementMYSQL_ROOT_PASSWORD
est définie dans votre conteneur.J'espère que cela vous aidera comme cela pourrait m'aider!
la source
J'ai ce qui suit.
/ etc / mysqlpwd
Avec l'alias suivant.
Pour faire une restauration, j'utilise simplement:
la source
Qu'en est-il --password = "" a fonctionné pour moi fonctionnant sur 5.1.51
la source
--password=xxx
sur la ligne de commande rendra le mot de passe visible à toute personne ayant la capacité de lire proc (ou de faire un ps complet) - ce qui est assez par défaut.Certainement, je pense qu'il serait préférable et plus sûr de placer la ligne cmd complète dans la crontab racine, avec credentails. Au moins, l'édition de crontab est réservée (lisible) à quelqu'un qui connaît déjà le mot de passe .. donc pas de soucis pour l'afficher en texte clair ...
Si besoin de plus qu'un simple mysqldump ... il suffit de placer un script bash qui accepte les informations d'identification comme paramètres et exécute toutes les commodités à l'intérieur ...
Le fichier bas en simple
Dans le Crontab:
la source
Vous pouvez spécifier le mot de passe sur la ligne de commande comme suit:
Les options pour mysqldump sont sensibles à la casse!
la source
mysqldump -u root -pmypassword