Mi Blog
👉 Cómo ejecutar comandos MySQL desde Bash Shell

Cómo ejecutar comandos MySQL desde Bash Shell

 
(5 votos)

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.

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

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!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!
Cookies

Usamos cookies en nuestro sitio web. Algunas de ellas son esenciales para el funcionamiento del sitio, mientras que otras nos ayudan a mejorar el sitio web y también la experiencia del usuario (cookies de rastreo). Puedes decidir por ti mismo si quieres permitir el uso de las cookies. Ten en cuenta que si las rechazas, puede que no puedas usar todas las funcionalidades del sitio web.