mysqldump: especifica o nome do banco de dados por usuário em ~ / .my.cnf

0

Estou executando um servidor compartilhado com vários usuários. Cada usuário possui seu próprio banco de dados no MySQL e credenciais associadas. Eu criei um template systemd timer & serviço (ou seja, sitetasks @ .timer e sitetasks @ .service ) para executar mysqldump diariamente para fazer backup de cada banco de dados de usuários. Informações específicas do usuário são lidas pelo mysqldump do arquivo .my.cnf no diretório pessoal de cada usuário.

Posso, então, executar o timer / serviço do systemd para um usuário específico (ou seja, [email protected] ) para fazer o backup desse banco de dados do usuário.

No entanto, não consigo encontrar uma maneira de especificar o nome do banco de dados em .my.cnf . Eu olhei para a opção - databases , mas isso é apenas um sinalizador, não uma forma de especificar um banco de dados ou um conjunto de bancos de dados.

Posso pensar em várias maneiras de resolver isso de maneira diferente:

  1. cria um timer / serviço systemd específico do usuário - mas isso não é bem dimensionado
  2. solte um arquivo .db-name no diretório home dos usuários e leia-o ao chamar mysqldump (algo como mysqldump $ (cat .db-name) > backup.sql) - mas agora eu preciso de um arquivo adicional
  3. semelhante a # 2 mas analisando cada usuário wp-config.php (os bancos de dados são para o Wordpress)
  4. certifique-se de que o nome-db seja sempre o mesmo que o nome do usuário

Nenhum desses é tão escalonável & portável como sendo capaz de usar o arquivo de opções .my.cnf existente do MySQL.

Existe uma maneira de especificar um nome de banco de dados padrão em .my.cnf ?

    
por chr0mag 01.12.2017 / 12:46

1 resposta

1

Todo usuário tem acesso ao banco de dados ao qual ele recebeu direitos de acesso, então se você der a instrução mysqldump para descarregar todos os bancos de dados: --all-databases , somente o banco de dados desse usuário será armazenado em backup e tem acesso a. Geralmente é apenas information_schema . Ele não torna o tamanho do dump muito maior, na verdade - nenhuma informação desse esquema é descartada - porque é uma informação dinâmica ali.
Assim, garantindo privilégios para todos os usuários - você tem uma solução simples para fazer o backup desses bancos de dados de usuários simplesmente despejando "todos os bancos de dados".

    
por 01.12.2017 / 14:33