Rendre la base de données plus sécurisée

MySQLMySQLBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Bienvenue dans ce défi passionnant où nous allons plonger dans le monde de la sécurité des bases de données! À l'ère numérique d'aujourd'hui, protéger nos données est plus crucial que jamais. Ce défi vous présentera les pratiques essentielles de sécurité MySQL que tout administrateur de base de données et développeur devrait connaître.

Nous allons nous concentrer sur trois aspects clés de la sécurité des bases de données :

  1. Sécuriser le compte root
  2. Créer des comptes utilisateurs avec des autorisations limitées
  3. Appliquer le principe du moindre privilège

À la fin de ce défi, vous aurez acquis une expérience pratique pour rendre une base de données MySQL plus sécurisée. Ces compétences sont inestimables dans les scénarios du monde réel, que vous gériez un petit projet personnel ou que vous travailliez sur des systèmes d'entreprise à grande échelle.

N'oubliez pas que de bonnes pratiques de sécurité ne servent pas seulement à prévenir les violations ; elles servent également à établir la confiance auprès de vos utilisateurs et à maintenir l'intégrité de vos données. Commençons ce voyage important vers une meilleure sécurité des bases de données!


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{{"Rendre la base de données plus sécurisée"}} mysql/select -.-> lab-391535{{"Rendre la base de données plus sécurisée"}} mysql/user -.-> lab-391535{{"Rendre la base de données plus sécurisée"}} mysql/identified_by -.-> lab-391535{{"Rendre la base de données plus sécurisée"}} mysql/grant_permission -.-> lab-391535{{"Rendre la base de données plus sécurisée"}} sql/security_permissions -.-> lab-391535{{"Rendre la base de données plus sécurisée"}} end

Rendre la base de données plus sécurisée

Dans notre machine virtuelle LabEx, le compte root de MySQL n'a actuellement pas de mot de passe. Cela constitue un risque de sécurité majeur. Vos tâches sont les suivantes :

  1. Définir le mot de passe 4nM1ruJNqL1D pour le compte root de MySQL.
  2. Créer un nouveau compte utilisateur nommé labex avec le mot de passe Xd4a8lKjeL9Z.
  3. Accorder à l'utilisateur labex un accès en lecture seule (autorisation SELECT) à la base de données Challenge01.

Remarque : Faites attention à ne pas confondre l avec 1, O avec 0 ou I avec 1.

Commandes utiles

Voici quelques commandes MySQL qui pourraient vous être utiles :

  • ALTER USER : Modifier des comptes utilisateurs existants
  • CREATE USER : Créer un nouveau compte utilisateur MySQL
  • GRANT : Accorder des privilèges spécifiques à un compte utilisateur
  • FLUSH PRIVILEGES : Recharger les privilèges pour garantir que les modifications prennent effet

Exemple

Après avoir terminé les tâches, vous devriez voir des résultats similaires à ceux-ci :

  1. Connexion en tant que root avec le nouveau mot de passe :

    $ mysql -uroot -p4nM1ruJNqL1D
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ...
    mysql>
  2. Connexion en tant que labex :

    $ mysql -ulabex -pXd4a8lKjeL9Z
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ...
    mysql>
  3. Vérification des autorisations de labex (en tant que root) :

    mysql> SHOW GRANTS FOR labex@localhost;
    +-----------------------------------------------------+
    | Grants for labex@localhost                          |
    +-----------------------------------------------------+
    | GRANT USAGE ON *.* TO `labex`@`localhost`           |
    | GRANT SELECT ON `Challenge01`.* TO `labex`@`localhost` |
    +-----------------------------------------------------+
✨ Vérifier la solution et pratiquer

Résumé

Félicitations pour avoir terminé ce défi de sécurité des bases de données! Recapitulons ce que vous avez accompli :

  1. Vous avez sécurisé le compte root en définissant un mot de passe fort, éliminant ainsi une vulnérabilité de sécurité majeure.
  2. Vous avez créé un nouveau compte utilisateur avec des autorisations limitées, mettant en pratique le principe du moindre privilège.
  3. Vous avez appris à accorder des autorisations spécifiques à un utilisateur, permettant un contrôle précis de l'accès à la base de données.

Ces compétences sont essentielles pour maintenir un environnement de base de données sécurisé. Dans les scénarios du monde réel, vous pourriez créer plusieurs utilisateurs avec différents niveaux d'autorisations en fonction de leurs rôles et responsabilités.