Easy-Micro


 
ESPACEMEMBRE MySQL
Privilèges

Gestion des privilèges

La sécurité de MySQL est basée sur un système de privilèges simple. Chaque utilisateur qui veut se connecter doit s'identifier auprès du serveur MySQL. Cette identification est une combinaison de trois critères: l'hôte (la machine) depuis lequel la connexion est établie, un nom d'utilisateur et un mot de passe.

A cette identification est associé un ensemble d'attributs qui vont permettre de définir des privilèges sur certaine bases de données, tables, colonnes ou opérations particulières.

Un seul utilisateur peut se connecter en local. Il se nomme root, c'est le super utilisateur, il dispose de tous les privilèges sur le serveur. Cet utilisateur n'a pas de mot de passe.

Note: Avant la version 5.0 de MySQL, existait un utilisateur anonyme sans nom (champ blanc qui signifiait "tous les utilisateurs") qui pouvait se connecter depuis n'importe quelle machine (via le symbole % qui signifie "tous les hôtes"). Cet utilisateur est - heureusement- suprimé par défaut depuis la version 5.0

Connexion au serveur sous invite de commande
mysql> mysql -h localhost -u root -p
Enter password: ********

Vous pouvez aussi spécifier ces informations de connexion dans la section [client] du fichier de configuration .my.cnf:
[client]
host=nom_d_hote
user=nom_d'utilisateur
password=votre_mot_de_passe


MySQL Principe de fonctionnement du système de privilèges
MySQL conserve les privilèges dans la base de donnée mysql présente dès l'installation du serveur. MySQL permet d'octroyer des privilèges aux utilisateurs mais ne permet pas d'en refuser. Il utilise les tables user, db, host, tables_priv et columns_priv pour gérer les privilèges des utilisateurs.

Vérifions la présence de la base de donnée mysql
mysql> USE mysql;

et la requête suivante pour lister les tables
mysql> SHOW TABLES;

On peut voir la liste des tables de privilèges: user, db, host, tables_priv et columns_priv.

MySQL contrôle l'accès en deux temps:
1 - Il vérifie l'identité de l'utilisateur à sa connexion
-> via l'hôte de connexion, le nom d'utilisateur et le mot de passe.
2 - Il vérifie ensuite chacune des requêtes envoyées pour s'assurer que l'utilisateur a les privilèges nécessaires.

MySQL La connexion
MySQL utilise la table user pour vérifier qu'un utilisateur est autorisé à se connecter.

Visualisons la structure de la table user avec une commande DESCRIBE
mysql> DESCRIBE user;

La colonne FIELD liste le trois champs de connexion (Host, User et password) puis les différents privilèges globaux de l'utilisateur, c'est à dire, ceux s'appliquant à toutes les bases de données et au serveur lui-même. Chaque champ est caractérisé par un type enum (qui n'accepte que les valeurs listés, ici : Y ou N). La valeur par défaut est N, le refus de privilège.
Voir le descriptif des privilèges dans Vérif requêtes.

Nous remarquons que le nom (User) et le mot de passe (Password) sont limités à 16 caractères et le nom d'hôte (Host) à 60 caractères.

Visualisons uniquement les trois colonnes Host, User, Password
mysql> SELECT Host, User, Password FROM user;

Pour permettre la connexion d'un utilisateur "titi" à un domaine (mondomaine.com), il faudrait ajouter dans la colonne Host le champ "%.mondomaine.com" pour une connexion depuis toutes machines (sinon: pc1.mondomaine.com) et dans la colonne User le nom "titi".

Le champ host peut accepter un nom d'hôte tel que srv, un nom complet tel que srv.mondomaine.com ou le caractère générique %. Remarquez que le mot de passe est crypté.



Suivez les aventures des skippers aquitains sur EasyVoile.com
Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]
Dimanche 21 juillet 2019 - Semaine 29 - Saint Victor (Demain: Sainte Marie-Madeleine)
Aujourd'hui, c'est l'anniversaire de Hubert-Felix Thiefaine (1948-71 ans), chanteur français et de Charlotte Gainsbourg (1971), actrice française. Autre 21 juillet: 1798 - Victoire de la "bataille des pyramides" par Bonaparte.
Haut de page Easy-Micro