Entrada

MySQL 🐬 : Cliente de línea de Comandos

El cliente MySQL es una herramienta de línea de comandos fundamental para desarrolladores y administradores, que permite conectarse a servidores locales o remotos, ejecutar consultas SQL, gestionar bases de datos de forma directa y automatizar tareas desde la terminal.

Al instalar MySQL, dentro del paquete de instalación, se incluye una herramienta para conectarnos a un servidor mediante línea de comandos (a menudo, se denomina el cliente de línea de comandos), el programa se llama mysql y permite conectarse a un servidor y abrir una sesión como cliente para ejecutar sentencias SQL con capacidades de edición. Esta herramienta admite tanto un uso interactivo como no interactivo.

  • En modo interactivo, los resultados de las consultas se muestran en una tabla con formato ASCII, lo que facilita su lectura.
  • En modo no interactivo (por ejemplo, al usarse en scripts o como parte de una canalización), los resultados se presentan en formato separado por tabulaciones.

Por ejemplo:

1
echo "SELECT NOW();" | mysql -u usuario -p

O redirigiendo la salida a un archivo:

1
mysql -u usuario -p -e "SELECT nombre FROM usuarios;" > salida.txt

El formato de salida puede personalizarse utilizando distintas opciones en la línea de comandos, como --table, --batch o --raw, entre otras.

Localizar cliente MySQL en Windows

La ubicación del cliente mysql.exe en Windows puede variar según el método de instalación utilizado. A continuación, se detallan las rutas más comunes dependiendo del paquete o plataforma empleada.

En XAMPP

Si usas XAMPP, el cliente generalmente se encuentra en la siguiente ruta:

1
C:\xampp\mysql\bin\mysql.exe

XAMPP MYSQL PATH

En WAMP

Su usas WAMP, el cliente generalmente se encuentra (según versión instalada y arquitectura) en la siguiente ruta:

1
C:\wamp64\bin\mysql\mysql8.0.x\bin\mysql.exe

WAMP MYSQL PATH

Localizar cliente MySQL en otros sistemas operativos

En Linux (Debian, Ubuntu, etc)

Cuando instalas MySQL desde los repositorios oficiales o usando paquetes .deb o .rmp, el cliente mysql suele ubicarse en:

1
/usr/bin/mysql

Por lo general, la ruta /usr/bin está incluida en las variables de entorno. Para ejecutar el cliente, basta con abrir directamente la terminal y usar el comando mysql.

En macOS

Si instalas MySQL mediante el instalador oficial de Oracle, Homebrew u otros gestores de paquetes, las rutas habituales son:

Instalador oficial:

1
/usr/local/mysql/bin/mysql

Homebrew:

1
/usr/local/opt/mysql-client/bin/mysql

Abrir una conexión

Una vez tenemos localizado el programa, podemos conectarnos a cualquier servidor MySQL que tengamos acceso. Para ello, abrimos una terminal y ejecutamos el programa mysql pasando como argumentos las opciones básicas de conexión (host, user, password, etc).

Otros parámetros comunes son:

OpciónDescripción
-u usuarioUsuario con el que se conecta
-pSolicita contraseña
-h hostDirección del servidor (por defecto: localhost)
-P puertoPuerto del servidor (por defecto: 3306)
-D nombre_bdConectarse directamente a una base de datos
--protocol=tcpForzar el uso de TCP/IP

Conectarse a un servidor local

A continuación, probaremos una conexión local:

1
mysql -u root -h localhost -p

Estos parámetros son sencillos, aunque dependiendo del método de autenticación podría variar pero simplemente necesitamos especificar 2:

  • -u: El usuario que se configuró en el proceso de instalación u otro existente creado por un usuario administrador.
  • -p: El password para el usuario especificado.

Si el servidor se ejecuta en su propia máquina, no es necesario especificar el parámetro -h ya que el cliente mysql por defecto usa la opción de localhost .

