MySQLdump via crontab - Pass --password = / hash / password / file para que eu possa usar via crontab sem usar senha de texto simples

1

Estou configurando um guia de backup do WordPress / fazendo um agendamento de backup para mim mesmo de verdade.

Eu quero fazer dumps do MySQL diariamente, mas o comando requer

-p then user input 

ou

--password="plain text password"

Posso passá-lo para um arquivo que tenha pelo menos um MD5 ou melhor protegido e protegido para aumentar a segurança, mas fazer com que o comando não precise de entrada do usuário?

Qualquer ajuda é apreciada!

Para referência, aqui está o comando que quero executar

mysqldump -u [username] --password=~/wp_backups/sqldumps/.sqlpwd [database name] > ~/wp_backups/sqldumps/"$(date '+%F').sql"
    
por FreeSoftwareServers 05.09.2015 / 05:25

3 respostas

3

Você tem as seguintes opções de senha:

  • forneça a senha na linha de comando por meio da opção -p
  • forneça a senha por meio da variável de ambiente MYSQL_PWD
  • insira sua configuração no arquivo ~/.my.cnf na seção [mysqldump]

Em todos os casos, seu cliente precisa de uma senha em texto simples para poder se autenticar. Você mencionou hashes, mas a característica de um hash é que é uma função de conversão unidirecional (ou seja, você não poderá restaurar a senha original de um hash), portanto, ela não pode ser usada como token de autenticação.

Como você está fazendo backup do banco de dados Wordpress, supostamente, a mesma conta que hospeda o Wordpress, não há melhorias de segurança na tentativa de ocultar a senha do usuário que executa o Wordpress (as credenciais do banco de dados podem ser facilmente extraídas dawp-config.php arquivo de qualquer maneira).

Então, sugiro definir o seguinte ~/.my.cnf :

[mysqldump]
host = your_MySQL_server_name_or_IP
port = 3306
user = database_user_name
password = database_password

Em seguida, verifique se o arquivo tem as permissões 0600. Dessa forma, mysqldump não precisa de nenhuma credencial de banco de dados especificada em sua linha de comando (elas serão lidas no arquivo ~/.my.cnf .

    
por 05.09.2015 / 07:36
1

Isso cria um arquivo (pode ser qualquer arquivo em qualquer sistema operacional) que transmita a senha e o nome de usuário do arquivo. Mesmo se fosse "hash", não faria diferença se alguém conseguisse manter o arquivo, eles poderiam usá-lo como está. Se funcionar para mim, funcionaria para eles.

Então, para responder a parte de segurança da minha pergunta, chmod 0600 & sudo chown $ USER: o nogroup impedirá o acesso não autorizado ao arquivo, uma vez criado.

mkdir ~/wp_backups/sqldumps &&  touch ~/wp_backups/.sqlpwd &&  nano ~/wp_backups/.sqlpwd && chmod 600 ~/wp_backups/.sqlpwd && sudo chown $USER:nogroup ~/wp_backups/.sqlpwd

-. sqlpwd contents

[mysqldump]             # NEEDED FOR DUMP
user=username
password=password

[mysql]             # NEEDED FOR RESTORE
user=username
password=password

- Sintaxe SQL CLI

mysqldump --defaults-extra-file=~/wp_backups/.sqlpwd [database] > ~/wp_backups/sqldumps/"$(date '+%F').sql"
    
por 05.09.2015 / 08:29
1

Você pode dar uma olhada no mysqldump-secure que atua como um script de wrapper em torno de mysqldump e cuidará da segurança da senha ( através de um defaults-extra-file ) e também oferece o seu para criptografar seus bancos de dados mysql através de criptografia assimétrica.

    
por 19.02.2016 / 16:54