🔧 Paso 1: Actualiza el sistema

Abre una terminal y ejecuta:

sudo apt update
sudo apt upgrade -y

📥 Paso 2: Instala el servidor de MySQL

sudo apt install mysql-server -y

Esto instalará el servidor de MySQL y las dependencias necesarias.


✅ Paso 3: Verifica que MySQL esté corriendo

sudo systemctl status mysql

Si está activo (active), está funcionando. Si no, inicia el servicio con:

sudo systemctl start mysql

🔐 Paso 4: Asegura la instalación (opcional pero recomendado)

Ejecuta el siguiente script para establecer una configuración segura:

sudo mysql_secure_installation

Durante el proceso:

  • Puedes establecer una contraseña para el usuario root (si no se hizo).
  • Elige el nivel de validación de contraseñas (puedes usar bajo, medio o fuerte).
  • Elimina usuarios anónimos.
  • Desactiva el acceso remoto del usuario root (por seguridad).
  • Elimina la base de datos de prueba.
  • Recarga los privilegios.

🧑‍💻 Paso 5: Accede al cliente de MySQL

sudo mysql

Estás dentro del CLI de MySQL como usuario root (modo administrador).


📝 Paso 6 (Opcional): Crear usuario y base de datos

Dentro del cliente de MySQL:

CREATE DATABASE mibasededatos;

CREATE USER 'miusuario'@'localhost' IDENTIFIED BY 'miclavefuerte';

GRANT ALL PRIVILEGES ON mibasededatos.* TO 'miusuario'@'localhost';

FLUSH PRIVILEGES;

EXIT;

7: Probar conexión con nuevo usuario

mysql -u miusuario -p

Te pedirá la contraseña. Si ingresas, ¡todo está listo!

¿Qué son los Plugins de Autenticación en MySQL?

Cuando intentas conectar a un servidor MySQL, el servidor necesita verificar tu identidad. Los plugins de autenticación son los métodos que MySQL utiliza para realizar esta verificación. Dos de los plugins más comunes son auth_socket y mysql_native_password.

1. auth_socket: Autenticación basada en el Socket Unix (Común en Conexiones Locales)

  • ¿Cómo funciona? Cuando el plugin auth_socket está activo para un usuario (como root en localhost), MySQL confía en el sistema operativo para verificar la identidad del usuario que está intentando conectar. Básicamente, si el proceso que intenta conectarse se está ejecutando con el mismo UID (User ID) que el usuario del sistema operativo que está intentando acceder a MySQL, la conexión se permite sin necesidad de una contraseña de MySQL.
  • ¿Cuándo se usa? Es común para el usuario root en instalaciones locales de MySQL en sistemas Unix/Linux. Permite una administración más sencilla desde la línea de comandos utilizando sudo sin tener que recordar o ingresar contraseñas de MySQL.
  • ¿Cómo lo identifico? Al ejecutar la consulta:
    SQL
SELECT User, Host, plugin FROM mysql.user WHERE User = 'root' AND Host = 'localhost';
  •  Si la columna plugin muestra auth_socket, este método está activo.
  • ¿Cómo conectar con auth_socket? Generalmente, puedes conectar desde la línea de comandos sin especificar una contraseña (o usando sudo mysql -u root). Algunas herramientas gráficas locales también pueden intentar usar la autenticación por socket si está disponible.

2. mysql_native_password: Autenticación Tradicional con Contraseña

  • ¿Cómo funciona? Este es el método de autenticación más tradicional en MySQL. El cliente (por ejemplo, MySQL Workbench, una aplicación) envía un nombre de usuario y una contraseña al servidor MySQL. El servidor verifica esta contraseña con la almacenada (de forma hasheada) para ese usuario.
  • ¿Cuándo se usa? Es el método más común para conexiones remotas y para la mayoría de las herramientas gráficas que requieren una autenticación explícita con nombre de usuario y contraseña.
  • ¿Cómo lo identifico? Al ejecutar la misma consulta anterior, si la columna plugin muestra mysql_native_password, este método está activo.
  • ¿Cómo conectar con mysql_native_password? Necesitas proporcionar el nombre de usuario y la contraseña correcta en la herramienta o en la línea de comandos (usando la opción -p).

