CMS – Ajouter des utilisateurs et des bases via phpMyAdmin

LEÇON

 

Principes de base de MySQL Server

Il faut savoir que MySQL n'est pas "une base de données" mais plutôt un "serveur de base de données".

Explication:

  • Une base de données (relationnelle) contient un ensemble de tables. Chaque table contient des données. On peut faire des opérations sur une table, ou plusieurs tables ensemble, pour exploiter la base.
  • Un serveur de base de données contient une ou plusieurs bases de données. Chaque base de données est une sorte de container distinct.

 

MySQL Server, utilisateurs, bases et privilèges

Quand on a installé notre serveur MySQL on a créé un utilisateur "root" qui est un utilisateur spécial car il a des droits de manipulation sur toutes les bases de données mais aussi sur le serveur lui même. C'est à dire par exemple que "root" peut créer ou effacer des bases de données. Il peut créer ou supprimer les utilisateurs et modifier leurs privilèges.

Quand on crée une base de données dans MySQL l'utilisateur "root" aura automatiquement des privilèges dessus. Il est possible donc ensuite d'exploiter cette base en utilisant les code d'accès (identifiant et mot de passe) de "root". Mais il n'est pas très prudent d'utiliser "root" pour toute connexion à une base.

Conseil :

  • réserver "root" pour les accès au niveau serveur
  • créer un utilisateur pour chaque base et donner des privilèges sur la base uniquement à cet utilisateur
  • pour faciliter des choses il est pratique de donner le même nom à l'utilisateur et à la base de données

 

Créer une base de données

Pour créer une base de données selon les conseils ci-dessus, logiquement on procède ainsi :

  • créer un utilisateur, qui aura un nom précis
  • créer une base de données et lui donner le même nom
  • donner des privilèges sur la base à l'utilisateur

Dans le pratique ceci est très facile à faire car phpMyAdmin offre un écran où on peut faire toutes ces opérations d'un coup.

Au lieu de prendre l'option "Créer une base de données" sous l'onglet "Base de données" de phpMyAdmin, on va plutôt ouvrir l'onglet "Privilèges" et choisir "Ajouter un utilisateur"

En suite on spécifie le nom d'utilisateur (testbase01 dans l'exemple), le fait que les connexions viennent uniquement de localhost (*) et on choisit de créer une base portant le même nom que l'utilisateur :

ajouter_base_utilisateur_phpmyadmin

(*) la spécification "localhost" est pour isoler la base de données - ainsi elle n'accepte pas de requête depuis une machine externe (réseau ou internet). Attention ça ne veut pas dire que les données ne seront pas accessible éventuellement sur internet. Si votre serveur web tourne sur la même machine que le serveur MySQL, les requêtes pour données reçues par MySQL depuis le serveur web seront acceptées. Ensuite le serveur web, s'il est exposé à internet, peut évidemment publier ces données. Remarquer que les données ne sont pas exposées n'importe comment sur internet. Les règles d'exposition des données sont encodées dans les scripts du serveur web. Ces scripts limitent donc l'accès aux données selon ces règles.

 


 

EXERCICES

  1. Ouvrir phpMyAdmin et se connecter en tant que "root"
  2. Via phpMyAdmin créer un utilisateur et une base portant le même nom comme dans l'exemple ci-dessus (testbase01)
  3. Créer un 2ème utilisateur et une 2ème base portant le même nom (testbase02)
  4. Se déconnecter et se reconnecter en tant que testbase01
  5. Remarque la différence d'interface et la limitation des droits (essayer par exemple de créer un 3ème utilisateur)
  6. Dans la base testbase01 créer une table et des données
  7. Se déconnecter et se reconnecter en tant que testbase02
  8. Essayer d’accéder aux données dans testbase01
  9. Se déconnecter et se reconnecter en tant que root
  10. Trouver comment donner des privilèges de lecture sur la base testbase01 à l'utilisateur testbase02 sans lui donner des droits de modification
  11. Se déconnecter et se reconnecter en tant que testbase02 et tester les nouveaux droits
  12. Supprimer des bases testbase01 et testbase02