Você entendeu mal alguns mecanismos.
Quando você coloca uma frase entre aspas simples, ou seja, ' , não há expansão e você não precisa escapar do $ s. Expansão significa que existem caracteres especiais como $ , que, se não forem removidos, acionam procedimentos especiais de shell. Então, quando você suprime a expansão com aspas simples, não precisa escapar delas. Assim use:
mysql -u root -p -e 'some statement that change a pa$$word'
Quanto a printf , o que você fez não está sendo verificado. Chamar com %q adiciona as barras invertidas ao $ s.
Se algo não funcionou, foi porque $$ foi alterado para o PID (ID do processo) do shell. Isso é o que o shell faz dessa combinação de caracteres especiais em seu contexto normal, ie. quando eles não são escapados ou colocados entre aspas simples.