Estou tentando a replicação mestre-escravo no MySQL e tenho uma dúvida sobre senhas em texto simples.
Quando criei uma conta no servidor master tentei
select * from mysql.slave_master_info;
e user_password
mostra em texto simples.
Gostaria de saber se existe uma maneira de criptografar a senha sem usar SSL?
Resposta curta não (pelo menos não sem usar SO_PEERCRED que é restrito a soquetes de domínio unix - ou seja, não atravessa rede).
E o SSL (ou mais corretamente o TLS) não altera a representação armazenada do token usado para autenticação. É utilizado como mecanismo de autenticação, mas o texto simples da chave privada ainda deve estar disponível no final oferecendo a prova. ou seja, a chave privada TLS não é diferente de uma senha BG neste contexto.
Você pode fornecer proteções adicionais contra exploração restringindo o uso desta conta a endereços específicos (ou nomes DNS). por exemplo, permitir apenas do localhost e usar um túnel ssh (o que permitiria usar SO_PEERCRED, mas moveria o problema para a autenticação ssh).
ATUALIZAR
Após alguma reflexão, ocorreu-me que uma abordagem para limitar o escopo de comprometimento seria usar a identidade da máquina como, pelo menos parte, do token de autenticação. No entanto, não está claro se isso é aplicável ao seu caso de uso. Fora de um ambiente de nuvem, não existe realmente um conceito de identidade definitiva da máquina, mas você pode usar os números de série/informações de configuração de hardware disponíveis para o sistema operacional. Mas tenha cuidado, pois isso será interrompido se você conectar um novo hardware e só fornecer garantias sobre a confidencialidade da senha se o armazenamento estiver comprometido (não se o host estiver comprometido):
Defina a senha adequadamente no mestre e configure um script de inicialização para injetar o valor no banco de dados escravo quando necessário.