Una manera muy rápida de ejecutar queries en un base de datos remota desde la línea de comandos es usando funciones y alias de bash.

Agregar una función en el .bashrc:

 function activar_usuario()
 {
     if [ ! -z $1 ]
     then
         echo "SET @id=(SELECT id FROM users WHERE user_name='$1');UPDATE users SET status='Active', employee_status='Active' WHERE id = @id;"
     fi
 }

Agregar un alias en el .bash_aliases:

alias db='mysql --default-character-set=utf8 --safe-updates -u sugar -psugar --database sugar -h lo --port 5678'

Ahora puedo activar un usuario de la base de datos sugar conectandome al servidor lo mediante el puerto 5678 (lo cual redirecciona al servidor MySQL real) con usuario sugar y password sugar:

Si ejecuto activar_usuario, se construye el query para el usuario admin:

# activar_usuario admin
SET @id=(SELECT id FROM users WHERE user_name='admin');UPDATE users SET status='Active', employee_status='Active' WHERE id = @id;

Si al resultado de activar_usuario aplicamos | db se ejecutan los queries en el MySQL.

activar_usuario admin | db

Podemos entonces definir un alias para cada base de datos o distintos entornos que pueden ser locales o remotos, por ejemplo:

alias db_desa='mysql --default-character-set=utf8 --safe-updates -u sugar -psugar --database sugar -h lo --port 4678'
alias db_test='mysql --default-character-set=utf8 --safe-updates -u sugar -psugar --database sugar -h lo --port 5678'
alias db_prod='mysql --default-character-set=utf8 --safe-updates -u sugar -psugar --database sugar -h lo --port 3678'
 
# activar_usuario admin | db_desa
# activar_usuario admin | db_test
# activar_usuario admin | db_prod
Publicado el 19/09/2013 por OSiRiS