Você pode usar um túnel SSH . Você pode configurar o banco de dados para escutar em uma porta local e permitir que um usuário se conecte sem uma senha nessa porta (rejeite todas as conexões diferentes de 127.0.0.1 em uma interface específica) e use o SSH para negociar um túnel para essa porta. Em seguida, você usa a autenticação de certificado para se conectar ao SSH, isso é mais difícil de falsificar e não há senhas codificadas. Se esse script é algo que deve operar em um cron job, ele pode ser executado como uma conta de serviço que é executada com um shell nologin.
Qual é a sua preocupação nesse ponto é o gerenciamento de chaves SSH e há muitas ferramentas para ajudar com / a>. As únicas pessoas que podem acessar a chave privada localmente são os usuários com acesso root e, nesse caso, o armazenamento de senha criptografada também não é seguro para eles.
Outro benefício é que o script pode ser colocado sob controle de versão remota e a autenticação é deixada como um detalhe de implementação, não algo que pode ser extraído do script caso o código vaze além da máquina na qual ele foi implementado.
Alguns bancos de dados já suportam a autenticação de certificado (Postgresql, por exemplo), mas o uso do túnel SSH funcionaria para qualquer banco de dados que tivesse um cliente de linha de comando. Eu usei isso para backups de script do MySQL e Postgresql, funciona como um encanto.