É possível ter senhas configuradas por banco de dados ou por host em .my.cnf

47

Eu tenho o seguinte no meu ~/.my.cnf

[client]
password="somepass"

mas essa não é a senha que eu uso para cada usuário @ host / banco de dados ao qual me conecto. Existe alguma maneira de especificar na configuração senhas diferentes para coisas diferentes, para que eu não precise digitá-las?

xenoterracida
fonte
[User @DTest respondeu a uma pergunta como esta, em maio deste ano] [1] [1]: dba.stackexchange.com/questions/2820/...
RolandoMySQLDBA

Respostas:

64

Como respondi aqui , você pode adicionar uma seção para cada usuário / host / db ao qual você se conecta usando a sintaxe em ~/.my.cnf:

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

Uma vez que isso esteja no seu usuário .my.cnf, você pode utilizá-lo fazendo isso em uma linha de comando:

$ mysql --defaults-group-suffix=host1
Derek Downey
fonte
Como prometido, +1 !!!
RolandoMySQLDBA
Você poderia explicar esse sufixo -defaults-group-?
Otheus
Agradável. Demorei um pouco para descobrir o resto daqui, mas para um backup do mysql Cron, agora posso usar o mysqldump --defaults-group-suffix = host1 -P 3306 -h 111.0.0.xxx --ssl -u db_usr db_name > / home / myaccount / backups / db_name _ $ (eco $ (data '+ \% Y \% m \% d'). sql.gz) para criar um backup compactado em gzip. Obrigado!
user1324409
Nota: se você colocar isso em um my.cnf global, como /etc/mysql/my.cnf, mas tiver um definido pelo usuário .my.cnfcom o [client]definido, o último substituirá as configurações no arquivo global! vaia.
Otho5
Observe que a página de manual do MariaDB afirma falsamente que um sufixo xlerá a seção, [client_x]mas na realidade você precisa do sufixo _xpara isso
Daniel Böhmer
8

Colocar senhas claras em arquivos de texto não é recomendado desde o mysql 5.6.6.

Você pode usar mysql_config_editorpara salvar senhas criptografadas também para fornecer senhas diferentes para conexões diferentes https://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html

PerroVerd
fonte
3
Segurança pela obscuridade ...
Federico Razzoli
+1 por mencionar mysql_config_editor
RolandoMySQLDBA
1
Até que este programa seja (1) suportado para versões anteriores, (2) permita a implantação automatizada de senhas (ou seja, não forçando a leitura de senhas no TTY), eu não recomendo este método.
Otho5
O MariaDB tem suporte ou recurso comparável para corresponder ao mysql_config_editor?
Jeremy Hajek
@JeremyHajek Não, não é, e provavelmente nunca será, porque os desenvolvedores do MariaDB apontam que apenas fornece uma falsa sensação de segurança aprimorada: MySQL 5.6: Segurança por Complacência?
Bloodgain
8

A outra resposta está correta. Infelizmente mysqladminnão suporta --defaults-group-suffix(pelo menos não a versão que estou usando).

Daí eu recorreu ao uso --defaults-file=HOST.cnfao invés, que trabalha para mysql, mysqladmine mysqldump.

fifi finanças
fonte
2
Adicionando este à minha Bash_profile tornou ainda mais fácil:alias my-host='mysql --defaults-file=HOST.cnf'
spyle