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