Cuando logramos conectarnos correctamente, MySQL muestra un mensaje de bienvenida y cambia el prompt de la consola, indicando que estamos en una sesión activa listos para ejecutar comandos SQL. A continuación, tenemos un ejemplo de conexión a través del CMD:

C:\Users\mcherrera> mysql -u root -p -h localhost -P 3306
Enter password: ****

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 123
Server version: 8.0.25 MySQL Community Server - GPL

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> -- Aquí puedes escribir sentencias SQL

Conectarse a un servidor remoto

Para conectarse a un servidor remoto, simplemente necesitamos indicar la dirección IP o nombre de dominio del servidor MySQLcon el parámetro -h. También es habitual especificar opciones adicionales en ciertos casos, como el puerto si no es el predeterminado (3306):

1
mysql -u usuario -p -h 192.168.1.50 -P 3306

Donde:

  • -h: Es la dirección IP o nombre del host remoto.
  • -P: Especifica el puerto del servidor MySQL (si es diferente al 3306).
  • -u y -p: Igual que en el caso local, indican el usuario y la contraseña.

La conexión será exitosa siempre y cuando el servidor remoto permita conexiones desde tu IP y que el puerto 3306 esté abierto y accesible desde el exterior.

Una vez establecida la conexión, el comportamiento es el mismo: veremos el mensaje de bienvenida y podremos comenzar a ejecutar sentencias SQL.

mcherrera@dev:~$ mysql -u admin -h mi-app-db.xxxxxxxxxxx.us-east-1.rds.amazonaws.com -p -P 3306
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 451
Server version: 8.0.36 Source distribution - Amazon RDS

You are connected to your RDS instance in us-east-1 🌐
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> -- Aquí puedes escribir tus sentencias SQL

Opciones para el cliente de línea de comandos

El cliente MySQL admite una gran variedad de opciones que pueden especificarse tanto en la línea de comandos como guardar preferencias en los archivos de configuración (my.cnf, my.ini) usando las directivas [mysql] y [client].

Además de las opciones populares que ya mencionamos como -u, -p, h o -P, existen muchas otras menos conocidas pero muy útiles para tareas específicas, como configurar el formato de resultados, activar el modo silencioso (evitando entre otras cosas, el mensaje de bienvenida), leer variables desde archivos externos o cambiar el comportamiento del historial.

A continuación se muestra una tabla con algunas de las más utilizadas, junto con una breve descripción:

OpciónDescripción
-u, --userEspecifica el nombre de usuario para autenticarse.
-p[password]Solicita o especifica la contraseña del usuario. Si se omite, la pedirá de forma interactiva.
-h, --hostDefine el hostname del servidor MySQL al que se desea conectar.
-P, --portPuerto TCP/IP utilizado para la conexión (por defecto 3306).
-D, --databaseSelecciona directamente la base de datos al iniciar la sesión.
-e, --executeEjecuta una sentencia SQL directamente desde la línea de comandos.
-H, --htmlDevuelve el resultado en formato HTML (útil para reportes y exportación visual).
--ssl-modeControla el uso de SSL/TLS en la conexión (REQUIRED, DISABLED, VERIFY_CA, etc.).
--default-character-setEstablece el conjunto de caracteres de la conexión (por ejemplo, utf8mb4).
--column-type-infoMuestra información adicional sobre los tipos de columnas en los resultados.
--show-warningsMuestra las advertencias generadas por el servidor tras ejecutar una consulta.
--silentMinimiza la salida a lo estrictamente necesario, ideal para scripts automatizados.
--tableFormatea los resultados en una tabla legible cuando se visualiza en consola.
--pagerPermite canalizar la salida a un programa como less, útil para navegar grandes resultados.

Estas opciones puedes combinarse para diferentes tareas según las necesidades que se requiera, ya sea en desarrollo, scripting o administración.

Conectarse en modo silencioso

El modo silencioso (--silent) suprime la salida adicional como encabezados, bordes y mensajes decorativos. Es especialmente útil en scripts o cuando se desea procesar los resultados en otro programa sin ruido visual. Ejemplo:

