Instalación de MySQL en Linux y uso de la línea de comandos
Examinamos como instalar MySQL (o MariaDB) en distintas distribuciones de Linux y como utilizar la interfaz de línea de comandos para practicar SQL sin necesidad de un entorno gráfico.
1. Requisitos previos
-
Un usuario con permisos de sudo en el sistema.
-
Conexión a Internet para descargar paquetes.
-
Terminal si es instalación local o acceso SSH al servidor remoto.
2. Instalación en Debian/Ubuntu
1.- Actualizar repositorios:
sudo apt update
2.- Instalar el servidor:
sudo apt install mysql-server
O, si prefieres MariaDB:
sudo apt install mariadb-server
3.- Iniciar y habilitar el servicio:
sudo systemctl start mysql
sudo systemctl enable mysql
(o *mariadb*
para MariaDB)
4.- Configuración segura con **mysql_secure_installation**
:
sudo mysql_secure_installation
Esta instrucción ejecuta un script interactivo, con estas opciones:
-
Plugin de validación de contraseña (
validate_password
):-
LOW: mínima de 8 caracteres.
-
MEDIUM: 8+ caracteres, con mayúscula, minúscula, dígito y carácter especial.
-
STRONG: 14+ caracteres con los mismos requisitos de MEDIUM.
-
Para activar:
-
Please set the password validation policy level (LOW, MEDIUM, STRONG): MEDIUM
-
Establecer o cambiar contraseña de
**root**
:-
Introduce la contraseña y confírmala.
-
Debe cumplir la política si está habilitada.
-
-
Eliminar usuarios anónimos:
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
-
Deshabilitar login remoto de
**root**
:
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
-
Eliminar base de datos de prueba:
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
-
Recargar privilegios:
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Solución de problemas comunes:
1.- Si tienes problemas al establecer la contraseña, chequea en primer lugar tu nivel de seguridad. Provisionalmente puedes establecerlo en LOW (0):
SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password.policy=0;
2.- Caso específico de Ubuntu y derivados: SET PASSWORD has no significance for user root'@'localhost'
:
Causa: En Ubuntu, el usuario root
suele autenticarse mediante el plugin auth_socket
, lo que impide el uso de contraseña tradicional, ya que se autentica por sistema.
Solución: Cambiar el método de autenticación a mysql_native_password
:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TuNuevaContraseña';
FLUSH PRIVILEGES;
-
mysql_native_password
es compatible con clientes antiguos pero usa SHA1 menos robusto quecaching_sha2_password
. -
Alternativa: ejecutar siempre
sudo mysql
para conectar sin contraseña.
3. Instalación en CentOS/RHEL/Fedora### 3. Instalación en CentOS/RHEL/Fedora
Actualizar repositorios:
sudo dnf update # o yum update en versiones antiguas
Instalar el servidor:
sudo dnf install mysql-server # para MySQL
#sudo dnf install mariadb-server para MariaDB
Iniciar y habilitar servicio:
sudo systemctl start mysqld
sudo systemctl enable mysqld
(o *mariadb*
para MariaDB)
Configurar seguridad:
sudo mysql_secure_installation
4. Uso de la línea de comandos de MySQL
Aunque como programador probablemente uses MySQL desde aplicaciones escritas en PHP, Node.js, Python u otros lenguajes, es fundamental entender que todos estos lenguajes tienen algo en común: utilizan SQL para comunicarse con la base de datos.
Cada lenguaje tiene su propia sintaxis para conectarse y enviar consultas (PDO en PHP, Sequelize en Node.js, SQLAlchemy en Python...), pero al final, todos envían las mismas sentencias SQL que aprenderás aquí.
Por eso es tan valioso practicar primero con la CLI de MySQL: te permite dominar SQL puro, sin las distracciones de frameworks o librerías específicas. Una vez que domines SELECT
, JOIN
, WHERE
en la terminal, podrás aplicar ese conocimiento en cualquier lenguaje de programación.
Acceder como root:
mysql -u root -p #Se solicitará la contraseña de root mysql.
Prompt de MySQL:
mysql>
Comandos básicos:
Mostrar bases de datos:
SHOW DATABASES;
Seleccionar o crear base de datos:
CREATE DATABASE prueba;
USE prueba;
Crear tabla:
CREATE TABLE usuarios ( id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(50), email VARCHAR(100));
Insertar datos:
INSERT INTO usuarios (nombre, email) VALUES ('Ana', 'ana@ejemplo.com');
Consultar registros:
SELECT * FROM usuarios;
Salir:
EXIT;
Tip: Puedes combinar comandos en un solo archivo
.sql
y ejecutarlos con:mysql -u root -p < script.sql
Con esta lección ya dispones de un entorno funcional y sabes cómo empezar a ejecutar comandos SQL directamente en tu servidor. En la siguiente lección veremos tipos de tablas.