¿Es posible tener contraseñas configuradas por base de datos o por host en .my.cnf

47

Tengo lo siguiente en mi ~/.my.cnf

[client]
password="somepass"

pero esta no es la contraseña que uso para cada usuario @ host / base de datos a la que me conecto. ¿Hay alguna forma de especificar en la configuración diferentes contraseñas para diferentes cosas para que no tenga que escribirlas?

xenoterracida
fuente
[El usuario @DTest respondió una pregunta como esta en mayo de este año] [1] [1]: dba.stackexchange.com/questions/2820/…
RolandoMySQLDBA

Respuestas:

64

Como respondí aquí , puede agregar una sección para cada usuario / host / db al que se conecte usando la sintaxis en su ~/.my.cnf:

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

Una vez que esté en su usuario .my.cnf, puede utilizarlo haciendo esto en una línea de comando:

$ mysql --defaults-group-suffix=host1
Derek Downey
fuente
Según lo prometido, +1 !!!
RolandoMySQLDBA
¿Podrías explicar esto --defaults-group-suffix?
Oteo
Agradable. Me tomó un tiempo averiguar el resto desde aquí, pero para una copia de seguridad de mysql Cron, ahora puedo usar mysqldump --defaults-group-suffix = host1 -P 3306 -h 111.0.0.xxx --ssl -u db_usr db_name > / home / myaccount / backups / db_name _ $ (echo $ (fecha '+ \% Y \% m \% d'). sql.gz) para crear una copia de seguridad comprimida. ¡Gracias!
user1324409
Nota: si coloca esto en un archivo my.cnf global, como /etc/mysql/my.cnf, pero tiene un definido por el usuario .my.cnfcon [client]definido en él, este último anulará la configuración en el archivo global. abucheo.
Oteo
Tenga en cuenta que la página de manual de MariaDB afirma falsamente que un sufijo de xleerá la sección, [client_x]pero en realidad necesita el sufijo _xpara eso
Daniel Böhmer
8

No se recomienda poner contraseñas claras en los archivos de texto desde mysql 5.6.6.

Puede usar mysql_config_editorpara guardar contraseñas cifradas también para proporcionar diferentes contraseñas para diferentes conexiones https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html

PerroVerd
fuente
3
Seguridad por oscuridad ...
Federico Razzoli
+1 por mencionar mysql_config_editor
RolandoMySQLDBA
2
Hasta que este programa (1) no sea compatible con versiones anteriores, (2) permita el despliegue automático de contraseñas (es decir, no obligue a leer contraseñas en TTY), no recomiendo este método.
Oteo
¿MariaDB tiene soporte o función comparable para que coincida con mysql_config_editor?
Jeremy Hajek
@JeremyHajek No, no lo hace, y probablemente nunca lo hará porque los desarrolladores de MariaDB señalan que solo proporciona una falsa sensación de seguridad mejorada: MySQL 5.6: ¿Seguridad a través de la complacencia?
Bloodgain
8

La otra respuesta es correcta. Lamentablemente mysqladminno es compatible --defaults-group-suffix(al menos no la versión que estoy usando).

Por lo tanto recurrí a usar --defaults-file=HOST.cnfen su lugar, que trabaja para mysql, mysqladminy mysqldump.

Fifi Finance
fuente
2
La adición de este a mi .bash_profile lo hace aún más fácil:alias my-host='mysql --defaults-file=HOST.cnf'
spyle