1
mysql -u usuario -p --silent

Puedes usar la opción -s como abreviación de --silent.

C:\Users\mcherrera> mysql -u root -p --silent
Enter password: ****
MySQL [(none)]>

Volcar los resultados de una consulta en HTML

El cliente de línea de comandos de MySQL permite exportar los resultados de una consulta directamente en formato HTML usando el parámetro -H. Esto es útil para generar reportes visuales o incrustar resultados en páginas web de forma rápida.

1
mysql -u usuario -p -D nombre_bd -e "SELECT ... FROM ..." -H > reporte.html

salida en HTML

Conexión directa a una base de datos y cargar scripts

La opción -D permite especificar directamente a la base de datos que queremos conectarnos, evitando el uso de la sentencia USE. De esta forma, se puede automatiza la ejecución de scripts o consultas SQL almacenadas en archivos SQL externos.

Ejemplo de cargar un SQL externo:

1
mysql -u usuario -p -D nombre_bd < script.sql

Supongamos que ya tenemos una base de datos y queremos crear una tabla llamada medicamento con algunos registros de prueba.

Para ello, escribiremos el siguiente archivo SQL y lo ejecutaremos directamente sobre la base de datos usando la opción -D.

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS medicamento (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100) NOT NULL,
  presentacion VARCHAR(50),
  stock INT DEFAULT 0
);

INSERT INTO medicamento (nombre, presentacion, stock) VALUES
('Paracetamol', '500mg comprimido', 120),
('Ibuprofeno', '200mg cápsula', 80),
('Amoxicilina', '250mg/5ml suspensión', 50);

SELECT * FROM medicamento;

Ahora, con el siguiente comando ejecutamos el contenido de ese archivo sobre la base de datos clinica_los_alerces:

C:\Users\mcherrera> mysql -u root -p -D clinica_los_alerces < medicamentos.sql
Enter password: ****
id      nombre  presentacion    stock
1       Paracetamol     500mg comprimido        120
2       Ibuprofeno      200mg cápsula   80
3       Amoxicilina     250mg/5ml suspensión    50

Cambiar el delimitador de sentencias

En MySQL, el delimitador predeterminado para separar sentencias SQL es el punto y coma (;). Sin embargo, podemos cambiarlo por un delimitador personalizado usando la opción --delimiter al iniciar el cliente de línea de comandos de MySQL. Por ejemplo:

1
mysql -u usuario -p --delimiter=.

Esto abre el cliente MySQL utilizando el punto (.) como nuevo delimitador de sentencias. Así, deberás finalizar cada instrucción con un . en lugar de ;.

C:\Users\mcherrera> mysql -u root -p -s --delimiter=.
Enter password: ****
MySQL [(none)]> SHOW DATABASES.
Database
clinica_los_alerces
mysql
performance_schema
sys
tienda_electroshop
MySQL [(none)]>

Cambiar el delimitador temporalmente

En caso de que no cambiamos el delimitador en un principio, al definir un procedimiento almacenado que incluye múltiples sentencias SQL, lo más probable es que se produzca un error. En estos casos, cambiar el delimitador de forma temportal es útil para evitar que el cliente interprete erróneamente el ; dentro del cuerpo del procedimiento como el final de toda la sentencia:

1
2
3
4
5
6
7
8
9
DELIMITER //

CREATE PROCEDURE ejemplo()
BEGIN
  SELECT ...;
  SELECT ....;
END //

DELIMITER ;
MySQL [(test)]>  DELIMITER //
MySQL [(test)]> CREATE PROCEDURE ejemplo()
    -> BEGIN
    ->   SELECT 'Primera línea';
    ->   SELECT 'Segunda línea';
    -> END //
Query OK, 0 rows affected (0.053 sec)
MySQL [(test)]>  DELIMITER ;
MySQL [(test)]> CALL ejemplo;
+----------------+
| Primera línea  |
+----------------+
| Primera línea  |
+----------------+
1 row in set (0.038 sec)

