Bibliothèque Numérique ENI :
tous nos livres & vidéos, en accès illimité 24h/24. Cliquez ici
Bibliothèque Numérique ENI :
tous nos livres & vidéos, en accès illimité 24h/24. Cliquez ici
  1. Livres & vidéos
  2. LAMP
  3. Aller plus loin avec MySQL
Extrait - LAMP Installez et configurez votre serveur web (Linux, Apache, MySQL et PHP)
Extraits du livre
LAMP Installez et configurez votre serveur web (Linux, Apache, MySQL et PHP) Revenir à la page d'achat du livre

Aller plus loin avec MySQL

Les utilisateurs

Afin de pouvoir s’authentifier sur le serveur pour accéder aux bases de données, il est nécessaire de disposer d’un compte utilisateur. Ce compte d’utilisateur permettra également de leur attribuer les droits nécessaires. Dans cette section, nous allons vous présenter les moyens qui vous permettront de gérer les comptes d’utilisateurs dans votre instance de MySQL.

1. Les utilisateurs

Les informations sur les utilisateurs sont stockées dans la table user de la base de données mysql. Dans cette table, on retrouvera notamment la colonne User, qui contient le nom de l’utilisateur, et la colonne Host, qui contient le nom de l’hôte à partir duquel l’utilisateur est autorisé à se connecter.

Par exemple, la requête suivante permet de lister les utilisateurs sur votre instance de MySQL.

SELECT User,Host FROM mysql.user; 

Dans le cas d’une installation récente de MySQL, vous obtenez le résultat suivant :

+------------------+-----------+  
| User             | Host      |  
+------------------+-----------+  
| mysql.infoschema | localhost |  
| mysql.session    | localhost |  
| mysql.sys        | localhost |  
| root             | localhost |  
+------------------+-----------+ 

Dans le tableau qui s’affiche, on distingue plusieurs utilisateurs disponibles par défaut, notamment l’utilisateur root que vous avez eu l’occasion de découvrir au chapitre précédent (cf. chapitre Débuter avec MySQL - Activité 1 : Installer MySQL Community Server).

Pour rappel, l’utilisateur root est un compte d’utilisateur distinct du compte utilisateur root que l’on retrouve sur un système Linux.

On retrouve également trois comptes d’utilisateurs spéciaux, qu’il n’est pas possible de supprimer ou de modifier. Ils sont réservés à des utilisations spécifiques par MySQL. Il s’agit de l’utilisateur mysql.infoschema, de l’utilisateur mysql.session et de l’utilisateur mysql.sys.

2. Gérer les utilisateurs

a. Caractéristiques des utilisateurs

Un compte utilisateur sous MySQL est défini...

Les droits

Afin de pouvoir réaliser des opérations sur les bases de données, les utilisateurs authentifiés devront posséder les droits nécessaires. On parlera alors de privilèges pour qualifier les droits affectés aux utilisateurs. Dans cette section, nous allons vous présenter les moyens qui vous permettront de gérer les privilèges accordés aux utilisateurs sur les bases de données et sur les objets hébergés dans un serveur MySQL.

1. Les privilèges

a. Caractéristiques des privilèges

Sous MySQL, on distingue deux types de privilèges, les privilèges statiques et les privilèges dynamiques.

Les privilèges statiques sont fournis par le noyau de MySQL et permettent de couvrir les opérations courantes (création de base de données, de tables, insertion, suppression de données, etc.). On retrouve également certains privilèges liés à l’administration d’une instance de MySQL.

Les privilèges dynamiques sont fournis par le noyau de MySQL et par certains plugins. Il s’agit essentiellement de privilèges liés à l’administration d’une instance de MySQL. Ils permettent notamment d’affiner les privilèges statiques liés à l’administration d’une instance de MySQL.

Dans le cadre de cet ouvrage, nous allons couvrir les privilèges statiques dans MySQL. Ils vous permettront d’aller plus loin dans la mise en œuvre et dans la gestion de votre installation de MySQL au sein d’une pile LAMP.

b. Lister les privilèges

Afin de lister les privilèges des utilisateurs, vous pouvez utiliser l’instruction SHOW GRANTS.

La syntaxe de cette instruction est la suivante :

SHOW GRANTS FOR '<utilisateur>'@'<hôte>'; 

Ci-dessous, voici un exemple d’utilisation qui permet de lister les privilèges de l’utilisateur pierre dans MySQL.

SHOW GRANTS FOR 'pierre'@'%'; 

Vous pouvez également lister les privilèges de l’utilisateur courant en utilisant l’instruction SHOW GRANTS sans options.

Par exemple, vous pouvez exécuter la requête suivante :

SHOW GRANTS; 

Le résultat s’affichera sous la forme d’un tableau contenant différentes...

Activité 4 : Créer un utilisateur

1. Introduction

Dans cette activité, nous allons créer l’utilisateur menagerie qui aura le droit de créer, de modifier et de mettre à jour les tables de la base de données menagerie. Cet utilisateur pourra également se connecter depuis n’importe quel hôte sans restriction.

