Hacer la base de datos más segura

MySQLMySQLBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Bienvenido a este emocionante desafío en el que nos sumergiremos en el mundo de la seguridad de bases de datos. En la era digital actual, proteger nuestros datos es más crucial que nunca. Este desafío te presentará prácticas esenciales de seguridad de MySQL que todo administrador y desarrollador de bases de datos debe conocer.

Nos centraremos en tres aspectos clave de la seguridad de bases de datos:

  1. Proteger la cuenta root
  2. Crear cuentas de usuario con permisos limitados
  3. Implementar el principio de menor privilegio

Al final de este desafío, tendrás experiencia práctica en hacer más segura una base de datos MySQL. Estas habilidades son invaluables en escenarios del mundo real, ya sea que estés administrando un pequeño proyecto personal o trabajando en sistemas empresariales a gran escala.

Recuerda, las buenas prácticas de seguridad no solo se tratan de prevenir violaciones; se tratan de construir confianza con tus usuarios y mantener la integridad de tus datos. ¡Comencemos este importante viaje hacia una mejor seguridad de bases de datos!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql(("MySQL")) -.-> mysql/TransactionManagementandSecurityGroup(["Transaction Management and Security"]) sql(("SQL")) -.-> sql/DatabaseManagementandOptimizationGroup(["Database Management and Optimization"]) sql/BasicSQLCommandsGroup -.-> sql/select("SELECT statements") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/user("User Info Function") mysql/TransactionManagementandSecurityGroup -.-> mysql/identified_by("User Authentication") mysql/TransactionManagementandSecurityGroup -.-> mysql/grant_permission("Permission Granting") sql/DatabaseManagementandOptimizationGroup -.-> sql/security_permissions("Security and Permissions") subgraph Lab Skills sql/select -.-> lab-391535{{"Hacer la base de datos más segura"}} mysql/select -.-> lab-391535{{"Hacer la base de datos más segura"}} mysql/user -.-> lab-391535{{"Hacer la base de datos más segura"}} mysql/identified_by -.-> lab-391535{{"Hacer la base de datos más segura"}} mysql/grant_permission -.-> lab-391535{{"Hacer la base de datos más segura"}} sql/security_permissions -.-> lab-391535{{"Hacer la base de datos más segura"}} end

Hacer la base de datos más segura

En nuestra máquina virtual (VM) de LabEx, la cuenta root de MySQL actualmente no tiene contraseña. Esto representa un riesgo de seguridad significativo. Tus tareas son:

  1. Establece la contraseña 4nM1ruJNqL1D para la cuenta root de MySQL.
  2. Crea una nueva cuenta de usuario llamada labex con la contraseña Xd4a8lKjeL9Z.
  3. Concede al usuario labex acceso de solo lectura (permiso SELECT) a la base de datos Challenge01.

Nota: Ten cuidado de no confundir l con 1, O con 0 o I con 1.

Comandos útiles

Aquí hay algunos comandos de MySQL que pueden resultarte útiles:

  • ALTER USER: Modificar cuentas de usuario existentes
  • CREATE USER: Crear una nueva cuenta de usuario de MySQL
  • GRANT: Dar privilegios específicos a una cuenta de usuario
  • FLUSH PRIVILEGES: Recargar los privilegios para garantizar que los cambios surtan efecto

Ejemplo

Después de completar las tareas, deberías ver resultados similares a estos:

  1. Iniciar sesión como root con la nueva contraseña:

    $ mysql -uroot -p4nM1ruJNqL1D
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ...
    mysql>
  2. Iniciar sesión como labex:

    $ mysql -ulabex -pXd4a8lKjeL9Z
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ...
    mysql>
  3. Verificar los permisos de labex (como root):

    mysql> SHOW GRANTS FOR labex@localhost;
    +-----------------------------------------------------+
    | Grants for labex@localhost                          |
    +-----------------------------------------------------+
    | GRANT USAGE ON *.* TO `labex`@`localhost`           |
    | GRANT SELECT ON `Challenge01`.* TO `labex`@`localhost` |
    +-----------------------------------------------------+
✨ Revisar Solución y Practicar

Resumen

¡Felicidades por completar este desafío de seguridad de bases de datos! Repasemos lo que has logrado:

  1. Has protegido la cuenta root estableciendo una contraseña fuerte, cerrando una importante vulnerabilidad de seguridad.
  2. Has creado una nueva cuenta de usuario con permisos limitados, demostrando el principio de menor privilegio.
  3. Has aprendido cómo otorgar permisos específicos a un usuario, lo que te permite un control detallado sobre el acceso a la base de datos.

Estas habilidades son fundamentales para mantener un entorno de base de datos seguro. En escenarios del mundo real, es posible que crees múltiples usuarios con diferentes niveles de permisos según sus roles y responsabilidades.