Tema
Clientes de MySQL
El servidor MySQL no tiene ventanas ni botones: necesitas un cliente para hablar con él. En esta lección conocerás los cuatro clientes más usados (la terminal mysql, phpMyAdmin, MySQL Workbench y DBeaver), además de extensiones para VS Code, y sabrás cuál conviene en cada situación.
Concepto
Un cliente es como un control remoto para el servidor: todos mandan las mismas órdenes (SQL), pero unos tienen botones grandes y otros son más rápidos para quien ya se sabe los comandos.
| Cliente | Tipo | Ideal para |
|---|---|---|
mysql (CLI) | Terminal | Servidores, scripts, importar/exportar, rapidez |
| phpMyAdmin | Web | Hosting compartido, tareas rápidas visuales |
| MySQL Workbench | Escritorio (oficial) | Diseño de modelos E-R, administración |
| DBeaver | Escritorio (multi-BD) | Trabajar con MySQL, PostgreSQL, SQLite... en una sola app |
| VS Code + extensión | Editor | Consultar sin salir de tu editor |
El cliente de terminal mysql
Conectarse
bash
# Forma completa
mysql -h 127.0.0.1 -P 3306 -u tienda_app -p tienda
# -h host -P puerto -u usuario -p pide contraseña último argumento: base de datosNo escribas la contraseña en el comando
mysql -u root -pMiClave funciona, pero la contraseña queda en el historial de la terminal y visible en la lista de procesos. Usa -p solo y escríbela cuando te la pida, o un archivo de opciones (abajo).
Comandos útiles dentro del cliente
sql
SHOW DATABASES; -- bases de datos
USE tienda; -- cambiar de base de datos
SELECT DATABASE(); -- ¿en cuál estoy?
SHOW TABLES; -- tablas de la BD actual
DESCRIBE productos; -- columnas de una tabla (o: DESC productos;)
SHOW CREATE TABLE productos\G -- el CREATE completo, en formato vertical
SHOW PROCESSLIST; -- conexiones y consultas en curso
SHOW WARNINGS; -- avisos de la última instrucción
STATUS; -- info de la conexión (versión, charset, usuario)Comandos propios del cliente (no son SQL):
| Comando | Hace |
|---|---|
\G al final | Muestra el resultado en vertical (ideal para filas con muchas columnas) |
\c | Cancela la instrucción que estás escribiendo |
SOURCE archivo.sql o \. archivo.sql | Ejecuta un script |
\! comando | Ejecuta un comando del sistema (Linux/macOS) |
pager less -S | Pagina resultados largos (Linux/macOS) |
tee salida.txt | Guarda todo lo que ves en un archivo |
EXIT, QUIT o \q | Salir |
Ejemplo del formato vertical:
sql
SELECT * FROM clientes WHERE id = 1\Gtxt
*************************** 1. row ***************************
id: 1
nombre: Ana López
email: ana@correo.com
ciudad: Ciudad de México
fecha_registro: 2024-01-15
1 row in set (0.00 sec)Ejecutar sin entrar al cliente
bash
# Una consulta suelta
mysql -u root -p tienda -e "SELECT COUNT(*) FROM productos;"
# Ejecutar un script
mysql -u root -p tienda < 01-esquema.sql
# Exportar un resultado a TSV (separado por tabuladores)
mysql -u root -p tienda -B -e "SELECT id, nombre, precio FROM productos" > productos.tsvArchivo de opciones: conectarte sin escribir todo
En Linux/macOS crea ~/.my.cnf (en Windows, %APPDATA%\MySQL\.my.cnf o C:\my.cnf):
ini
[client]
user=tienda_app
password=app_secreto
host=127.0.0.1
port=3306
[mysql]
database=tienda
prompt=\u@\h [\d]>\_bash
chmod 600 ~/.my.cnf # que solo tú puedas leerlo
mysql # ¡entra directo!El prompt muestra usuario, host y base de datos actual (tienda_app@127.0.0.1 [tienda]>), lo que evita ejecutar algo en la base equivocada.
Para scripts de respaldo es mejor mysql_config_editor, que guarda las credenciales cifradas:
bash
mysql_config_editor set --login-path=respaldos --host=localhost --user=backup --password
mysql --login-path=respaldosphpMyAdmin
Aplicación web escrita en PHP. Viene con XAMPP y con casi todos los hostings (cPanel → phpMyAdmin).
txt
┌──────────────────────────────────────────────────────────────┐
│ phpMyAdmin │
├────────────┬─────────────────────────────────────────────────┤
│ ▸ tienda │ [Estructura] [SQL] [Buscar] [Exportar] [Importar]│
│ clientes │ │
│ pedidos │ Tabla Acción Filas │
│ productos│ clientes Examinar Estructura… 5 │
│ ▸ mysql │ productos Examinar Estructura… 8 │
└────────────┴─────────────────────────────────────────────────┘Lo que harás más seguido:
| Pestaña | Para qué |
|---|---|
| Examinar | Ver y editar filas como en una hoja de cálculo |
| Estructura | Ver columnas, índices; agregar o modificar columnas |
| SQL | Escribir y ejecutar consultas |
| Exportar | Descargar un respaldo .sql (rápido o personalizado) |
| Importar | Subir un .sql (límite según upload_max_filesize de PHP) |
| Operaciones | Renombrar, copiar tablas, cambiar collation |
| Cuentas de usuario | Crear usuarios y permisos (si tienes privilegios) |
phpMyAdmin en producción
Un phpMyAdmin expuesto en tusitio.com/phpmyadmin es objetivo constante de ataques de fuerza bruta. En un VPS, no lo instales o protégelo (acceso solo por VPN o túnel SSH, autenticación HTTP adicional, URL no obvia). En hosting compartido, accede siempre desde cPanel.
MySQL Workbench
Herramienta oficial y gratuita de Oracle para Windows, macOS y Linux.
Funciones destacadas:
- Editor SQL con autocompletado, varias pestañas y resultados editables.
- Modelado (EER Diagrams): dibujas tablas y relaciones y genera el SQL (Forward Engineer), o genera el diagrama de una BD existente (Reverse Engineer). Perfecto para la lección de diseño E-R.
- Administración: estado del servidor, usuarios, variables, logs.
- Data Export/Import: respaldos con interfaz gráfica.
- Visual Explain: el plan de
EXPLAINcomo diagrama.
Conexión nueva: clic en + junto a MySQL Connections → nombre, host 127.0.0.1, puerto 3306, usuario → Test Connection.
Safe Updates
Workbench trae activado el modo safe updates: bloquea UPDATE y DELETE sin WHERE sobre una clave. Es una protección excelente; si de verdad necesitas desactivarla temporalmente: SET SQL_SAFE_UPDATES = 0;.
Conectarse a un servidor remoto por túnel SSH (sin abrir el puerto 3306 a internet): en la conexión elige Standard TCP/IP over SSH, con el host y usuario SSH del servidor, y como MySQL Hostname 127.0.0.1.
DBeaver
Cliente universal y gratuito (Community Edition) que funciona con MySQL, MariaDB, PostgreSQL, SQLite, SQL Server, Oracle y más. Si trabajas con varios motores, es la mejor opción.
- Descarga desde
dbeaver.io→ New Database Connection → MySQL. La primera vez descarga el driver automáticamente. - Editor SQL con autocompletado;
Ctrl + Enterejecuta la instrucción bajo el cursor. - Pestaña ER Diagram de cualquier base de datos.
- Exportar resultados a CSV, Excel, JSON, SQL
INSERT. - Comparar esquemas y migrar datos entre motores.
- Túneles SSH en la pestaña SSH de la conexión.
Public Key Retrieval
Con MySQL 8 a veces DBeaver muestra Public Key Retrieval is not allowed. En Driver properties de la conexión pon allowPublicKeyRetrieval = true (solo para conexiones locales o por túnel) o usa SSL.
VS Code
Extensiones populares:
| Extensión | Destaca por |
|---|---|
| SQLTools + driver MySQL | Ligera, ejecutar consultas y ver resultados |
| Database Client (Weijan Chen) | Explorador de tablas, edición, exportación |
| MySQL Shell for VS Code (Oracle) | Integración oficial con MySQL Shell |
Ventaja: tus scripts .sql viven en el repositorio del proyecto y los ejecutas sin cambiar de ventana.
¿Cuál uso y cuándo?
| Situación | Cliente recomendado |
|---|---|
| Servidor Linux por SSH | mysql CLI |
| Hosting compartido | phpMyAdmin (desde cPanel) |
| Diseñar el modelo de una BD nueva | MySQL Workbench o DBeaver (diagramas) |
| Trabajo diario de desarrollo | DBeaver, Workbench o VS Code |
| Importar un respaldo de 2 GB | mysql CLI (phpMyAdmin tiene límites de subida y tiempo) |
| Explicarle datos a un cliente | phpMyAdmin o DBeaver (más visual) |
Buena práctica
Aunque uses herramientas gráficas, aprende el cliente de terminal: en un servidor de producción o en una emergencia a las 2 a. m., será lo único disponible.
Ejercicios
- Conéctate con el cliente
mysqla tu basetienday muestra la estructura depedidosen formato vertical. - Sin entrar al cliente, exporta a un archivo
clientes.tsvel nombre y email de todos los clientes. - Crea un archivo de opciones con un
promptque muestre la base de datos actual. - Instala DBeaver o Workbench, conéctate a
tienday genera el diagrama E-R.
Ver solución
sql
-- 1
USE tienda;
SHOW CREATE TABLE pedidos\Gbash
# 2
mysql -u root -p tienda -B -e "SELECT nombre, email FROM clientes" > clientes.tsvini
# 3 (~/.my.cnf)
[mysql]
prompt=\u@\h [\d]>\_- En DBeaver: clic derecho sobre la base
tienda→ View Diagram. En Workbench: Database → Reverse Engineer... → seleccionatienda.
Resumen
- El cliente
mysqles esencial:-h,-P,-u,-p,\G,SOURCEy-e. - Guarda credenciales en
~/.my.cnf(con permisos 600) o conmysql_config_editor, nunca en el comando. - phpMyAdmin es práctico en hosting, pero no lo dejes expuesto en un VPS.
- Workbench destaca en modelado; DBeaver es el cliente universal para varios motores.
- Para archivos grandes y servidores remotos, la terminal (y los túneles SSH) son la opción.