Apuntes mysql

“SET PASSWORD has no significance for user 'root'@'localhost'”

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:

  1. 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
  1. Establecer o cambiar contraseña de **root**:

    • Introduce la contraseña y confírmala.

    • Debe cumplir la política si está habilitada.

  1. Eliminar usuarios anónimos:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
  1. Deshabilitar login remoto de **root**:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
  1. Eliminar base de datos de prueba:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
  1. 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 que caching_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.

TOP