Pour reproduire cette activité, vous devez disposer d’une installation de MySQL fonctionnelle. Vous devrez également vous authentifier avec l’utilisateur root de MySQL.

2. Création d’un utilisateur

a. Créer l’utilisateur menagerie

Dans un premier temps, nous allons créer le compte de l’utilisateur menagerie avec un mot de passe qui sera généré de manière aléatoire. Pour cela, vous pouvez suivre les instructions suivantes.

 Exécutez la ligne de commande suivante depuis le shell Linux.

mysql -u root -p 

 Puis saisissez le mot de passe de l’utilisateur root de MySQL dans le prompt qui s’affiche.

 Exécutez la requête suivante depuis l’invite de commandes de mysql pour créer le nouvel utilisateur.

CREATE USER 'menagerie'@'%' IDENTIFIED BY RANDOM PASSWORD; 

À la suite de la création de l’utilisateur, vous obtenez un tableau qui affiche le mot de passe qui a été généré pour l’utilisateur menagerie.

images/11RI03_1.png

Figure 4 : Résultat d’une requête pour la création de l’utilisateur menagerie

 Conservez ce mot de passe qui sera utilisé plus tard pour vous permettre de vous authentifier dans MySQL.

b. Accorder les privilèges

Nous allons maintenant accorder les privilèges nécessaires pour l’utilisateur menagerie que nous venons de créer. Pour cela, vous pouvez suivre les instructions suivantes.

 Exécutez la requête suivante depuis l’invite de commandes de mysql.

GRANT SELECT, ALTER, CREATE, INSERT, UPDATE, DELETE 
ON menagerie.* TO 'menagerie'@'%';...

Sauvegarde et restauration

1. Privilèges pour la sauvegarde des bases de données

La sauvegarde des bases de données requiert certains privilèges, notamment le privilège SELECT, le privilège PROCESS et le privilège LOCK TABLES. Dans certains cas, les privilèges RELOAD ou TRIGGER pourraient être nécessaires.

Par exemple, voici ci-dessous la requête SQL qui permet d’attribuer les privilèges statiques nécessaires à un utilisateur robot-backup qui serait dédié à la sauvegarde des bases de données.

GRANT PROCESS, SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, PROCESS, 
RELOAD ON *.* TO 'robot-backup'@'%'; 

Les exemples qui seront présentés dans cette section seront illustrés à l’aide de l’utilisateur root de MySQL qui dispose également des privilèges suffisants pour réaliser des sauvegardes et restaurer des bases de données.

2. Sauvegarder ses bases de données

a. Les moyens de sauvegardes

La sauvegarde des bases de données sous MySQL s’effectue généralement à l’aide de la commande mysqldump. Cet outil en ligne de commande permet de traduire la structure des bases de données, ainsi que le contenu de leur table, dans une série de requêtes SQL qui peuvent être rejouées afin de restaurer les bases de données. Ces requêtes seront généralement sauvegardées dans un fichier avec l’extension .sql, qu’on appelle également script SQL.

b. La commande mysqldump

La commande mysqldump dispose de plusieurs options qui permettront notamment de s’authentifier sur le serveur, il s’agit de l’option -u pour définir l’utilisateur en argument et de l’option -p pour afficher un prompt pour saisir le mot de passe. Elle dispose également d’options qui sont utiles dans le cas d’une sauvegarde à partir d’un hôte distant, il s’agit de l’option -h pour définir le nom DNS ou l’adresse IP du serveur et l’option -P pour définir le port de connexion.

La commande mysqldump accepte en argument le nom d’une base de données à sauvegarder.

Par exemple, la ligne de commande suivante permettra...

Activité 5 : Créer une nouvelle base de données à partir d’un export

1. Introduction

Dans cette activité, nous allons créer l’utilisateur sauvegarde qui aura les droits nécessaires pour sauvegarder toutes les bases de données de notre instance de MySQL à partir de n’importe quel hôte. Puis nous allons réaliser une sauvegarde de la base de données menagerie qui sera utilisée pour créer une nouvelle base de données vierge.

Pour reproduire cette activité, vous devez disposer d’une installation de MySQL fonctionnelle. Vous devrez également vous authentifier avec l’utilisateur root dans MySQL.

2. Création d’un utilisateur pour la sauvegarde

a. Créer l’utilisateur

Dans un premier temps, nous allons créer le compte de l’utilisateur sauvegarde. Pour cela, vous pouvez suivre les instructions suivantes.

 Exécutez la ligne de commande suivante depuis le shell Linux :

mysql -u root -p 

 Puis saisissez le mot de passe de l’utilisateur root de MySQL dans le prompt qui s’affiche.

 Exécutez la requête suivante depuis l’invite de commandes de mysql pour créer le nouvel utilisateur :

CREATE USER 'sauvegarde'@'%' IDENTIFIED BY RANDOM PASSWORD; 

À la suite de l’exécution de la requête, vous obtenez un tableau qui affiche le mot de passe qui a été généré pour l’utilisateur.

images/11RI05_1.png

Figure 8 : Résultat d’une requête pour la création de l’utilisateur sauvegarde

 Conservez le mot de passe généré afin de pouvoir vous authentifier...