Est-il possible de configurer des mots de passe par base de données ou par hôte dans le fichier .my.cnf


47

J'ai le suivant dans mon ~/.my.cnf

[client]
password="somepass"

mais ce n'est pas le mot de passe que j'utilise pour chaque utilisateur @ hôte / base de données auquel je me connecte. Existe-t-il un moyen de spécifier dans la configuration différents mots de passe pour différentes choses afin que je ne sois pas obligé de les saisir?


[User @DTest a répondu à une question comme celle-ci en mai de cette année] [1] [1]: dba.stackexchange.com/questions/2820/…
RolandoMySQLDBA Le

Réponses:


64

Comme j'ai répondu ici , vous pouvez ajouter une section pour chaque utilisateur / hôte / db auquel vous vous connectez en utilisant la syntaxe de votre ~/.my.cnf:

[clienthost1]   # Note: client + host1
user=myuser
password=mypass
database=dbname
host=server.location.com

Une fois que cela est dans votre utilisateur .my.cnf, vous pouvez l'utiliser en effectuant ceci sur une ligne de commande:

$ mysql --defaults-group-suffix=host1

Comme promis, +1 !!!
RolandoMySQLDBA

Pourriez-vous expliquer ce - suffixe-groupe-suffixe?
Otheus

Agréable. Il m'a fallu un certain temps pour trouver le reste d'ici, mais pour une sauvegarde mysql Cron, je peux maintenant utiliser mysqldump --defaults-group-suffix = host1 -P 3306 -h 111.0.0.xxx --ssl -u db_usr db_us > / home / mon compte / sauvegardes / nom_base _ $ (echo $ (date '+ \% Y \% m \% d'). sql.gz) pour créer une sauvegarde compressée. Je vous remercie!
user1324409

Remarque: si vous placez ceci dans un fichier my.cnf global, tel que /etc/mysql/my.cnf, mais que vous définissez un utilisateur .my.cnfdans [client]lequel il est défini, ce dernier remplacera les paramètres du fichier global! huer.
Otheus

Notez que la page de manuel de MariaDB indique faussement qu’un suffixe of xlira la section [client_x]mais qu’en réalité vous avez besoin du suffixe _xpour cela
Daniel Böhmer Le

8

Mettre des mots de passe clairs dans les fichiers texte n'est pas recommandé car mysql 5.6.6.

Vous pouvez utiliser mysql_config_editorpour enregistrer des mots de passe cryptés également pour fournir différents mots de passe pour différentes connexions https://dev.mysql.com/doc/refman/5.6/fr/mysql-config-editor.html


3
Sécurité par obscurité ...
Federico Razzoli

+1 pour avoir mentionné mysql_config_editor
RolandoMySQLDBA

2
Tant que ce programme n'est pas (1) rétabli dans les versions précédentes, (2) autorise le déploiement automatisé des mots de passe (c.-à-d. Qu'il ne faut pas forcer la lecture des mots de passe sur TTY), je ne recommande pas cette méthode.
Otheus

MariaDB a-t-il une prise en charge ou une fonctionnalité comparable pour correspondre à mysql_config_editor?
Jeremy Hajek

@JeremyHajek Non, ce n'est pas le cas et ce ne sera probablement jamais le cas, car les développeurs de MariaDB soulignent que cela ne donne qu'un faux sentiment de sécurité améliorée: MySQL 5.6: La sécurité par la complaisance?
Bloodgain

8

L'autre réponse est correcte. Malheureusement, mysqladminne supporte pas --defaults-group-suffix(du moins pas la version que j'utilise).

Par conséquent, j'ai eu recours à la --defaults-file=HOST.cnfplace, qui fonctionne pour mysql, mysqladminet mysqldump.


2
Ajouter ceci à mon .bash_profile a rendu la tâche encore plus simple:alias my-host='mysql --defaults-file=HOST.cnf'
spyle
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.