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?

xénoterracide
la source
[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
Derek Downey
la source
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

PerroVerd
la source
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.

fifi finance
la source
2
Ajouter ceci à mon .bash_profile a rendu la tâche encore plus simple:alias my-host='mysql --defaults-file=HOST.cnf'
spyle