Ajouter ce site au Favoris Imprimer cette page  
 
 
     
     
     
   
 

Installation sous Linux et configuration

Il s'agit ici de décrire l'installation et la prise en main de l'administration du serveur, en laissant de coté l'accès par programmation à l'aide de PHP.
  • On installe tout en même temps que Linux , ou bien ensuite les packages indispensables pour MySql, PHP et Apache.
    Voici la liste des paquetages, au format rpm, supposés installés :
    • MySQL (tout)
    • apache, apache-common, apache-devel (éventuellement apache-mod-perl (pour intégrer Perl dans Apache, apache-mod-suexec)
    • éventuellement perl et qq modules : perl-DBI (api perl pour gérer une base de données), perl-Mysql (pilote DBD::mysql),
    • php 4.0.3pl1mdk, mod-php , php-mysql , php-manual
    • phpMyAdmin , qui est un ensemble de scripts PHP permettant de gérer complètement le serveur et ses bases par interface WEB distante .

Les programmes sont-ils déjà installés ?

  • Pour vérifier en ligne de commande (et obtenir le numéro de version)
    rpm -q MySQL --> MySQL-3.22.32-5.mdk
    Ou Sous X-KDE , chercher avec l'utilitaire kpackage

Le serveur MySql est-il en fonctionnement ? Comment le démarrer ?

  • Pour simplement vérifier l'état du serveur, on passe la commande standard
    ps ax |grep mysql
  • Si mysqld est en fonctionnement, on obtient les références à 3 processus lancés par le programme /usr/sbin/mysqld
  • Si nécessaire, au cas où le serveur mysqld n'est pas lancé au démarrage, (comme pour les autres "démons", sur des distributions de type RedHat), on peut le démarrer ou l'arrêter le "moteur" Mysql par la commande /etc/rc.d/init.d/mysql {start | stop }
  • Pour lancer le serveur automatiquement au démarrage de la machine (ou lors d'un reboot), utiliser l'utilitaire ntsysv, et cocher mysql.
  • Au (re)démarrage, on peut lire le message : "Starting mysql deamons with databases from /var/lib/mysql" ,
    ce qui indique que les bases de données sont stockées dans /var/lib/mysql

Introduction à l'administration en ligne de commande

Comment consulter la documentation ?

  • Le fichier HTML /usr/share/doc/Mysql/manual_toc. html présente le sommaire du manuel de référence (en anglais) sous forme de liens vers un seul énorme fichier HTML, de ce fait difficilement "navigable".
  • Consulter aussi les documentations, aux formats HTML et PDF, présentes sur le site http://www.mysql.com, et traduites sur http://www.nexen.net

Quelles sont les bases déjà installées ?

  • Dès le début de son fonctionnement le moteur a installé 2 bases : test (vide) et mysql , base de données du moteur, destinée à gérer les utilisateurs du serveur et leur droits d'accès.
  • Les bases créées occupent chacune un sous-répertoire de /var/lib/mysql
  • A ce stade, on peut consulter la liste des bases avec la commande shell : $ mysqlshow

Comment dialoguer avec le serveur Mysql ?

  • La commande mysql exécute un utilitaire qui permet de dialoguer avec le serveur MySql. Ce mode de gestion s'effectue en ligne de commande et est appelé le mode console .
  • Lancer cet utilitaire mysql . A ce stade que l'on soit root ou utilisateur quelconque, aucun mot de passe n'est demandé. Et l'on se trouve devant le prompt mysql> ce qui signifie que l'interpréteur de commandes SQL attend nos requêtes. $ mysql Welcome to the MySQL monitor. Commands ends with ; or \g Your Mysql connection id is ... tape help; ou \h for help mysql>

Quels sont les premiers utilisateurs ?

2 utilisateurs ont déjà été créés par l'installation
  1. Un super-utilisateur du serveur MySql, appelé root@localhost (homonyme du superviseur Linux , mais qui en est bien distinct).
    Celui-ci possède tous les droits sur les bases de données et en particulier sur la base d'administration nommée elle aussi mysql
    Or, à l'installation root peut se connecter sans mot de passe ! Il faudra de toute urgence lui en imposer un !
  2. L'utilisateur anonyme, noté @localhost qui ne possède que des droits d'accès très réduits,
    comme prendre connaissance des bases installées par la commande SQL show databases; root@localhost . L'installation l'ayant créé sans mot de passe ,
  3. Afin de tester avec l'utilitaire mysql, passer les commandes SQL suivantes, et observer leurs effets.
    Comme l'accès à la base système mysql est refusé, reprendre sous le compte root Remarque : les commandes SQL et en particulier celles que l'on passe dans l'utilitaire mysql, ne sont pas sensibles à la casse. Mais par convention, il est d'usage d'écrire les mots-clés SQL en majuscules. $ mysql mysql> SHOW databases; mysql> USE test; mysql> SHOW tables; mysql> USE mysql; mysql> SHOW tables; mysql> SHOW columns FROM user; mysql> SELECT host , user, password FROM user; mysql>quit

Définir un mot de passe d'administration pour root de Mysql

  • # mysqladmin -u root password moi
    Le mot de passe de l'administrateur " root " de mysql est maintenant moi .
  • Variante : on peut utiliser le mode console, avec la fonction de cryptage PASSWORD(), spécifique à Mysql
    mysql>SET PASSWORD FOR root= PASSWORD('moi');

Se reconnecter localement comme root

  • # mysql --> access denied for user root@localhost
  • Désormais, pour se connecter au serveur, il doit préciser son mot de passe interactivement
    # mysql -u root -p Enter password : moi (il n'apparait pas à l'écran) Welcome to the MySQL monitor ......

Commande de connexion générale

  • Le paramètre -u user est indispensable si l'utilisateur Mysql user qui veut se connecter, est différent du compte utilisateur actuellement connecté au système.
  • Si le serveur Mysql est hébergé par une autre machine, il faut préciser son nom d'hôte après le paramètre -h
  • Si on met juste le paramètre -p , le mot de passe est demandé interactivement, comme cela a été décrit ci-dessus.
    Mais on peut le donner (attention en clair !) collé après -p, repreons l'exemple précédent : # mysql -h machine -u root -pmoi mysql>
  • Par exemple l'utilisateur actuel du système veut se connecter sous le nom d'utilisateur Mysql jean, au serveur en exécution sur la machine appelée apache du domaine bahut.ac-creteil.fr # mysql -h apache -u jean -p Enter password : (il n'apparait pas à l'écran) Welcome to the MySQL monitor mysql>

Pour se connecter directement à une base

  • On précise le nom de cette base aussi dans la ligne de commande, généralement à la fin
  • exemple 1 : root veut ouvrir la base d'administration système mysql (sous-entendu à la machine localhost ) puis interroger la table user : # mysql -u root -p mysql Enter password : ... Welcome to the MySQL monitor ...... mysql> SELECT host , user, password FROM user; On observe alors le mot de passe de root crypté !
  • exemple 2 : jean est l'administrateur de la base profs , avec le mot de passe jeannot et il veut la gérer à distance en mode console. Supposons que le serveur mysql soit hébergé par la machine nommée apache et que jean se connecte à partir de la machine nommée station1
    Il examine ensuite la liste des tables de la base profs : [jean@station1 jean]$ mysql -h apache -u jean -pjeannot profs ............. mysql> SHOW TABLES;

Supprimer l'utilisateur anonyme

  • Il est vivement recommandé de le supprimer ... pas vraiment pour une question de sécurité car ses privilèges sont très limité, mais pour éviter des confusions liées à la procédure d'authentification .
    Pour le supprimer, root se connecte à la base mysql , et supprime logiquement de la table des utilisateurs mysql.user les enregistrements où le champ user est vide. # mysql -p mysql mysql> DELETE FROM user WHERE user='';
  • Ré-examen de la table des utilisateurs : elle ne doit contenir que les lignes concernant root # mysql -p mysql mysql> select host , user, password from user ; localhost root mot-de-passe-crypté

Comment créer une nouvelle base ?

  • root crée une nouvelle base de données nommée essais et vérifie sa présence dans la liste des bases
  • # mysql -u root -p mysql> CREATE DATABASE essais; Query OK, 1 row affected (0.00 sec) mysql> SHOW DATABASES;
  • La nouvelle base essais sera installée dans un répertoire qui porte son nom, c'est-à-dire ici /var/lib/mysql/essais .
    Pour le moment ce répertoire créé est vide. Il porte les droits de propriété 700 pour l'utilisateur mysql .

Comment supprimer une base ?

  • En mode console, root passe la commande sans recours (attention !)
    mysql> DROP DATABASE essais; Query OK, 0 row affected (0.00 sec)

Comment créer des utilisateurs ?

  • C'est le privilège de root de gérer les utilisateurs des bases de données, et de leur accorder les droits au niveau d'une base ou d'une table.
    Les commandes GRANT et REVOKE permettent d'attribuer et de retirer des droits d'accès
    Il est possible de préciser si l'utilisateur aura droit d'accès à la base seulement localement (clause TO user@localhost) ou est permise à distance (TO 'user@%').
  • Syntaxe générale : mysql> GRANT [ALL PRIVILEGES | liste de privilèges] ON [base.table | base.*] TO [user@localhost | 'user@%' | 'user@%.domaine'] IDENTIFIED BY "mot-de-passe";
  • Quelques exemples Création du nouvel utilisateur toto , de mot de passe toto à qui on accorde tous les droits sur les tables de la base essais (il en sera l'administrateur) mysql> GRANT ALL PRIVILEGES ON essais.* TO toto@localhost IDENTIFIED BY "toto"; Création du nouvel utilisateur jean , de mot de passe jeannot à qui on accorde tous les droits sur toutes les bases mysql> GRANT ALL PRIVILEGES ON *.* TO 'jean@%' IDENTIFIED BY "jeannot" ; L'utilisateur admin , de mot de passe admin est le gestionnaire de la base cdi. Il y aura tous les privilèves et pourra se connecter à distance mysql> GRANT ALL PRIVILEGES ON cdi.* TO 'admin@%' IDENTIFIED BY "admin" ; Le nouveau utilisateur public sur la machine locale aura droit complet d'administration sur les tables de la base magasin vérifier en consultant la table db de la base système mysql (par exemple avec phpMySql) mysql> GRANT ALL PRIVILEGES ON essais.* TO public@localhost;

[Precédent] [Sommaire] [Suivant]                                      [Haut]