¿Qué hacer si el Plugin es auth_socket y Necesitas Conectar con Contraseña (por ejemplo, desde MySQL Workbench)?

Si el usuario root en localhost tiene el plugin auth_socket y necesitas conectarte desde una herramienta que requiere una contraseña (como MySQL Workbench), tendrás que cambiar el plugin a mysql_native_password. Aquí te explico cómo hacerlo:

Paso 1: Accede a la consola de MySQL como superusuario.

Abre tu terminal y ejecuta:

sudo mysql -u root

Esto debería permitirte entrar a la consola de MySQL sin pedir contraseña debido a la autenticación por socket.

Paso 2: Cambia el plugin de autenticación del usuario root para localhost.

Dentro de la consola de MySQL, ejecuta el siguiente comando:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tu_contraseña_deseada';

FLUSH PRIVILEGES;
  • Reemplaza ‘tu_contraseña_deseada’ con la contraseña que quieres establecer para el usuario root cuando se conecte desde localhost. Elige una contraseña segura y recuérdala.
  • FLUSH PRIVILEGES; asegura que los cambios de permisos se apliquen inmediatamente.

Paso 3: Verifica que el plugin haya cambiado (opcional pero recomendado).

Puedes volver a ejecutar la consulta para verificar el plugin:

SELECT User, Host, plugin FROM mysql.user WHERE User = 'root' AND Host = 'localhost';

Ahora la columna plugin debería mostrar mysql_native_password.

Paso 4: Sal de la consola de MySQL.

exit

Paso 5: Reinicia el servicio MySQL.

Para asegurarte de que todos los cambios se apliquen correctamente, reinicia el servicio MySQL:

sudo systemctl restart mysql

Paso 6: Conéctate desde MySQL Workbench.

Ahora, en la configuración de tu conexión en MySQL Workbench:

  • Asegúrate de que el «Hostname» esté configurado como localhost o 127.0.0.1.
  • En el campo del «Username», introduce root.
  • En el campo de la «Password», introduce la contraseña que estableciste en el Paso 2 (‘tu_contraseña_deseada’).
  • Intenta conectar.

¡Con estos pasos, deberías poder conectar a tu servidor MySQL local desde MySQL Workbench utilizando la autenticación con contraseña! Recuerda la contraseña que estableciste.

Espero que esta explicación en forma de tutorial te haya sido clara. ¡Si tienes alguna otra pregunta, no dudes en consultarme desde México! ¡Estamos para ayudarte!

Creación de un Usuario de MySQL con Permisos Exclusivos para Exportar Bases de Datos

En este tutorial, aprenderás a crear un nuevo usuario en MySQL y a otorgarle únicamente los privilegios necesarios para exportar bases de datos utilizando la herramienta mysqldump.

Paso 1: Accede a la consola de MySQL como superusuario.

Primero, necesitas conectarte al servidor MySQL con un usuario que tenga los permisos para crear otros usuarios y otorgar privilegios (normalmente root). Abre tu terminal y ejecuta:

sudo mysql -u root -p

Te pedirá la contraseña del usuario root (si la has configurado con mysql_native_password). Si estás utilizando auth_socket, es posible que puedas acceder sin contraseña con:

sudo mysql -u root

Paso 2: Crea el nuevo usuario.

Dentro de la consola de MySQL (aparecerá el prompt mysql>), crea el nuevo usuario utilizando el comando CREATE USER. Decide un nombre de usuario (por ejemplo, exportador) y un host desde donde se podrá conectar (por ejemplo, ‘localhost’ si solo necesitas que se conecte desde la misma máquina, o ‘%’ si quieres permitir conexiones desde cualquier host – ¡con precaución!). También establece una contraseña segura.

CREATE USER 'exportador'@'localhost' IDENTIFIED BY 'tu_contraseña_segura';

