primeiro você pode criar um 'usuário' no mysql que tenha permissões somente leitura para o banco de dados em questão, que reduziria o dano potencial destrutivo, caso um invasor tenha acesso ao seu script de backup.
você pode usar gpg
ou pgp
encryption em seu backup antes ou depois de compactá-lo, e você pode fazer isso sem precisar fornecer uma senha, usando sua chave pública.
e é claro, você deve chmod 700 backupscript.sh
impedir que alguém leia sua senha.
pode haver outras maneiras de fazer snapshots de banco de dados sem senha, mas eu não estou ciente de nada que esteja fora do meu limite.
gpg
ou pgp
parece uma alternativa superior ao método openssl
que você mencionou, porque pode ser feito sem uma senha.
#!/bin/sh
touch db.backup.sql.gz
chmod 600 db.backup.sql.gz
mysqldump -u nonprivuser --password="pass" --all-databases --single-transaction | gzip > db.backup.sql.gz
gpg -e -r [email protected] db.backup.sql.gz && rm -f db.backup.sql.gz
s3put backup/db.backup.sql.gz.gpg db.backup.sql.gz.gpg