Você pode armazenar as credenciais em ~/.my.cnf file
. O Mysql procurará este arquivo por padrão e usará as credenciais especificadas nele, se nenhuma outra credencial for especificada no comando.
Eu tenho um script bash que executa um monte de comandos MySQL, separados por entrada do usuário.
Sempre que uma consulta é executada, a senha deve ser reinserida.
Eu entendo que é melhor evitar colocar a senha na linha de comando, então eu tenho medo de perguntar ao usuário a senha e, em seguida, transmiti-la na linha de comando para cada comando.
Existe uma maneira recomendada de fazer isso sem comprometer a segurança?
Você pode armazenar as credenciais em ~/.my.cnf file
. O Mysql procurará este arquivo por padrão e usará as credenciais especificadas nele, se nenhuma outra credencial for especificada no comando.
Eu não tenho um servidor MySQL para testar, mas você deve ser capaz de
mysql
process e É melhor não manipular senhas em scripts de shell.
Eu tive uma pergunta semelhante:
Eu tomei a decisão de usar um script de shell como um wrapper para um script de expectativa - com base no meu caso de uso.
Não é perfeitamente seguro (o que é?), mas:
É "seguro"? É segurança suficiente para a minha situação.
Muitos documentos sobre como executar o shell script com segurança. Aqui está um:
Considere também: link
Em vez de ter o MySQL -u root -pPASSWORD, tenha isto: 'mysql —defaults-file = /etc/mysql/debian.cnf que usará o debian sys maint user
Você pode armazenar a entrada do usuário (a senha) em uma variável e passá-la como um parâmetro para a CLI do MySQL. Isso não é ruim. Isso não compromete a segurança.
Como usuário, quando você está digitando comandos, eles são colocados no ~/.bash_history
em texto sem formatação. Portanto, como usuário, se você passar a senha como um parâmetro, ela será armazenada em um arquivo na máquina. Isso não é pior do que armazenar a senha em um arquivo de configuração.
Fazer o usuário digitar a senha repetidamente é irritante do ponto de vista do UX. Salvá-lo em uma variável e transmiti-lo ao comando é muito melhor sem comprometer a segurança.
Vale a pena notar que isso exporia a senha na lista de processos enquanto cada um dos comandos do MySQL estiver sendo executado.