• Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Mi Blog
✌ Cómo ejecutar comandos MySQL desde Bash Shell

✌ Cómo ejecutar comandos MySQL desde Bash Shell

En algunas ocasiones es necesario la ejecución de comandos MySQL en una BBDD MySQL directamente desde el Shell de GNU/Linux. Por ejemplo, a la hora de programar scripts, donde es posible que queramos realizar consultas tanto de INSERT, UPDATE o incluso DELETE en alguna base de datos.

La forma de hacerlo es sumamente sencilla y os explicaré como se realiza directamente en Bash Shell.

1.- REQUISITOS

Para la realización de este tutorial será necesario un equipo con GNU/Linux y un servidor de bases de datos MySQL (en local o en remoto). Para este ejemplo he utilizado los siguientes recursos:

  • GNU/Linux Debian 8 64bits
  • Servidor MySQL local
  • Servidor MySQL remoto

2.- COMANDOS MYSQL DESDE BASH EN UNA LÍNEA

La sintaxis para ejecutar comandos de MySQL directamente desde la consola Bash Shell es la siguiente:

root@server:$ mysql -u [usuario] -p[contraseña] -e "[comandos mysql]"

A modo de ejemplo, podemos listar las bases de datos que hay en nuestro servidor:

root@server:$ mysql -u root -pcontraseña -e "show databases"
+--------------------+
| Database |
+--------------------+
| information_schema |
| cacti |
| mysql |
| performance_schema |
| phpmyadmin |
| rosinfo |
+--------------------+

Si queremos realizar consultas sobre una base de datos determinada, usaremos la siguiente sintaxis:

root@server:$ mysql -u [usuario] -p[contraseña] [base de datos] -e "[comandos mysql]"

En el siguiente ejemplo real, contaremos el numero de elemento en la tabla "hosts" en la base de datos rosinfo:

root@server:$ mysql -u root -pcontraseña rosinfo -e "select count(*) from hosts"
+----------+
| count(*) |
+----------+
| 1 |
+----------+

3.- EJECUTAR COMANDOS MYSQL EN UN EQUIPO REMOTO

Si queremos lanzar la consulta SQL en un servidor remoto, deberemos añadir el parámetro "-h [ip]" donde [ip] es la dirección IP o nombre DNS del servidor:

root@server:$ mysql -h [ip] -u [user] -p[pass] -e "[mysql commands]"

En el siguiente ejemplo lanzaré el comando "describe lln4b_k2_categories" en un servidor remoto "db12345.db.1and1.com" de la base de datos "db12345" y con el usuario "dbuser12345":

root@server:$ mysql -h db12345.db.1and1.com -u dbuser12345 -pcontraseña db12345 -e "describe lln4b_k2_categories"
+------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+----------------+
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| alias | varchar(255) | NO | | NULL | |
| description | text | NO | | NULL | |
| parent | int(11) | YES | MUL | 0 | |
| extraFieldsGroup | int(11) | NO | | NULL | |
| published | smallint(6) | NO | MUL | 0 | |
| access | int(11) | NO | MUL | 0 | |
| ordering | int(11) | NO | MUL | 0 | |
| image | varchar(255) | NO | | NULL | |
| params | text | NO | | NULL | |
| trash | smallint(6) | NO | MUL | 0 | |
| plugins | text | NO | | NULL | |
| language | char(7) | NO | MUL | NULL | |
+------------------+------------------+------+-----+---------+----------------+

4.- COMANDOS MYSQL DESDE UN SCRIPT EOF

Podemos incluir en nuestros scripts las consultas que queremos lanzar desde el Shell. Por ejemplo en un script EOF (la forma de hacerlo será la siguiente, aunque podemos hacerlo también sin EOF. En el siguiente ejemplo crearemos un script llamado script.sh con permisos de ejecución (chmod +x script.sh) y lo ejecutaremos de forma normal:

#!/bin/bash
mysql -h localhost -u root -pcontraseña EOF
use rosinfo;
select * from hosts\G;
EOF

Ejecutamos el script y comprobamos el resultado:

root@dns-server:~# ./script.sh 
*************************** 1. row ***************************
id: 5
host: 192.168.1.150
ip: 192.168.1.150
description: Prueba Vmware
category: VmWare
snmp: public
httpport: 80
ping: 0.20
pingerror: 0
snmperror: 3
offline: 0
snmp_name: MikroTik
snmp_location: paracom
snmp_contact: raul
snmp_uptime: Timeticks: (97200) 0:16:12.00

ENJOY!


Raúl Prieto Fernández

Sitio Web: /

Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado.

Escribir un comentario

Información básica sobre Protección de Datos

Responsable: Raúl Prieto Fernández +info

Finalidad: Moderar los comentarios a los artículos publicados en el blog. +info

Legitimación: Consentimiento del interesado +info

Destinatarios: No se comunicarán datos a persona u organización alguna. +info +info

Derechos: Tiene derecho a Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la información adicional. +info

Plazo de conservación de los datos: Hasta que no se solicite su supresión por el interesado.

Información adicional: Puede consultar la información adicional y detallada sobre Protección de Datos Personales en mi página web raulprietofernandez.net +info

     

Código de seguridad
Refescar


LOGIN / ENTRAR

BUSCAR EN EL BLOG

TWITTER TIMELINE

Booking.com

ENCUESTA

¿Cual es el mejor Sistema Operativo?

Como es lógico, esta web utiliza cookies propias y de terceros para elaborar información estadística y mostrar publicidad personalizada a través del análisis de tu navegación, conforme a la política de cookies.

  Si continúas navegando, aceptas su uso.