MySQL equivalente a .pgpass, ou autenticação automática em um trabalho cron para mySQL

8

Estou escrevendo um script bash para fazer backup de meus bancos de dados. A maioria é postgresql, e no postgres existe uma maneira de evitar a autenticação, criando um arquivo ~ / .pgpass que contém a senha do postgres. Coloquei isso no diretório inicial do root e o fiz chmod 0600, para que o root pudesse despejar os bancos de dados do postgres sem ter que se autenticar. Agora eu quero fazer algo semelhante para o mysql, embora eu tenha apenas um banco de dados mysql. Como posso fazer isso? Não quero especificar a senha na linha de comando para o mysqldump porque isso faz parte de um script que pode ser um pouco visível para outros usuários. Existe uma maneira melhor (isto é, embutida no mysql) de fazer isso do que criar um arquivo que somente o root possa ler e depois ler para obter a senha do mysql e usá-la no script bash como uma variável?

Ibrahim
fonte
Hmm, estranhamente, eu encontrei algo promissor através do Google em vez de de serverfault própria pesquisa: stackoverflow.com/questions/601995/...
Ibrahim
Sim, meu Deus, aparentemente está faltando minha busca.
Ibrahim

Respostas:

6

Crie um ~/.my.cnfarquivo para o usuário executando o mysql. Ele deve conter o seguinte:

[client]
user = root
password = yourpassword
Warner
fonte
Uma coisa que eu acho que devo acrescentar é que, se estiver executando o script usando o sudo, você precisará usar -H para garantir que ele use o diretório inicial do root. Mas acho que esse problema não deve ser um problema em um trabalho cron do root, correto?
Ibrahim
3
Mas como isso é tratado em várias contas? Isso funcionará para o host local, mas e se eu quiser armazenar meu login em um servidor remoto?
Cerin