Reemplaza:

  • ‘exportador’ con el nombre de usuario que desees.
  • ‘localhost’ con el host desde donde se permitirá la conexión (ajusta según tus necesidades).
  • ‘tu_contraseña_segura’ con una contraseña fuerte para este usuario.

Si quieres permitir la conexión desde cualquier host (no recomendado por seguridad en la mayoría de los casos), usarías:

CREATE USER 'exportador'@'%' IDENTIFIED BY 'tu_contraseña_segura';

Paso 3: Otorgar los permisos necesarios para exportar bases de datos.

El permiso principal necesario para exportar bases de datos con mysqldump es SELECT en todas las tablas de las bases de datos que se van a exportar y el privilegio LOCK TABLES para asegurar la consistencia durante la exportación (especialmente si no se usa –single-transaction). También es útil otorgar el privilegio RELOAD para permitir que FLUSH TABLES WITH READ LOCK se ejecute (aunque LOCK TABLES a nivel de tabla es más específico).

Para permitir la exportación de todas las bases de datos, puedes otorgar los siguientes privilegios:

GRANT SELECT ON *.* TO 'exportador'@'localhost';

GRANT LOCK TABLES ON *.* TO 'exportador'@'localhost';

FLUSH PRIVILEGES;

Si solo quieres permitir la exportación de bases de datos específicas (por ejemplo, basededatos1 y basededatos2), tendrías que otorgar los permisos a nivel de esas bases de datos:

SQL

GRANT SELECT ON basededatos1.* TO 'exportador'@'localhost';

GRANT LOCK TABLES ON basededatos1.* TO 'exportador'@'localhost';

GRANT SELECT ON basededatos2.* TO 'exportador'@'localhost';

GRANT LOCK TABLES ON basededatos2.* TO 'exportador'@'localhost';

FLUSH PRIVILEGES;

Explicación de los Privilegios:

  • SELECT ON *.* (o ON basededatos.*): Permite al usuario seleccionar datos de todas las tablas (o de las tablas de la base de datos especificada), lo cual es necesario para que mysqldump pueda leer el contenido de las bases de datos.
  • LOCK TABLES ON *.* (o ON basededatos.*): Permite al usuario bloquear las tablas para asegurar la consistencia de los datos durante la exportación. Si planeas usar la opción –single-transaction con mysqldump (recomendada para bases de datos InnoDB), este permiso podría no ser estrictamente necesario, pero es una buena práctica incluirlo para otros tipos de tablas.
  • FLUSH PRIVILEGES;: Recarga las tablas de privilegios, asegurando que los cambios que acabas de realizar se apliquen inmediatamente.

Paso 4: Verifica los privilegios del usuario (opcional).

Puedes verificar los privilegios otorgados al nuevo usuario con el siguiente comando:

SQL

SHOW GRANTS FOR 'exportador'@'localhost';

Esto mostrará una lista de los privilegios que se han concedido a este usuario.

Paso 5: Sal de la consola de MySQL.

exit

Ahora, el usuario ‘exportador’@’localhost’(o el usuario y host que hayas elegido) podrá utilizar las credenciales (‘exportador’y ‘tu_contraseña_segura’) con la herramienta mysqldump para exportar las bases de datos para las que le has otorgado permisos.

Ejemplo de uso de mysqldump con este usuario:

mysqldump -h localhost -u exportador -p’tu_contraseña_segura’ –all-databases –single-transaction –quick –lock-tables=FALSE > backup_completo.sql

O para una base de datos específica:

mysqldump -h localhost -u exportador -p’tu_contraseña_segura’ basededatos1 –single-transaction –quick –lock-tables=FALSE > backup_basededatos1.sql

¡Y eso es todo! Has creado un usuario de MySQL con permisos específicos para exportar bases de datos. Recuerda la importancia de utilizar contraseñas seguras y de otorgar solo los privilegios necesarios para cada usuario por motivos de seguridad. ¡Desde México, espero que este tutorial te sea de gran utilidad!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *