MySQL

Qu'est-ce que c'est?

MySQL est un logiciel libre (sous licence GPL) de base de données relationnelle fonctionnant en client-serveur. Comparable à mSQL, il est meilleur sur de nombreux points. Il est maintenant très répandu et devient un standard, en particulier dans le cas d'application Web. Il n'a pas la prétention de rivaliser avec Oracle (également disponible au CICT) ou les autres gros logiciels commerciaux. Il en existe des versions pour tous les Unix et une version pour machines MS-Windows existe également. Il est donc idéal pour bâtir une application très portable sur des sites ou machines divers.

Version installée au CICT

La version installée sur la machine faisant serveur WWW est 3.23.49. L'usage en est réservé aux gestionnaires de services WWW hébergés au CICT. Dans le cas où l'utilisation de MySQL serait souhaitée en dehors du cadre d'un service WWW, me faire une demande expliquant l'utilisation prévue.

Documentation

La documentation fournie avec le logiciel en anglais est disponible localement (une table des matières et un seul gros fichier). J'ai installé également une autre version, avec un fichier par chapitre, mais elle n'est pas tout-à-fait à jour (version 3.23.33). De nombreux chapitres décrivent l'installation ou l'administration de la base. Les chapitres 7, 8 et 20 sont ceux qui portent sur l'utilisation de MySQL. La documentation a été traduite partiellement en français par Damien et mise en ligne par Nexen (merci à eux). On peut aussi lire un tutoriel sur PHP-MySQL en anglais sur le site Webmonkey.

Dans le cas du Web

MySQL peut être utilisé dans des scripts PHP, inclus dans des documents HTML ; ce qui est le cas le plus courant. Le site de Nexen donne d'excellents exemples d'applications Web réalisées au moyen de MySQL et PHP. Ces exemples sont téléchargeables. MySQL peut également être utilisé dans des scripts CGI ou autres.

Comptes

L'accès aux bases MySQL est contrôlé par des comptes et mots de passe. Ces comptes sont indépendants des comptes d'accès aux serveurs Unix du CICT, ainsi que des comptes servant au contrôle d'accès Web (grâce aux fichiers .htaccess en général). Ils sont gérés directement par MySQL, qui a une table d'utilisateurs, et les droits d'accès associés à chacun. MySQL gère des droits relativement complexes (se reporter à la documentation), et donne des droits précis à chaque entité "nom d'utilisateur depuis telle machine" (le serveur MySQL admet des demandes venant de clients distants, c'està-dire tournant sur d'autres machines). Tous les utilisateurs, humains ou programmes clients (PHP, CGI), commencent par se connecter à une base située sur un serveur (host), en précisant leur compte et le mot de passe associé. Dans la quasi totalité des cas, le client (PHP, CGI, ...) est sur la même machine que le serveur. Il faut alors se connecter au serveur localhost, et non www.cict.fr.

Ne pas confondre ces comptes MySQL et les comptes éventuels des utilisateurs d'applications Web. Un forum Web écrit en PHP peut être réalisé avec des scripts qui stockent les messages dans des tables d'une base MySQL. C'est toujours le même compte MySQL qui est utilisé dans ces scripts pour se connecter à la base associée à l'application (le compte MySQL et son mot de passe doivent être connus du programmeur PHP qui les met dans ses scripts). Mais une application telle qu'un forum doit généralement identifier ses utilisateurs avec comptes et mots de passe. Ces comptes sont alors spécifiques à l'application, et géré par elle, ils sont totalement indépendants du compte MySQL ; ils sont généralement stockés dans une table de la base. Les utilisateurs d'une application Web basée sur MySQL n'ont évidemment pas à connaître le compte MySQL associé à la base, mais seulement le compte que leur a attribué l'application. PhpMyAdmin est un cas particulier d'application qui permet à un gestionnaire de site Web de gérer sa base par une interface Web. Le gestionnaire se connecte alors grâce au compte MySQL.

Création de base

Pour disposer d'une base MySQL dans le cadre d'un service WWW, il est donc indispensable de demander la création d'une base et l'ouverture d'un compte MySQL associé avec un mot de passe. Le compte aura tous les droits sur la base MySQL. La plupart des applications PHP/MySQL qu'on peut télécharger fonctionnent ainsi, et il faut configurer un des fichiers de paramètres avec ces informations (dans certains cas, on peut le faire via une interface web). Pour des raisons de sécurité, dans certains cas, on peut utiliser deux comptes MySQL au lieu d'un seul (Un compte sert à gérer la base, c'est-à-dire créer les tables, les index, etc. et l'autre compte est utilisé par les scripts PHP et aura des droits réduits - SELECT, UPDATE, INSERT, DELETE).

Choisir un nom pour la base et le compte. Ces noms doivent comporter en préfixe le nom du site WWW, ou au moins quelques lettres le rappelant sans ambiguïté, de préférence en minuscules. Par exemple, le site www.umts.cict.fr demandera une base appelée umts, et s'il faut plusieurs bases, elles pourront avoir des noms préfixés par umts_. De même, le ou les comptes commenceront par le même préfixe. Les points et barres obliques sont interdits dans les noms des bases. Éviter les caractères spéciaux, se limiter aux caractères _ (souligné) et $. Faire une demande en m'envoyant un message. Préciser le nom de la base souhaitée, le ou les comptes demandés et les droits d'accès associés, ainsi que leurs mots de passe (sinon j'attribuerai des mots de passe aléatoires). Par défaut, la connexion à la base ne sera possible que depuis des programmes clients locaux (sur la même machine). L'utilisation au moyen d'un programme PHP ou CGI rentre dans ce cadre, car c'est le serveur HTTP qui se connecte au serveur MySQL, pas le navigateur.

Une fois la base créée et les comptes obtenus, vous pourrez gérer votre base au moyen d'une interface Web, grâce à une URL qui vous sera communiquée. Vous devrez fournir l'identificateur et le mot de passe MySQL. Vous pouvez ainsi créer les tables, les index, et faire toutes les opérations nécessaires à la gestion de la base, directement depuis un navigateur (grâce à l'excellent produit phpMyAdmin, écrit en PHP).

Pour les programmeurs

MySQL peut être utilisé au moyen des clients en mode ligne (sous telnet) fournis à l'installation (essentiellement mysql), ou de programmes clients écrits en C et utilisant l'interface de programmation, ou enfin de clients écrits en perl, et utilisant les modules DBI avec le driver DBD::mysql. Les interfaces C et perl sont décrites dans le chapitre 20 de la documentation. Le logiciel est installé sur la machine www.cict.fr dans /usr/local/mysql, il faut donc mettre /usr/local/mysql/bin dans son PATH pour utiliser mysql en mode ligne, ou donner le nom absolu de la commande. Exemple :
/usr/local/mysql/bin/mysql -u user -p nom-de-la-base
(le programme demande le mot de passe)
Auteur : Jean-Pierre Gallou
Mis à jour le 01/12/03
[Sommaire CICT] CICT
Vos commentaires sur ce serveur : www@cict.fr