- 1 1. Introducción
- 2 2. Operaciones básicas de MySQL (Para principiantes)
- 3 3. Operaciones con bases de datos
- 4 4. Operaciones con tablas
- 5 5. Operaciones de Datos (CRUD)
- 6 6. Gestión de usuarios y configuración de permisos
- 7 7. Comandos útiles de MySQL (para usuarios intermedios)
- 8 8. Solución de problemas de MySQL
- 9 9. [With Tables] Lista de comandos MySQL (Versión de referencia)
1. Introducción
MySQL es una base de datos relacional de código abierto ampliamente utilizada entre los sistemas de gestión de bases de datos (DBMS). Se emplea especialmente en aplicaciones web y sistemas empresariales. Este artículo ofrece una explicación detallada de los comandos básicos de MySQL, estructurada para permitir un aprendizaje fluido desde principiantes hasta usuarios intermedios.
1.1 ¿Qué es MySQL?
MySQL es un software para gestionar bases de datos relacionales (RDB). Los datos se almacenan en formato de tabla y se manipulan mediante SQL (Structured Query Language). MySQL tiene las siguientes características.
- Código abierto y puede ser utilizado de forma gratuita por cualquier persona
- Caracterizado por una operación rápida y ligera
- Compatible con muchos lenguajes de programación (PHP, Python, Java, etc.)
- Soporta la operación de bases de datos a gran escala
1.2 Beneficios de aprender los comandos de MySQL
Para usar MySQL de manera eficiente, es importante comprender los comandos básicos. Los beneficios son los siguientes.
- Gestión eficiente de datos: Al dominar los comandos SQL, la recuperación, actualización y eliminación de datos se pueden realizar rápidamente
- Automatización empresarial: Al utilizar scripts, las operaciones de la base de datos pueden automatizarse
- Manejo fluido de errores: Cuando surgen problemas, se pueden resolver con los comandos SQL adecuados
1.3 Lo que puedes aprender en este artículo
Este artículo ofrece explicaciones detalladas sobre los siguientes temas.
- Operaciones básicas de MySQL (inicio, conexión, operaciones de base de datos)
- Adición, recuperación, actualización y eliminación de datos (operaciones CRUD)
- Gestión de usuarios y configuración de permisos
- Comandos útiles y solución de problemas
A partir de aquí, procederemos con explicaciones detalladas de cada sección en orden. Empecemos con las operaciones básicas de MySQL.
2. Operaciones básicas de MySQL (Para principiantes)
2.1 Inicio y conexión de MySQL
2.1.1 Iniciando MySQL
MySQL funciona como un programa servidor, por lo que primero debe iniciar el servidor. El método de inicio varía según el sistema operativo.
Iniciando en Linux / macOS
En Linux o macOS, puede iniciar MySQL usando el comando systemctl.
sudo systemctl start mysql
Verificación del estado de inicio de MySQL
sudo systemctl status mysql
Si muestra «active (running)», entonces MySQL está funcionando normalmente.
Iniciando en Windows
En Windows, MySQL suele ejecutarse como un servicio, por lo que use el comando net start.
net start mysql
Alternativamente, si usa XAMPP, inicie «MySQL» desde el panel de control de XAMPP.
2.1.2 Conexión a MySQL
Para conectarse a MySQL, use el comando mysql. El comando básico de conexión es el siguiente.
mysql -u username -p
Conexión como usuario root
Por defecto, el usuario root está configurado como administrador. Puede conectarse con el siguiente comando.
mysql -u root -p
Presione Enter para que se le solicite la contraseña. Ingrese la contraseña correcta para iniciar sesión en MySQL.
Conexión a un host específico
Para conectarse a un servidor MySQL remoto, use la opción -h.
mysql -h hostname -u username -p
Por ejemplo, para conectarse al servidor MySQL en 192.168.1.100, use lo siguiente.
mysql -h 192.168.1.100 -u root -p
Conexión especificando el número de puerto
El número de puerto predeterminado para MySQL es 3306, pero si se ha cambiado, puede especificarlo con la opción -P.
mysql -h 192.168.1.100 -P 3307 -u root -p
2.2 Comandos básicos de MySQL
Una vez conectado a MySQL, intentemos ejecutar comandos básicos de operación.
2.2.1 Verificación de la versión de MySQL
Para verificar la versión de MySQL que está utilizando actualmente, ejecute el siguiente comando.
SELECT VERSION();
2.2.2 Verificación de la base de datos actual
Para verificar la base de datos actualmente seleccionada, ejecute el siguiente comando.
SELECT DATABASE();
Si no se selecciona nada, se devuelve NULL.
2.2.3 Mostrar una lista de bases de datos disponibles
Para listar las bases de datos existentes en MySQL, use el siguiente comando.
SHOW DATABASES;
2.3 Errores comunes y soluciones
2.3.1 Error de «Access denied»
Error example:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Solución:
- Verificar si la contraseña es correcta
- Verificar los permisos de
rooty restablecerlos
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
2.3.2 Error: «No se puede conectar al servidor MySQL en ‘localhost’»
Error example:
ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
Solución:
- Verificar si MySQL está en ejecución (
systemctl status mysql) - Reiniciar MySQL
sudo systemctl restart mysql
2.4 Resumen
En esta sección, explicamos cómo iniciar y conectar a MySQL.
3. Operaciones con bases de datos
En MySQL, creas una base de datos (Database) para gestionar datos y organizas la información colocando tablas (Table) dentro de ella. Esta sección ofrece una explicación detallada de las operaciones básicas como crear, seleccionar, listar y eliminar bases de datos.
3.1 Creación de una base de datos
Para crear una base de datos en MySQL, utiliza el comando CREATE DATABASE.
3.1.1 Creación básica de una base de datos
Ejecutar el siguiente comando SQL crea una nueva base de datos my_database.
CREATE DATABASE my_database;
Mensaje de creación exitosa
Query OK, 1 row affected (0.01 sec)
3.1.2 Intento de crear una base de datos que ya existe
Si la base de datos ya existe, se muestra un error como el siguiente.
ERROR 1007 (HY000): Can't create database 'my_database'; database exists
Para evitar este error, es conveniente usar la opción IF NOT EXISTS.
CREATE DATABASE IF NOT EXISTS my_database;
Ejecutar este comando crea la base de datos solo si no existe.
3.2 Listado de bases de datos
Para comprobar las bases de datos en el servidor MySQL actual, utiliza el comando SHOW DATABASES.
SHOW DATABASES;
Salida de ejemplo:
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_database |
| mysql |
| performance_schema |
| sys |
+--------------------+
- Las bases de datos del sistema como
mysqleinformation_schemason necesarias para la gestión de MySQL.
3.3 Selección de una base de datos
En MySQL, necesitas seleccionar la base de datos creada para usarla. Para especificar la base de datos, ejecuta el comando USE.
USE my_database;
Mensaje de éxito
Database changed
Para comprobar la base de datos actualmente seleccionada, utiliza el siguiente comando.
SELECT DATABASE();
Salida de ejemplo:
+------------+
| DATABASE() |
+------------+
| my_database |
+------------+
3.4 Eliminación de una base de datos
Para eliminar una base de datos innecesaria, utiliza el comando DROP DATABASE.
DROP DATABASE my_database;
3.4.1 Precauciones antes de la eliminación
- ¡Cuidado! La eliminación borrará todos los datos.
- Para evitar la eliminación accidental, también puedes añadir
IF EXISTS.
DROP DATABASE IF EXISTS my_database;
Este comando finaliza el proceso sin error incluso si my_database no existe.
3.5 Errores comunes y soluciones
3.5.1 Error: «Acceso denegado para el usuario»
Error example:
ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'my_database'
Solución
- Otorgar permisos usando el comando
GRANT
GRANT ALL PRIVILEGES ON my_database.* TO 'user_name'@'localhost';
FLUSH PRIVILEGES;
3.5.2 Error: «No se puede eliminar la base de datos»
Error example:
ERROR 1010 (HY000): Error dropping database (can't rmdir './my_database', errno: 39)
Solución
- Reiniciar MySQL
sudo systemctl restart mysql
- Eliminar todas las tablas en
my_databasey luego ejecutarDROP DATABASE.
3.6 Resumen
En esta sección, aprendimos sobre la creación, selección, listado y eliminación de bases de datos.
4. Operaciones con tablas
Después de crear la base de datos, necesitas crear tablas (Table) dentro de ella para organizar los datos. Una tabla es como una hoja de cálculo para almacenar datos, compuesta por columnas (campos) y filas (registros).
En esta sección, explicaremos en detalle las operaciones básicas como crear, verificar, listar y eliminar tablas.
4.1 Creación de Tablas
Para crear una tabla, utiliza el comando CREATE TABLE. Ejecutar el siguiente SQL creará una tabla llamada users.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.1.1 Explicación de Cada Elemento al Crear una Tabla
id INT AUTO_INCREMENT PRIMARY KEY- La columna
ides de tipo entero (INT), se incrementa automáticamente (AUTO_INCREMENT) y se establece como la clave primaria (PRIMARY KEY). name VARCHAR(50) NOT NULL- La columna
namees una cadena de hasta 50 caracteres (VARCHAR) y es obligatoria debido aNOT NULL. email VARCHAR(100) UNIQUE NOT NULL- La columna
emailes una cadena de hasta 100 caracteres, y debido a la restricciónUNIQUE, no se pueden registrar direcciones de correo duplicadas. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP- La columna
created_atestablece automáticamente la fecha y hora actuales como valor por defecto.
Mensaje de Éxito
Query OK, 0 rows affected (0.02 sec)
4.2 Verificación de la Estructura de la Tabla
Para verificar la estructura de la tabla creada, utiliza DESC o SHOW COLUMNS.
DESC users;
o
SHOW COLUMNS FROM users;
Ejemplo de salida:
+------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| email | varchar(100) | NO | UNI | NULL | |
| created_at | timestamp | YES | | CURRENT_TIMESTAMP | |
+------------+--------------+------+-----+-------------------+----------------+
4.3 Listado de Tablas
Para verificar la lista de tablas existentes en la base de datos actual, ejecuta el comando SHOW TABLES.
SHOW TABLES;
Ejemplo de salida:
+------------------+
| Tables_in_mydb |
+------------------+
| users |
| products |
| orders |
+------------------+
4.4 Eliminación de Tablas
Para eliminar una tabla innecesaria, utiliza el comando DROP TABLE.
DROP TABLE users;
4.4.1 Precauciones al Eliminar Tablas
- ¡Ten cuidado, ya que la eliminación eliminará completamente los datos!
- Para evitar eliminaciones accidentales, agregar
IF EXISTSpuede prevenir errores.
DROP TABLE IF EXISTS users;
Mensaje de Éxito
Query OK, 0 rows affected (0.01 sec)
4.5 Restablecimiento de Datos de la Tabla (Eliminar Todo)
Si deseas eliminar solo los datos dentro de la tabla manteniendo intacta la estructura de la tabla, utiliza TRUNCATE TABLE.
TRUNCATE TABLE users;
Diferencia con DROP TABLE
DROP TABLEelimina la tabla en sí.TRUNCATE TABLEelimina solo los datos y conserva la estructura de la tabla.
4.6 Errores Comunes y Soluciones
4.6.1 Error «Tabla ya existe»
Error example:
ERROR 1050 (42S01): Table 'users' already exists
Solución
- Verificar si existen tablas
SHOW TABLES;
- Crear con
IF NOT EXISTS
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.6.2 Error «Tabla desconocida»
Error example:
ERROR 1051 (42S02): Unknown table 'users'
Solución
- Use
SHOW TABLES;para verificar si la tabla objetivo existe - Si no existe, añada
IF EXISTS
DROP TABLE IF EXISTS users;
4.7 Resumen
En esta sección, explicamos las operaciones básicas para crear, verificar y eliminar tablas en MySQL.
5. Operaciones de Datos (CRUD)
Después de crear la base de datos y las tablas, es importante agregar, recuperar, actualizar y eliminar datos correctamente. En MySQL, las bases de las operaciones de datos son las cuatro operaciones llamadas CRUD (Crear, Leer, Actualizar, Eliminar).
En esta sección, explicaremos en detalle los métodos para agregar datos (INSERT), recuperar datos (SELECT), actualizar datos (UPDATE) y eliminar datos (DELETE).
5.1 Agregar Datos (INSERT)
Para agregar nuevos datos a una tabla, use el comando INSERT INTO.
5.1.1 Agregar Datos Básicos
Por ejemplo, para agregar un nuevo usuario a la tabla users, ejecute el siguiente SQL.
INSERT INTO users (name, email) VALUES ('Tanaka Taro', 'tanaka@example.com');
Si la operación es exitosa, se mostrará el siguiente mensaje.
Query OK, 1 row affected (0.01 sec)
5.1.2 Agregar Múltiples Registros a la Vez
También es posible agregar múltiples registros a la vez.
INSERT INTO users (name, email) VALUES
('Sato Hanako', 'sato@example.com'),
('Suzuki Ichiro', 'suzuki@example.com'),
('Takahashi Mayu', 'takahashi@example.com');
5.2 Recuperar Datos (SELECT)
Para recuperar datos de una tabla, use la sentencia SELECT.
5.2.1 Recuperar Todos los Datos
Para recuperar todos los datos de la tabla users, ejecute el siguiente SQL.
SELECT * FROM users;
Salida de ejemplo:
+----+------------+------------------+---------------------+
| id | name | email | created_at |
+----+------------+------------------+---------------------+
| 1 | Tanaka Taro| tanaka@example.com | 2024-02-01 10:00:00 |
| 2 | Sato Hanako| sato@example.com | 2024-02-01 10:01:00 |
| 3 | Suzuki Ichiro | suzuki@example.com | 2024-02-01 10:02:00 |
+----+------------+------------------+---------------------+
5.2.2 Recuperar Solo Columnas Específicas
Si desea mostrar solo columnas específicas (campos), especifique los nombres de las columnas.
SELECT name, email FROM users;
5.2.3 Recuperar Datos con Condiciones
Usando la cláusula WHERE, puede recuperar solo los datos que coincidan con condiciones específicas.
SELECT * FROM users WHERE name = 'Sato Hanako';
5.2.4 Ordenar (ORDER BY)
Para ordenar los datos en orden ascendente o descendente, use ORDER BY.Orden Ascendente (Pequeño Primero)
SELECT * FROM users ORDER BY id ASC;
Orden Descendente (Mayor Primero)
SELECT * FROM users ORDER BY id DESC;
5.2.5 Limitar el Número de Registros (LIMIT)
Para recuperar solo los primeros 2 registros:
SELECT * FROM users LIMIT 2;
5.3 Actualizar Datos (UPDATE)
Para actualizar datos en una tabla, use la sentencia UPDATE.
5.3.1 Actualizar Datos Específicos
Por ejemplo, para cambiar la dirección de correo electrónico del usuario con id = 2, ejecute el siguiente SQL.
UPDATE users SET email = 'sato_hanako@example.com' WHERE id = 2;
5.3.2 Actualizar Múltiples Columnas Simultáneamente
UPDATE users SET name = 'Sato Misaki', email = 'misaki@example.com' WHERE id = 2;
5.3.3 Todos los Registros Se Actualizarán Si No Se Especifica una Condición
¡Precaución!Si no especifica la cláusula WHERE, todos los datos se actualizarán.
UPDATE users SET email = 'test@example.com'; -- ⚠️ All users' emails will be changed
5.4 Eliminar Datos (DELETE)
Para eliminar datos innecesarios, use la sentencia DELETE FROM.
5.4.1 Eliminar Datos Específicos
Para eliminar el usuario con id = 3, ejecute el siguiente SQL.
DELETE FROM users WHERE id = 3;
5.4.2 Eliminar Todos los Datos
¡Precaución!Si omite la cláusula WHERE, todos los datos de la tabla se eliminarán.
DELETE FROM users; -- ⚠️ Deletes all data (dangerous!)
Si desea eliminar todo, se recomienda TRUNCATE TABLE
TRUNCATE TABLE users;
DELETE realiza la eliminación fila por fila, pero TRUNCATE TABLE reinicia la tabla, por lo que es más rápido.
5.5 Resumen
En esta sección aprendimos las operaciones básicas para agregar datos (INSERT), recuperar datos (SELECT), actualizar datos (UPDATE) y eliminar datos (DELETE).
6. Gestión de usuarios y configuración de permisos
En MySQL, para garantizar la seguridad de la base de datos, es importante establecer permisos adecuados para cada usuario. Especialmente en proyectos que involucran a varios desarrolladores o bases de datos en entornos de producción, la gestión de usuarios es esencial.
En esta sección explicaremos en detalle la gestión de usuarios de MySQL y la configuración de permisos.
6.1 Gestión de usuarios de MySQL
La información de los usuarios en MySQL se almacena en la tabla user de la base de datos mysql. Como fundamentos de la gestión de usuarios, aprendamos los métodos para crear, listar y eliminar usuarios.
6.1.1 Creación de usuarios
Para crear un nuevo usuario, use el comando CREATE USER.
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';
El significado de este comando:
- Crea un usuario llamado
new_user localhost(permite solo conexiones locales)- Establece
password123como contraseña
Creación de un usuario para acceso remoto
Para acceder a MySQL desde fuera del servidor, especifique '%'.
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'securepassword';
% significa permite el acceso desde todas las direcciones IP.
6.2 Listado de usuarios
Para comprobar la lista de usuarios existentes, consulte la tabla mysql.user.
SELECT user, host FROM mysql.user;
Ejemplo de salida:
+-----------+-----------+
| user | host |
+-----------+-----------+
| root | localhost |
| new_user | localhost |
| remote_user | % |
+-----------+-----------+
En esta tabla, puede verificar el user (nombre de usuario) y el host (host con el que se puede conectar) de cada usuario.
6.3 Eliminación de usuarios
Para eliminar usuarios innecesarios, use el comando DROP USER.
DROP USER 'new_user'@'localhost';
Notas después de la eliminación
- Eliminar un usuario también elimina los permisos de ese usuario.
- Si se elimina por error, debe crearlo nuevamente con
CREATE USER.
6.4 Gestión de permisos
En MySQL, puede establecer permisos para cada usuario para limitar el alcance de las operaciones.
6.4.1 Concesión de permisos (GRANT)
Para conceder permisos específicos a un usuario, use el comando GRANT.
GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';
Este comando concede todos los permisos sobre my_database a new_user.
Concesión solo de permisos específicos
GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'new_user'@'localhost';
Este comando permite a new_user solo recuperación de datos (SELECT), inserción (INSERT) y actualización (UPDATE).
6.5 Verificación de permisos
Para comprobar los permisos de un usuario, use el comando SHOW GRANTS.
SHOW GRANTS FOR 'new_user'@'localhost';
Ejemplo de salida:
+------------------------------------------------------------+
| Grants for new_user@localhost |
+------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'new_user'@'localhost' |
+------------------------------------------------------------+
6.6 Revocación de permisos (REVOKE)
Para revocar permisos específicos de un usuario, use el comando REVOKE.
REVOKE INSERT, UPDATE ON my_database.* FROM 'new_user'@'localhost';
Al ejecutar este comando, new_user pierde los permisos de INSERT (agregar) y UPDATE (actualizar).
6.7 Cambio de contraseñas
6.7.1 Cambio de la contraseña de un usuario
Para cambiar la contraseña de un usuario de MySQL, use ALTER USER.
ALTER USER 'new_user'@'localhost' IDENTIFIED BY 'newpassword123';
6.7.2 Cambio de la contraseña del usuario root
Para cambiar la contraseña del administrador (root), ejecute el siguiente comando.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'strongpassword';
Después de cambiar la contraseña, ejecute FLUSH PRIVILEGES para aplicar los permisos.
FLUSH PRIVILEGES;
6.8 Errores comunes y soluciones
6.8.1 Error «Acceso denegado»
Ejemplo de error:
ERROR 1045 (28000): Access denied for user 'new_user'@'localhost' (using password: YES)
Solución
- Verificar los permisos con
SHOW GRANTS
SHOW GRANTS FOR 'new_user'@'localhost';
- Reasignar los permisos
GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;
6.8.2 Error «El usuario ya existe»
Ejemplo de error:
ERROR 1396 (HY000): Operation CREATE USER failed for 'new_user'@'localhost'
Solución
- Si ya existe, elimínelo y recreelo
DROP USER 'new_user'@'localhost';
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123';
6.9 Resumen
En esta sección, explicamos en detalle la gestión de usuarios y la configuración de permisos de MySQL.
Puntos especialmente importantes:
- Crear usuarios con
CREATE USER - Conceder permisos con
GRANT - Verificar permisos con
SHOW GRANTS - Cambiar contraseñas con
ALTER USER

7. Comandos útiles de MySQL (para usuarios intermedios)
MySQL ofrece muchos comandos útiles además de las operaciones básicas de datos (CRUD) para apoyar la gestión y optimización de bases de datos. En esta sección, presentamos comandos de MySQL para usuarios intermedios, como respaldo y restauración de bases de datos, optimización del rendimiento y verificación de información del sistema.
7.1 Respaldo de bases de datos
Para prevenir la pérdida de datos, MySQL permite respaldo (exportación) y restauración (importación).
7.1.1 Respaldo con mysqldump
Con el comando mysqldump, puedes respaldar una base de datos específica.
mysqldump -u root -p my_database > my_database_backup.sql
Descripción de opciones
-u root→ Ejecutar como usuario root-p→ Ingresar contraseñamy_database→ Nombre de la base de datos a respaldar>→ Archivo de salida (por ejemplo,my_database_backup.sql)
7.1.2 Respaldar todas las bases de datos
Para respaldar todas las bases de datos a la vez, usa la opción --all-databases.
mysqldump -u root -p --all-databases > all_databases_backup.sql
7.2 Restauración de bases de datos
Para restaurar datos respaldados en MySQL, usa el comando mysql.
7.2.1 Restaurar una sola base de datos
mysql -u root -p my_database < my_database_backup.sql
7.2.2 Restaurar todas las bases de datos
mysql -u root -p < all_databases_backup.sql
7.3 Verificar procesos en ejecución
Para comprobar el estado de carga del servidor MySQL o qué consultas están en ejecución, usa SHOW PROCESSLIST.
SHOW PROCESSLIST;
Ejemplo de salida:
+----+------+-----------+----+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+----------+------------------+
| 1 | root | localhost | my_database | Query | 10 | Sending data | SELECT * FROM users |
+----+------+-----------+----+---------+------+----------+------------------+
7.3.1 Mostrar todos los procesos en ejecución en detalle
SHOW FULL PROCESSLIST;
7.4 Optimización de consultas
7.4.1 Verificar el plan de ejecución (EXPLAIN)
Con el comando EXPLAIN, puedes verificar el plan de ejecución de la consulta e identificar problemas de rendimiento.
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
Ejemplo de salida:
+----+-------------+-------+------+---------------+------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+-------+------+-------+
| 1 | SIMPLE | users | ref | email_index | email| 62 | const | 1 | |
+----+-------------+-------+------+---------------+------+---------+-------+------+-------+
possible_keys: Índices disponibleskey: Índice realmente usadorows: Número de filas buscadas (cuanto menor, más rápido)
7.5 Verificar índices
A medida que aumenta el volumen de datos, las búsquedas pueden ralentizarse. Por lo tanto, es importante configurar los índices adecuadamente.
7.5.1 Verificación de índices actuales
Para obtener una lista de índices de tabla, use SHOW INDEX.
SHOW INDEX FROM users;
Ejemplo de salida:
+-------+------------+----------+--------------+-----------------+-----------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Index_type|
+-------+------------+----------+--------------+-----------------+-----------+
| users | 0 | PRIMARY | 1 | id | BTREE |
| users | 1 | email | 1 | email | BTREE |
+-------+------------+----------+--------------+-----------------+-----------+
7.6 Verificación del estado de la base de datos
7.6.1 Verificación de la versión de MySQL
Para comprobar la versión actual de MySQL, ejecute el siguiente comando.
SELECT VERSION();
Ejemplo de salida:
+-----------+
| VERSION() |
+-----------+
| 8.0.32 |
+-----------+
7.6.2 Verificación del tamaño de la base de datos
Para comprobar el tamaño de cada base de datos, ejecute la siguiente consulta.
SELECT table_schema AS "Database",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)"
FROM information_schema.tables
GROUP BY table_schema;
Ejemplo de salida:
+---------------+-----------+
| Database | Size (MB) |
+---------------+-----------+
| my_database | 45.23 |
| mysql | 2.10 |
+---------------+-----------+
7.7 Resumen
En esta sección, presentamos comandos útiles de MySQL para usuarios intermedios.
Los más importantes son:
- Copia de seguridad y restauración de la base de datos (mysqldump, mysql)
- Verificación de procesos en ejecución (SHOW PROCESSLIST)
- Optimización de consultas (EXPLAIN)
- Gestión de índices (SHOW INDEX)
- Verificación del estado de la base de datos (consultas al esquema de información)
8. Solución de problemas de MySQL
Al usar MySQL, puede encontrarse con diversos problemas como errores de conexión o problemas de rendimiento. En esta sección, presentamos errores comunes de MySQL y sus soluciones.
8.1 Si no puede conectarse a MySQL
8.1.1 Error «Acceso denegado para el usuario»
Ejemplo de error:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Causas
- Contraseña incorrecta
- El usuario no tiene los permisos adecuados
- Problema con el método de autenticación de MySQL
Soluciones
- Verificar si la contraseña es correcta
mysql -u root -p
- Verificar los permisos del usuario actual
SELECT user, host FROM mysql.user;
- Restablecer la contraseña
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;
8.1.2 Error «No se puede conectar al servidor MySQL en ‘localhost’»
Ejemplo de error:
ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
Causas
- El servidor MySQL está detenido
- El puerto ha sido cambiado
- Influencia del firewall
Soluciones
- Verificar si MySQL está en ejecución
sudo systemctl status mysql
- Reiniciar MySQL
sudo systemctl restart mysql
- Especificar el puerto de conexión
mysql -u root -p --port=3306
- Verificar el firewall
sudo ufw allow 3306/tcp
8.2 Problemas de base de datos o tabla
8.2.1 Error «Base de datos desconocida»
Ejemplo de error:
ERROR 1049 (42000): Unknown database 'my_database'
Causas
- La base de datos no existe
- Error tipográfico en el nombre de la base de datos
Soluciones
- Verificar la lista de bases de datos
SHOW DATABASES;
- Crear la base de datos
CREATE DATABASE my_database;
8.2.2 Error «La tabla no existe»
Ejemplo de error:
ERROR 1146 (42S02): Table 'my_database.users' doesn't exist
Causas
- La tabla no existe
- Error tipográfico en el nombre de la tabla
Soluciones
- Verificar la lista de tablas
SHOW TABLES;
- Crear la tabla
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
8.2.3 Error «La tabla está marcada como dañada»
Error example:
Table 'users' is marked as crashed and should be repaired
Causas
- El servidor se bloqueó anormalmente
- Los datos están corruptos
Soluciones
- Reparar la tabla
REPAIR TABLE users;
- Verificar toda la base de datos
CHECK TABLE users;
8.3 Problemas de rendimiento
8.3.1 Error de «Demasiadas conexiones»
Error example:
ERROR 1040 (HY000): Too many connections
Causas
- Se excedió el número máximo de conexiones
Soluciones
- Verificar el número actual de conexiones
SHOW STATUS LIKE 'Threads_connected';
- Aumentar el número máximo de conexiones
SET GLOBAL max_connections = 200;
8.3.2 Consultas lentas
Causas
- No se han establecido índices
- Consultas ineficientes
Soluciones
- Verificar el plan de ejecución
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';
- Crear un índice
CREATE INDEX email_index ON users(email);
8.4 Resumen
En esta sección, presentamos los problemas comunes que ocurren en MySQL y sus soluciones.
- Errores de conexión → Verificar la contraseña y los permisos de usuario
- Problemas de base de datos y tabla → Verificar con
SHOW DATABASES/SHOW TABLES - Problemas de rendimiento → Utilizar
EXPLAINeINDEX
9. [With Tables] Lista de comandos MySQL (Versión de referencia)
En esta sección, resumimos los comandos clave de MySQL introducidos hasta ahora en un formato de tabla. Organizados por categoría, puedes localizar rápidamente los comandos que necesitas.
9.1 Comandos de operación básica
Command | Descripción |
|---|---|
SELECT VERSION(); | Check MySQL version |
SHOW DATABASES; | Mostrar lista de bases de datos |
SHOW TABLES; | Mostrar tablas en la base de datos actual |
SELECT DATABASE(); | Ver la base de datos actualmente utilizada |
USE my_database; | Seleccionar la base de datos especificada |
DESC users; | Mostrar estructura de tabla |
9.2 Operaciones de base de datos
Command | Descripción |
|---|---|
CREATE DATABASE my_database; | Crear una nueva base de datos |
DROP DATABASE my_database; | Eliminar la base de datos |
SHOW CREATE DATABASE my_database; | Mostrar el SQL de creación de la base de datos |
9.3 Operaciones de tabla
Command | Descripción |
|---|---|
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50)); | Crear una tabla |
DROP TABLE users; | Eliminar la tabla |
ALTER TABLE users ADD COLUMN email VARCHAR(100); | Agregar una nueva columna |
ALTER TABLE users DROP COLUMN email; | Eliminar la columna especificada |
SHOW CREATE TABLE users; | Mostrar el SQL de creación de la tabla |
9.4 Operaciones de datos (CRUD)
Command | Descripción |
|---|---|
INSERT INTO users (name) VALUES ('Tanaka'); | Add data |
SELECT * FROM users; | Recuperar todos los datos |
SELECT name FROM users WHERE id = 1; | Recuperar datos con condiciones |
UPDATE users SET name = 'Sato' WHERE id = 1; | Actualizar datos |
DELETE FROM users WHERE id = 1; | Delete data |
TRUNCATE TABLE users; | Eliminar todos los datos en la tabla |
9.5 Gestión de usuarios y permisos
Command | Descripción |
|---|---|
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password123'; | Crear un usuario |
DROP USER 'new_user'@'localhost'; | Eliminar un usuario |
GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost'; | Grant permissions to a user |
REVOKE INSERT ON my_database.* FROM 'new_user'@'localhost'; | Revocar permisos especificados |
SHOW GRANTS FOR 'new_user'@'localhost'; | Verificar permisos de usuario |
9.6 Copia de seguridad y restauración
Command | Descripción |
|---|---|
mysqldump -u root -p my_database > backup.sql | Respaldar la base de datos |
mysql -u root -p my_database < backup.sql | Restaurar desde copia de seguridad |
9.7 Rendimiento y optimización
Command | Descripción |
|---|---|
SHOW PROCESSLIST; | Mostrar consultas en ejecución |
SHOW STATUS LIKE 'Threads_connected'; | Verificar el número de conexiones actuales |
SHOW INDEX FROM users; | Mostrar lista de índices |
CREATE INDEX idx_name ON users(name); | Crear un índice |
ANALYZE TABLE users; | Actualizar estadísticas de la tabla |
OPTIMIZE TABLE users; | Optimizar la tabla |
9.8 Solución de problemas
Command | Descripción |
|---|---|
SET GLOBAL max_connections = 200; | Cambiar conexiones máximas |
REPAIR TABLE users; | Reparar una tabla caída |
FLUSH PRIVILEGES; | Aplicar cambios de permiso |
9.9 Resumen
En esta sección, hemos compilado los comandos importantes de MySQL en un formato de tabla. En particular, hemos organizado los comandos comúnmente usados en la práctica—como operaciones de datos (CRUD), copias de seguridad, gestión de rendimiento y solución de problemas—para que puedas consultarlos inmediatamente.


