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
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
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 comandomysql
.
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ón | Descripción |
---|---|
-u usuario | Usuario con el que se conecta |
-p | Solicita contraseña |
-h host | Dirección del servidor (por defecto: localhost) |
-P puerto | Puerto del servidor (por defecto: 3306) |
-D nombre_bd | Conectarse directamente a una base de datos |
--protocol=tcp | Forzar 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 delocalhost
.
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ón | Descripción |
---|---|
-u, --user | Especifica 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, --host | Define el hostname del servidor MySQL al que se desea conectar. |
-P, --port | Puerto TCP/IP utilizado para la conexión (por defecto 3306). |
-D, --database | Selecciona directamente la base de datos al iniciar la sesión. |
-e, --execute | Ejecuta una sentencia SQL directamente desde la línea de comandos. |
-H, --html | Devuelve el resultado en formato HTML (útil para reportes y exportación visual). |
--ssl-mode | Controla el uso de SSL/TLS en la conexión (REQUIRED , DISABLED , VERIFY_CA , etc.). |
--default-character-set | Establece el conjunto de caracteres de la conexión (por ejemplo, utf8mb4 ). |
--column-type-info | Muestra información adicional sobre los tipos de columnas en los resultados. |
--show-warnings | Muestra las advertencias generadas por el servidor tras ejecutar una consulta. |
--silent | Minimiza la salida a lo estrictamente necesario, ideal para scripts automatizados. |
--table | Formatea los resultados en una tabla legible cuando se visualiza en consola. |
--pager | Permite 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
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