Petit tutoriel sur les privilèges d'accès à MySQL version shareware pour Windows



Au démarrage, MySQL lit les 3 tables suivantes dans la base mysql pour définir les privilèges d'accès de ses utilisateurs :
- la table user : définit les privilèges du couple (host+user) vis-à-vis du démon mysql en entier
- la table db : définit les privilèges du couple (host+user) vis-à-vis du démon par base de données
- la table host : définit les privilèges du couple (host+db) dans le cadre de l'utilisation de MySQL dans un grand réseau local. Dans la plupart des cas, cette table est inutile.

Voici les privilèges du root dans la table user :
 

Privilèges Attributs Fonctions
Host
localhost
le serveur hôte
User
root
son login
Password   son mot de passe crypté mais il n'en a pas au départ
Select_priv
Y
permet de sélectionner des enregistrements à toutes les BDD
Insert_priv
Y
permet d'insérer des enregistrements à toutes les BDD
Update_priv
Y
permet de modifier des enregistrements à toutes les BDD
Delete_priv
Y
permet de supprimer des enregistrements à toutes les BDD
Create_priv
Y
permet de créer des BDD
Drop_priv
Y
permet de supprimer des BDD
Reload_priv
Y
permet de relancer le démon
Shutdown_priv
Y
permet d'arrêter le démon
Process_priv
Y
permet de connaître les process en cours
File_priv
Y
permet import/export de tables

Avec ces privilèges, le root peut faire ce qu'il veut sur toutes les BDD et utiliser mysqladmin comme il l'entend.

Voici les bons privilèges (d'après moi) pour un utilisateur normal dans la table user :
 

Privilèges Attributs Fonctions
Host
localhost
le serveur hôte
User
jean
son login
Password
zrjkojieety
son mot de passe crypté
Select_priv
N
ne permet pas de sélectionner des enregistrements à toutes les BDD
Insert_priv
N
ne permet pas d'insérer des enregistrements à toutes les BDD
Update_priv
N
ne permet pas de modifier des enregistrements à toutes les BDD
Delete_priv
N
ne permet pas de supprimer des enregistrements à toutes les BDD
Create_priv
N
ne permet pas de créer des BDD
Drop_priv
N
ne permet pas de supprimer des BDD
Reload_priv
N
ne permet pas de relancer le démon
Shutdown_priv
N
ne permet pas d'arrêter le démon
Process_priv
N
ne permet pas de connaître les process en cours
File_priv
Y
permet import/export de tables

Etant donné que ces privilèges vis-à-vis du démon mysql sont volontairement très restrictifs pour un utilisateur normal, il faudra alors définir les droits de ce dernier vis-à-vis de sa BDD pour qu'il puisse effectuer les tâches courantes de mise à jour uniquement pour sa BDD.
Voici les privilèges pour un utilisateur normal vis-à-vis de sa BDD dans la table db :
 

Privilèges Attributs Fonctions
Host
localhost
le serveur hôte
Db BDDdeJean le nom d'une base de données
User
jean
son login
Select_priv
Y
permet de sélectionner des enregistrements à toutes ses tables
Insert_priv
Y
permet d'insérer des enregistrements à toutes ses tables
Update_priv
Y
permet de modifier des enregistrements à toutes ses tables
Delete_priv
Y
permet de supprimer des enregistrements à toutes ses tables
Create_priv
Y
permet de créer des tables dans sa BDD
Drop_priv
Y
permet de supprimer des tables de sa BDD

Avec ces privilèges, un utilisateur normal ne pourra pas utiliser mysqladmin pour créer des BDD ou arrêter le démon. Il pourra seulement faire "mysqladmin version ou status ou variables " pour obtenir des info sur l'état du démon mysql. En outre, il ne pourra utiliser que sa BDD.

Voici la syntaxe générale du client de MySQL :
 

mysql [-h nom_hôte] [-u nom_utilisateur] [-pvotre_passe] [une_BDD]
ou mysql [-h nom_hôte] [-u nom_utilisateur] [-p] [une_BDD] puis [votre_passe]

Par défaut -h = localhost et -u = root (pour Windows et l'userID pour Unix)

Pour ajouter un mot de passe à root :
-  lancer le démon
-  mysql mysql [entrée]
-  UPDATE user SET password=password('le_passe_de_root') WHERE user='root' and host='localhost'; [entrée]
-  quit [entrée]
-  mysqladmin reload [entrée]

Pour se connecter avec le root et son mot de passe :
-  mysql -u root -p [entrée]
-  entrer le_passe_de_root [entrée]

Conseil :
Au départ, il y a 4 lignes dans la table user : 2 lignes avec root et 2 lignes avec le champ user vide.
Ne gardez qu'un enregistrement avec root (en localhost) et supprimez les 3 autres. Ensuite, si besoin, ajoutez des utilisateurs normaux avec les privilèges ci-dessus.
N'oubliez pas que la syntaxe de mysqladmin est :
 

mysqladmin [commande] [-h nom_hôte] [-u nom_utilisateur] [-pvotre_passe]
ou mysqladmin [commande] [-h nom_hôte] [-u nom_utilisateur] [-p] puis [votre_passe]

et que par defaut -h = localhost et -u = root (pour Windows et l'userID pour Unix)

Ex : mysqladmin reload -u root [entrée] puis le mot de passe [entrée]

Pour gérer plus confortablement votre base de données MySQL, je vous conseille ces 2 outils qui sont complémentaires :
myAdmin
phpMyAdmin

Quelques liens utiles :
www.mysql.com : le site officiel de MySQL
www.minet.net/devel/mysql/ : un site miroir français de MySQL
www.nexen.net/fr/aide/MySQL/francais/manual_toc.html : une traduction du manuel de MySQL
www.siteck.com/mysql.html : un tutoriel en français sur l'utilisation de MySQL
sqltut.html : un tutoriel en anglais sur SQL dont je ne retrouve plus le site d'origine sur Geocities


Dernière mise à jour : le 19/11/99.
Pour toutes remarques ou ajouts de liens pertinents : pixi@free.fr
 
FREE, la liberté n'a pas de prix ! - Page d'accueil - 24pm, créez votre micro ebusiness