Armazene a senha do cliente MySQL ou configure a senha menos autenticação

11

Estou usando o cliente de linha de comando mysql e não quero fornecer a senha toda vez que inicio o cliente. Quais são as minhas opções?

Viagem
fonte
Aceite respostas em algumas de suas perguntas anteriores, pois parece que várias dessas respostas foram soluções corretas - clique na marca de seleção destacada à esquerda da resposta.
Shane Madden

Respostas:

15

Crie um arquivo nomeado .my.cnfem seu diretório pessoal que se parece com isso. Verifique se as permissões do sistema de arquivos estão definidas de forma que somente o usuário proprietário possa lê-lo (0600).

[client]
host     = localhost
user     = username.
password = thepassword
socket   = /var/run/mysqld/mysqld.sock
#database = mysql

Como você também marcou sua pergunta no mysqldump, você deve analisar esta questão.

Usando mysqldump no cron job sem senha root

Atualização (29/06/2016) Se você estiver executando o mysql 5.6.6 ou superior, consulte a ferramenta mysql_config_editor que permite armazenar credenciais em um arquivo criptografado. Agradeço ao Giovanni por mencionar isso para mim.

Zoredache
fonte
Isso é ótimo, funcionou .. Thanku
Viagem
Se a resposta resolveu seu problema, clique na marca de seleção para aceitá-lo.
Zoredache
1
Isso armazenará a senha como texto sem formatação, uma prática que eu desencorajaria do ponto de vista da segurança.
Giovanni
@Giovanni com certeza, embora o mysql_config_editor que você mencionou na sua resposta, enquanto útil não esteja disponível até você executar o 5.6.6. Hoje ainda existem distribuições com versões mais antigas.
precisa
Mas como isso é feito no Windows?
Wolfpack'08
9

Você pode usar o mysql_config_editorutilitário para armazenar credenciais de autenticação em um arquivo de caminho de login criptografado chamado .mylogin.cnf.

Para criar um novo conjunto de credenciais, execute:

mysql_config_editor set --host=db.host.org --user=dbuser --password

e digite sua senha quando solicitado.

Isso armazenará suas credenciais de autenticação no clientcaminho de login padrão .

Você pode armazenar várias credenciais de autenticação especificando uma --login-pathopção diferente :

mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password

Por padrão, o mysqlcliente lê os grupos [client]e [mysql]de outros arquivos de opções, e também os lê no arquivo do caminho de login. Com uma --login-pathopção, os programas clientes também leem o caminho de login nomeado no arquivo de caminho de login. Os grupos de opções lidos de outros arquivos de opções permanecem os mesmos. Considere este comando:

mysql --login-path=db2

O mysqlcliente lê [client]e [mysql]de outros arquivos de opções, e [client], [mysql]e, [mypath]a partir do arquivo caminho login.

Para imprimir todas as informações armazenadas no arquivo de configuração, execute:

mysql_config_editor print --all=true

Mais informações sobre o utilitário podem ser encontradas em "mysql_config_editor - MySQL Configuration Utility" .

Giovanni
fonte
2

Não devemos fingir que o .mylogin.cnf é seguro, pois posso usá my_print_defaults -s [use your login-path]-lo para fazer com que essa senha apareça em texto simples. É por isso que o MariaDB não suporta essa abordagem de 'segurança por obscuridade'.

Mark Butler
fonte
Então, qual é a resposta para essa pergunta então?
Pierre.Vriens
0

Existe uma outra maneira, ortogonal aos métodos mencionados acima, mas pode ser um risco de segurança se alguém estiver assistindo ao monitor ou se estiver salvando seu histórico .

No entanto, é uma opção que impede que você seja solicitado e que eu uso em imagens de janela de encaixe descartáveis ​​e coisas do tipo ....

mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.

Você não será solicitado, poderá definir um alias temporário no shell, se desejar.

Use com cuidado.

mysql Ver 14.14 Distrib 5.5.61-38.13, para debian-linux-gnu (x86_64) usando o readline 5.1

tjb
fonte