+----------------+
| Segunda línea  |
+----------------+
| Segunda línea  |
+----------------+
1 row in set (0.039 sec)

Aquí, el delimitador temporal // evita que MySQL termine prematuramente la ejecución al encontrar ;.

DELIMITER no es parte del lenguaje SQL estándar. Es una instrucción del cliente de MySQL que se utiliza para cambiar cómo este interpreta esa entrada.

Comandos especiales

Cuando iniciamos una sesión interactiva desde el cliente de terminal mysql, podemos ver un listado de comandos que realizan diferentes tareas, para ello debemos ejecutar el comando help:

mysql> HELP

Lista de todos los comandos de MySQL:  
Tenga en cuenta que todos los comandos de texto deben estar al principio de la línea y terminar con ';'

?         (\?) Sinónimo del comando `help`
clear     (\c) Borra la instrucción de entrada actual.
connect   (\r) Vuelve a conectarse al servidor, Los argumentos opcionales son db y host.
delimiter (\d) Establecer delimitador de declaración.
edit      (\e) Editar el comando con $EDITOR. (no funciona en la versión 8)
ego       (\G) Envía el comando al servidor mysql, muestra el resultado verticalmente.
exit      (\q) Salir de mysql. Lo mismo que `quit`.
go        (\g) Envía el comando mysql server.
help      (\h) Muestra esta ayuda.
nopager   (\n) Deshabilitar paginación de salida. (El comando solo funciona en Unix.)
source    (\.) Ejecuta un archivo de script SQL. Toma un nombre de archivo como argumento.
status    (\s) Obtener información de estado del servidor.
system    (\!) Ejecute un comando, el comando solo funciona en Unix. 
               (desde 8.0.19,funciona en Windows.)
warnings  (\W) Mostrar advertencias después de cada declaración.
nowarning (\w) No mostrar advertencias después de cada declaración.

charset   (\C) Cambiar a otro conjunto de caracteres. Podría ser necesario para el procesamiento
               con juegos de caracteres multi-bytes.

Para obtener ayuda del lado del servidor, escriba `help contents`

Según el sistema operativo que estemos utilizando, el listado puede variar, mostrando comandos más o comandos menos. El idioma del servidor por defecto es en inglés pero lo podemos cambiar para que los mensajes se muestren español (que veremos más adelante).

Ejemplo para ejecutar un comando del sistema

1
\! ls

El comando anterior, nos imprimirá los directorio y archivos en la ubicación como lo muestra el siguiente bloque:

mysql> \! ls
Applications
Desktop
Documents
Downloads
Library
Movies
Music
Pictures
Public
mysql>

Ejemplo para ver la información del servidor

1
\! status

Al ejecutar el comando anterior, se imprimirá el estado y la información del servidor como lo muestra el siguiente bloque:

  • mysql> \status
    --------------
    mysql  Ver 8.4.3 for macos14 on x86_64 (MySQL Community Server - GPL)
    
    Connection id:		11
    Current database:	
    Current user:		root@localhost
    SSL:			Not in use
    Current pager:		less
    Using outfile:		''
    Using delimiter:	;
    Server version:		8.4.3 MySQL Community Server - GPL
    Protocol version:	10
    Connection:		Localhost via UNIX socket
    Server characterset:	utf8mb4
    Db     characterset:	utf8mb4
    Client characterset:	utf8mb4
    Conn.  characterset:	utf8mb4
    UNIX socket:		/tmp/mysql.sock
    Binary data as:		Hexadecimal
    Uptime:			1 hour 55 min 53 sec
    
    Threads: 2  Questions: 18  Slow queries: 0  Opens: 139  Flush tables: 3  Open tables: 60  Queries per second avg: 0.002
    --------------
    
  • mysql> \status
    --------------
    mysql  Ver 8.0.36 for Win64 on x86_64 (MySQL Community Server - GPL)
    
    Connection id:          11
    Current database:
    Current user:           root@localhost
    SSL:                    Not in use
    Current pager:          stdout
    Using outfile:          ''
    Using delimiter:        ;
    Server version:         8.0.36
    Protocol version:       10
    Connection:             127.0.0.1 via TCP/IP
    Server characterset:    utf8mb4
    Db     characterset:    utf8mb4
    Client characterset:    utf8mb4
    Conn.  characterset:    utf8mb4
    TCP port:               3306
    Uptime:                 1 hour 22 min 51 sec
    
    Threads: 2  Questions: 215  Slow queries: 0  Opens: 146  Open tables: 70  Queries per second avg: 0.043
    

