Se você está rodando a partir do terminal, considere usar o mysql-client. Meu exemplo abaixo mostra o login solicitando a senha, mas a senha pode ser inserida como um parâmetro de linha de comando ou do arquivo. Eu acho que você deve ser capaz de autenticar com sua chave pública também ....? Sinta-se à vontade para me corrigir nisso.
De qualquer forma, aqui está como eu faço:
morten@desktop:~$ mysql -u USERNAME -p -h HOSTNAME DATABASENAME
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4927647
Server version: 5.1.61-0+squeeze1 (Debian)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
.... e agora é só disparar com as consultas! :)
Você pode fazer a entrada de arquivos ou fluxos. Confira o artigo de desenvolvedores no modo em lote:
Is it better/easier to use PHP or Perl rather than Bash? (I want to be able to easily run it from the terminal) Anyone know a good template script for it?
Eu uso qualquer idioma que eu use para o que mais eu estou executando no servidor. Minha preferência é Python e IPython - isso me remove de algumas das indignidades do shell;) - mas eu escrevi um monte de shell scripts diretos para fazer o que você está perguntando. Faça o que você gosta. A sobrecarga de escolher uma linguagem para fazer consultas de banco de dados é insignificante na maioria dos casos.