Mostrar información de comandos

El comando HELP también es una herramienta muy útil para obtener información sobre los comandos disponibles en el intérprete de MySQL. Cuando ejecutas el comando HELP seguido del comando que quieres obtener información, se despliega un listado sobre las opciones que puedes utilizar.

Ejemplo para ver todos los comandos disponibles

Para ver el listado completo sobre el comando SHOW:

1
HELP SHOW

Al ejecutar el comando anterior, se despliega todo el listado como lo muestra en parte el siguiente bloque:

mysql> HELP SHOW
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
    About SHOW
    SHOW AUTHORS
    SHOW BINARY LOGS
    SHOW BINLOG EVENTS
    SHOW CHARACTER SET
    SHOW CLIENT_STATISTICS
    SHOW COLLATION
    SHOW COLUMNS
    SHOW CONTRIBUTORS
    SHOW CREATE DATABASE
    SHOW CREATE EVENT
    SHOW CREATE FUNCTION
    SHOW CREATE PACKAGE BODY
    SHOW CREATE PACKAGE
    SHOW CREATE PROCEDURE
    SHOW CREATE SEQUENCE
    SHOW CREATE TABLE
    SHOW CREATE TRIGGER
    SHOW CREATE USER
    SHOW CREATE VIEW
    SHOW DATABASES
    SHOW ENGINE INNODB STATUS
    SHOW ENGINES
    SHOW ENGINE
    SHOW ERRORS
    SHOW EVENTS
    SHOW FUNCTION CODE
    SHOW FUNCTION STATUS
    SHOW GRANTS
    SHOW INDEX
    SHOW LOCALES
    SHOW MASTER STATUS
    SHOW OPEN TABLES
    SHOW PACKAGE BODY STATUS
    SHOW PACKAGE STATUS
    SHOW PLUGINS SONAME
    SHOW PLUGINS
    SHOW PRIVILEGES
    SHOW PROCEDURE CODE
    SHOW PROCEDURE STATUS
    SHOW PROCESSLIST
    SHOW PROFILES
    SHOW PROFILE
    SHOW QUERY_RESPONSE_TIME
    SHOW RELAYLOG EVENTS
    SHOW SLAVE HOSTS
    SHOW SLAVE STATUS
    SHOW STATUS
    SHOW TABLE STATUS
    SHOW TABLES
    SHOW TABLE_STATISTICS
    SHOW TRIGGERS
    SHOW USER_STATISTICS
    SHOW VARIABLES
    SHOW WARNINGS
    SHOW WSREP_MEMBERSHIP
    SHOW WSREP_STATUS

El cliente de línea de comandos de MySQL es una herramienta fundamental para todo administrador o desarrollador que trabaje con bases de datos. Su potencia, flexibilidad y compatibilidad con scripts lo convierten en una opción ideal tanto para tareas cotidianas como para automatizaciones más avanzadas.

Desde cómo localizar el binario del cliente en distintas plataformas, hasta ejecutar comandos del sistema y consultar el estado del servidor, esta herramienta nos brinda acceso total a las funciones más esenciales de MySQL sin necesidad de interfaces gráficas.

Dominar este cliente no solo mejora tu productividad, sino que también te acerca a un conocimiento más profundo de cómo funciona MySQL por debajo. Esto es especialmente útil en entornos de servidores donde, por lo general, no contamos con un entorno gráfico y la línea de comandos es la única vía de administración disponible.

Recursos adicionales

Esta entrada está licenciada bajo CC BY 4.0 por el autor.