Serveur Web de Base de Donnees mSQL / perl HOWTO
 par Oliver Corff,
 version francaiseNicolas Caillaud
 v0.1, 17 September 1997

 Ce  Mini HOWTO, tres largement inspire de l'article de Michael Schilli
 Gebunkert : Datenbankbedienung mit Perl und CGI, publie dans le  maga-
 zine  informatique  allemand  iX du mois d'aout 1997, explique comment
 construire une base de donnees client/server SQL sur le Web, utilisant
 HTML pour l'interface utilisateur.

 11..  AA pprrooppooss ddee ccee DDooccuummeenntt

 11..11..  LLeecctteeuurrss ccoonncceerrnneess

 Ce  document  devrait etre utile a ceux qui veulent mettre en place un
 serveur de base de donnees sur le Web, mais qui ne  savent  pas  quels
 logiciels  sont  necessaires,  ni  comment  les  installer. Il fournit
 toutes les informations utiles pour  faire  fonctionner  une  base  de
 donnees  SQL sur un serveur Web ; il _n_e rentre _p_a_s dans les details de
 la programmation CGI,  ni  n'explique  le  langage  SQL.  D'excellents
 ouvrages  existent  sur  ces  sujets,  et  le  but  de ce document est
 seulement de fournir  une  plate-forme  sur  laquelle  un  utilisateur
 pourra etudier la programmation CGI et le langage SQL.

 Pour  faire  tourner un systeme SQL sur une petite echelle (et non pas
 l'exemple  classique  du  systeme  de  reservation  d'une   importante
 compagnie  aerienne, ou le systeme de gestion de base de donnees d'une
 mission spatiale), il suffit d'avoir les  logiciels  decrits  dans  ce
 document,  et la documentation les accompagnant. Le manuel utilisateur
 de  msql  (la  base  de  donnees  decrite  ici)  fournit  suffisamment
 d'informations  sur SQL pour vous permettre de construire votre propre
 base.

 Le lecteur doit savoir comment recuperer des fichiers par ftp s'il n'a
 pas  les  CD-ROM  adequats,  et  comment  construire des executables a
 partir des fichiers sources. En tout etat de cause, toutes les  etapes
 decrites  dans  ce  document  ont  ete testees sur un systeme reel, et
 devraient fonctionner sur le systeme du lecteur.

 11..22..  CCoonnvveennttiioonnss ttyyppooggrraapphhiiqquueess

 Une commande utilisateur :

 # make install

 Affichage d'un programme :

      Program installed. Read README for details on how to start.

 Exemple de fichier de code :

 ______________________________________________________________________
 # Un commentaire
 char lettre;
 ______________________________________________________________________

 22..  IInnttrroodduuccttiioonn

 On peut raisonnablement supposer que des bases de donnees contenant de
 gros  volumes  de  donnees, ou un schema relationnel complique (comme,
 par exemple, une base lexicale pour un langage  parle),  doivent  etre
 accessibles a beaucoup d'utilisateurs a la fois. De meme, il doit etre
 possible d'utiliser diverses plates-formes materielles et  logicielles
 existantes  pour  construire le systeme final.  Pour reduire les couts
 de mise en oeuvre, une seule partie du systeme a reellement besoin  de
 puissance  :  le  serveur  de  la  base  de  donnees  ;  les  stations
 utilisateurs doivent seulement afficher des donnees  et  accepter  des
 commandes utilisateurs, mais le traitement proprement dit est fait sur
 une seule machine, justifiant ainsi le terme "base de donnees client -
 serveur".   De  plus,  l'interface  utilisateur  doit  etre  facile  a
 configurer, et requerir le moins de traitement possible sur le client.

 Les  elements  suivants  (protocoles,  logiciels  et plus generalement
 concepts) sont utilises pour construire  un  systeme  conforme  a  ces
 criteres :

    LLiinnuuxx
       est  le  systeme  d'exploitation. Il s'agit d'une implementation
       stable d'Unix, multi-utilisateurs,  multi-taches,  avec  support
       reseau  complet (TCP/IP entre autres). A part le cout du support
       et de la transmission, il est gratuit et  livre  sous  forme  de
       distributions,  qui  incluent  generalement  l'indispensable, du
       Systeme d'Exploitation lui-meme au traitement de  texte,  outils
       de   developpement  logiciel,  langage  de  script,  generateurs
       d'interfaces, etc.

    HHTTMMLL
       Le langage HTML (HyperText Markup  Language)  est  utilise  pour
       construire   des   interfaces  de  systemes  reseaux  comme  des
       Intranets, des serveurs Web (WWW). HTML est  extremement  simple
       et  peut etre genere a partir de n'importe quel editeur de texte
       ASCII.

    NNaavviiggaatteeuurrss
       Les navigateurs sont des applications en mode texte (par exemple
       Lynx) ou en mode graphique (par exemple Mosaic, Netscape, Arena,
       etc.) destinees a la lecture et a l'affichage de documents HTML.
       C'est le seul logiciel directement manipule par l'utilisateur de
       la base de donnees.  Grace aux  navigateurs,  on  peut  afficher
       differents  types  de  donnees (texte ou images), et communiquer
       avec des serveurs HTTP (voir plus loin), heberges par a peu pres
       n'importe  quel modele d'ordinateur sur lequel un navigateur est
       disponible.

    SSeerrvveeuurrss HHTTTTPP
       Un serveur HTTP fournit  l'acces  a  une  zone  de  l'ordinateur
       contenant  les  donnees  publiques  d'un reseau.  Il supporte le
       protocole   HTTP   et   fournit   l'information   demandee   par
       l'utilisateur.

    SSQQLL
       SQL  (Structured  Query Language) est un langage de manipulation
       de donnees dans une base relationnelle. Sa  grammaire  est  tres
       simple   et   constitue  un  standard  largement  supporte  dans
       l'industrie. Les bases de donnees SQL  sont  au  coeur  meme  du
       concept  classique  de  base  de  donnees  Client - Serveur. Des
       systemes SQL reconnus existent, comme Oracle, Informix,  etc.  ;
       on  trouve  aussi  des  bases  comme  msql,  mysql,  postgresql,
       pratiquement gratuites lorsqu'elles sont utilisees dans un cadre
       scolaire ou universitaire.

    CCGGII
       CGI  (Common Gateway Interface) est l'interface de programmation
       entre le systeme supportant les  donnees  (dans  notre  cas,  le
       systeme  SQL)  et  le  protocole  reseau  (HTML,  bien sur). Les
       interfaces CGI peuvent etre construites en utilisant beaucoup de
       langages  de  programmation,  dont  l'un des plus populaires est
       perl.

    PPeerrll
       Perl est un langage de  script  particulierement  puissant,  qui
       combine  les  avantages  du  C,  des  differents  shells, et des
       langages de manipulations de flux comme awk ou sed. Par exemple,
       perl  possede  de  nombreux  modules  de manipulation de base de
       donnees SQL.

 33..  PPrroocceedduurree dd''iinnssttaallllaattiioonn

 33..11..  MMaatteerriieell rreeqquuiiss

 Aucune supposition ne peut etre faite sur les besoins en materiel d'un
 serveur de base de donnees. Cela depend trop du nombre d'utilisateurs,
 du  type  d'application,  de  la  charge  du  reseau,  etc.  Dans   un
 environnement  comprenant  peu  d'utilisateurs  et  un  trafic  reseau
 faible, un 486 ou equivalent, avec 16 MO de memoire  vive,  peut  etre
 suffisant.  Linux,  le  systeme  d'exploitation,  est tres efficace en
 termes de ressources, et peut fournir suffisamment de  puissance  pour
 faire  tourner un grand nombre d'applications en meme temps. Bien sur,
 un processeur plus puissant et plus de memoire vive signifient plus de
 puissance, mais la quantite de memoire vive est plus importante que le
 processeur. Plus le systeme a de memoire vive, moins il est oblige, en
 cas  de besoin, de swapper les processus les plus gourmands en memoire
 sur le disque.

 Avec un systeme equipe de 32 MO de memoire vive et d'un bus  PCI,  les
 recherches et operations de tri peuvent etre faites sans avoir recours
 au(x) fichier(s) d'echange (swap), donnant d'excellents resultats.

 L'installation decrite dans cet article a ete faite sur un IBM  686  a
 133MHz,  avec 32 MO de memoire vive et un disque dur IDE de 1.2 GO. La
 suite  du  document  presente  les   etapes   indispensables   a   une
 installation complete.

 33..22..  LLooggiicciieell

 Les  logiciels decrits dans cet article sont disponibles sur Internet,
 ou sur CD-ROM. Les produits suivants sont utilises :

 +o  Distribution Red Hat 4.2, parue pendant l'ete 1997, disponible  sur
    CD-ROM  (Red  Hat  Linux  PowerTools : 6 CD-ROM complets et prets a
    etre  utilises)  ou  sur  Internet,   sur   le   site   de   RedHat
    <http://www.redhat.com> ;

 +o  Base  de  donnees  SQL  msql  :  disponible  en  deux versions. Les
    differences entre ces deux versions resident dans le nombre maximum
    de  transactions  supporte,  l'interface  d'administration, etc. La
    version la plus ancienne, 1.0.16,  est  disponible  sur  les  sites
    miroirs de Sunsite. L'executable au format ELF peut etre trouve sur
    Sunsite, ou sur CD-ROM (en l'occurrence le disque 4 de  l'InfoMagic
    Linux  Developper's Resource, ensemble de 6 CD-ROM, decembre 1996),
    ou chez InfoMagic. La version la plus  recente,  2.0.1,  peut  etre
    obtenue  directement  de la page Web d'Hughes, en Australie, ou sur
    de nombreux sites miroirs dans le monde ;

 +o  Perl du CPAM : The Comprehensive Perl Archive Network. Sur  le  CD-
    ROM WalnutCreek, ISBN 1-57176-077-6, mai 1997 ;

 +o  L'exemple  de  programme  CGI  de Michael Schilli, dans le magazine
    informatique iX d'aout 1997, pages 150-152, disponible par ftp.

 33..33..  IInnssttaallllaattiioonn ddee ll''OOSS

 Linux est installe a partir de la distribution Red Hat Linux 4.2. Pour
 reussir  a  l'installer,  la  machine  doit avoir un lecteur de CD-ROM
 accessible a partir de MSDOS, un lecteur de CD-ROM bootable,  ou  bien
 encore  une  disquette  de  boot preparee selon les instructions du CD
 Linux.

 Pendant l'installation, l'utilisateur peut selectionner et  configurer
 de  nombreux  paquetages  logiciels.  Il  convient de selectionner les
 suivants :

 +o  support du protocole TCP/IP

 +o  le serveur http Apache

 +o  le langage Perl

 +o  le systeme XWindow

 +o  les navigateurs Arena (graphique) et Lynx (mode texte).

 Tous ces paquetages sont fournis avec la distribution Linux.  Si  vous
 ne  les  installez  pas maintenant, vous pourrez le faire plus tard en
 utilisant glint, le gestionnaire graphique  de  paquetages  logiciels.
 Assurez-vous  d'etre  connecte comme utilisateur root lorsque vous les
 installerez.

 Il n'est pas du ressort  de  cet  article  de  decrire  l'installation
 reseau,  ni  la  procedure  d'initialisation.  Pour cela, consultez la
 documentation en ligne (pages de manuel, HTML,  texinfo)  et  imprimee
 (Bible Linux, etc.).

 La  procedure d'installation de Red Hat est tres au point et necessite
 peu d'interaction de la part de l'utilisateur,  en  dehors  des  choix
 courants  (les noms de machines, par exemple). Une fois l'installation
 terminee, le systeme est pret a tourner.

 L'installation de XWindow n'est pas obligatoire pour le serveur,  mais
 cela  rend  les  acces  locaux et les tests plus faciles. La procedure
 d'installation de XWindow peut etre conduite par differents programmes
 ;  XF86Setup  offre le plus de facilite d'auto-test, et demande peu de
 connaissance des menus details (la programmation de  l'horloge  video,
 etc.).  La  seule  contrainte  est  que  le  logiciel  puisse detecter
 l'adaptateur video.  Des cartes graphiques acceleratrices  bon  marche
 (comme  les  cartes  basees  sur  le  chip  Trio S64, avant le S64UV+)
 fonctionnent sans aucun probleme.

 A partir de maintenant, nous supposons que le systeme tourne,  et  que
 Apache,  Perl et XWindow ont ete installes avec succes. Nous supposons
 de meme que les fichiers et structure de  repertoires  sont  tels  que
 definis dans l'installation. Enfin, nous laissons le nom de la machine
 tel quel, et pour le  moment,  supposons  que  c'est  localhost.  Nous
 utiliserons  ce  nom  pour  tous les tests d'installation ; des que le
 systeme fonctionnera, le veritable nom pourra etre ajoute.  Notez  que
 l'installation  reseau  suppose  d'editer le fichier /etc/hosts, entre
 autres. Cela peut etre pris en charge par les outils  d'administration
 fournis a l'utilisateur root.

 33..44..  LLee sseerrvveeuurr HHTTTTPP

 Le  serveur  HTTP fourni avec Linux est Apache, httpd pour le systeme.
 La page de manuel (man httpd) explique comment installer  et  demarrer
 le  demon http (donc http_d) mais, comme il a ete indique plus haut, si
 l'installation s'est  bien  passee,  le  serveur  HTTP  doit  tourner.
 Verifiez  l'arborescence  des  repertoires : le repertoire /home/httpd
 doit exister, avec trois sous-repertoires : ../cgi-bin/, ../html/  and
 ../icons/.   Dans  ../html/, vous devez trouver un fichier index.html.
 Plus tard, nous modifierons  ou  remplacerons  ce  fichier  par  notre
 propre  index.html.  Toute  la  configuration  se fait dans le fichier
 /etc/httpd/conf/.  Le systeme est correctement preconfigure et ne doit
 pas etre modifie, si l'installation s'est faite sans probleme.

 33..55..  LLeess nnaavviiggaatteeuurrss

 Il  existe  trois  types  de  navigateurs disponibles sous Linux : les
 logiciels purement textuels, comme  Lynx,  des  logiciels  simples  et
 experimentaux  comme  Arena  (gratuit)  et  des logiciels commerciaux,
 comme Netscape (partagiciel !)  avec support de  Java  integre.  Alors
 que Lynx et Arena sont fournis avec Linux, Netscape doit etre recupere
 par d'autres sources. Netscape est disponible sous  forme  de  fichier
 binaire  precompile  pour  Linux  sur architecture ix86 et tourne "tel
 quel" une fois l'archive decompressee.

 33..55..11..  CCoonnffiigguurraattiioonn ddee LLyynnxx

 Une fois Lynx demarre, il cherche une 'URL par  defaut'  qui  n'existe
 pas  toujours  si  le systeme n'a pas d'acces Internet permanent. Pour
 changer  cette  URL  par  defaut  (ainsi  que  d'autres   details   de
 configuration),    l'administrateur    doit    editer    le    fichier
 /usr/lib/lynx.cfg. Ce fichier  est  gros,  environ  57000  octets,  et
 contient  des informations quelquefois contradictoires. Il etablit son
 propre repertoire dans /usr/local/lib. Au debut du fichier figure  une
 ligne  commencant par STARTFILE. Remplacez cette ligne par la suivante
 :  STARTFILE:http://localhost,  en  vous  assurant  qu'il  n'y  a  pas
 d'espace en trop :
 ______________________________________________________________________
 # STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html
 STARTFILE:http://localhost
 ______________________________________________________________________

 Apres  avoir  enregistre le fichier, Lynx doit maintenant ouvrir notre
 index.html s'il est lance sans argument.

 33..55..22..  CCoonnffiigguurraattiioonn dd''AArreennaa

 S'il est lance sans argument, Arena  recherche  son  URL  par  defaut.
 Cette URL est codee en dur dans l'executable, mais peut etre redefinie
 en utilisant la variable  d'environnement  WWW_HOME.  L'administrateur
 systeme  peut  placer la ligne suivante dans le fichier /etc/profile :
 WWW_HOME="http://localhost". Cette variable doit etre  exportee,  soit
 par  l'ajout  de la ligne adequate (export WWW_HOME), soit en ajoutant
 WWW_HOME a la ligne d'export courante :

 ______________________________________________________________________
 WWW_HOME="http://localhost"
 export WWW_HOME
 ______________________________________________________________________

 A la prochaine connexion, la nouvelle  URL  par  defaut  d'Arena  sera
 connue du systeme.

 33..55..33..  IInnssttaallllaattiioonn eett CCoonnffiigguurraattiioonn ddee NNeettssccaappee

 Netscape  etait  un  produit commercial, et n'est donc pas inclus dans
 les anciennes distributions Linux. Neanmoins,  il  est  telechargeable
 par  Internet,  ou  accessible  a  partir de certaines compilations de
 logiciels sur CD-ROM. Netscape est fourni sous la  forme  de  fichiers
 binaires  precompiles pour les plates-formes les plus courantes. Avant
 de   l'installer,   il   est   utile   de    creer    le    repertoire
 /usr/local/Netscape,  dans lequel l'archive sera decompactee. Tous les
 fichiers doivent rester a cette place (sauf  la  bibliotheque  Java  :
 suivez  les instructions du fichier README fourni avec les binaires de
 Netscape),  et  il  suffira  de  creer   un   lien   symbolique   avec
 /usr/local/bin par la commande :

 # ln -s /usr/local/Netscape/netscape .

 depuis le repertoire /usr/local/bin/.

 Netscape  est  maintenant  pret a etre utilise, et peut etre configure
 par le menu "Options". Dans "General Preferences", il y  a  un  onglet
 intitule  "Appearance",  avec un champ de saisie "Home Page Location".
 Tapez http://localhost, et n'oubliez pas de  sauvegarder  les  options
 (par  le  menu "Options" -- "Save Options") avant de quitter Netscape.
 Au prochain demarrage, Netscape presentera la page d'accueil d'Apache.

 33..66..  LLeess nnaavviiggaatteeuurrss aavveecc AAppaacchhee

 Faites maintenant le premier test d'Apache avec un navigateur : lancez
 simplement l'un des navigateurs disponibles, et il affichera  la  page
 d'accueil  Apache  :  Red  Hat Linux Web Server. Cette page indique la
 localisation  des  fichiers  et   d'autres   informations   concernant
 l'installation  du  serveur  http.   Si  cette  page ne s'affiche pas,
 verifiez que les fichiers cites plus haut sont bien en place et que la
 configuration  du  navigateur  est  correcte.  Fermez  les fichiers de
 configuration avant de demarrer de nouveau le navigateur. Si tous  les
 fichiers  sont  installes  et  que  le  navigateur semble correctement
 configure, examinez la configuration du reseau.  Ou  bien  le  nom  de
 votre   machine   est   different   de   celui  specifie  lors  de  la
 configuration, ou bien la configuration reseau n'est pas correcte.  Il
 est  particulierement  important  que /etc/hosts contienne au moins la
 ligne suivante :

 ______________________________________________________________________
 127.0.0.1                     localhost localhost.localdomain
 ______________________________________________________________________

 qui suppose que vous pouvez vous connecter localement. Vous pouvez  le
 verifier  en lancant une commande reseau qui reclame un nom de machine
 comme argument, comme telnet localhost (en supposant que  telnet  soit
 installe).  Si  cela  ne  fonctionne pas, la configuration reseau doit
 etre controlee avant de continuer l'intallation.

 33..77..  LLaa BBaassee ddee ddoonnnneeeess eett ssoonn iinnssttaallllaattiioonn

 L'installation  de  la  base  de  donnees  demande  a  peine  plus  de
 preparation  que  les  etapes  precedentes. Il y a quelques moteurs de
 base de donnees SQL disponibles, avec des contraintes d'administration
 et d'execution differentes ; l'un des plus simples est msql, dit aussi
 "Mini-SQL", ecrit par David Hughes.  Msql  est  un  "partagiciel".  En
 fonction de la version utilisee, les sites commerciaux sont redevables
 de 250 US$, voire plus, les utilisateurs prives d'au moins 65 US$,  et
 seules  les  institutions  scolaires  et  les  entreprises  a  but non
 lucratif peuvent utiliser ce logiciel librement. Les termes exacts des
 droits  figurent  dans  la  documentation  de  la base de donnees. Les
 elements donnees ici ne sont qu'indicatifs.

 Tout d'abord, voici en quelques mots pourquoi l'auteur a choisi  msql.
 Il y a tout d'abord une experience personnelle.  Alors qu'il cherchait
 une base de donnees, l'auteur a trouve que msql etait la plus facile a
 installer et a maintenir, et qu'elle couvrait un ensemble suffisamment
 large du langage SQL pour convenir a une utilisation classique.  C'est
 seulement  en ecrivant ces lignes que l'auteur a decouvert cette eloge
 dans la DBI FAQ d'Alligator Descartes (la FAQ interface perl aux bases
 de donnees) :

      Du  point de vue de l'auteur, si le volume de donnees est relativement
      faible, les tables contenant moins d'1 million de lignes,  avec  moins
      de 1000 tables dans une base donnee, alors msql constitue une solution
      parfaitement acceptable. Cette base de donnees est  tres  bon  marche,
      extraordinairement solide, et offre un excellent support, ...

 Mqsl  est  disponible en deux versions, msql-1.0.16 et msql-2.0.1, qui
 different par leurs performances (cela  n'est  sensible  que  sur  des
 petits  projets) et les logiciels les accompagnant (la version la plus
 recente dispose de plus d'outils, de son  propre  langage  de  script,
 etc.).   Nous   decrirons   les  deux  versions  de  msql,  car  leurs
 installations se distinguent par quelques aspects.

 33..77..11..  IInnssttaallllaattiioonn ddee mmssqqll--11..00..1166

 Msql est disponible sous forme de sources et de  binaires  precompiles
 au format ELF. L'utilisation des binaires ELF rend l'installation plus
 simple,  car  l'archive  msql-1.0.16.ELF.tgz  contient  une  copie  de
 l'arborescence d'installation, pour que les repertoires soient generes
 correctement lors du decompactage dans le repertoire /.

 Si vous decidez de compiler msql-1.0.16 vous-meme, et que vous  voulez
 utiliser  le  paquetage MsqlPerl plutot que l'interface DBI (voir plus
 loin  une  presentation  detaillee  des  difference  entre  les   deux
 strategies),  alors attendez-vous a ce que MsqlPerl rapporte, lors des
 tests  d'installation,  des  erreurs  dans  msql.  Dans  ce  cas,  une
 correction  sera  necessaire, expliquee dans la documentation MsqlPerl
 (fichier patch.lost.tables). En  l'occurrence,  il  faut  inclure  les
 trois  lignes  suivantes dans msqldb.c, apres la ligne 1400, contenant
 entry->def = NULL; :

      *(entry->DB) = 0;
      *entry->table) = 0;
      entry->age = 0;

 Cette partie de code doit maintenant etre la suivante :

 ______________________________________________________________________
       freeTableDef(entry->def);
       safeFree(entry->rowBuf);
       safeFree(entry->keyBuf);
       entry->def = NULL;
       *(entry->DB) = 0;
       *entry->table) = 0;
       entry->age = 0;
 ______________________________________________________________________

 La  compilation  de  msql  comprend  plusieurs  etapes.  Apres   avoir
 decompacte   l'archive   contenant  les  sources,  il  faut  creer  un
 repertoire destination. Cela se fait avec la commande suivante :

 # make target

 Si tout se passe bien, le systeme repond avec

      Build of target directory for Linux-2.0.30-i486 complete

 Vous pouvez maintenant aller dans le  repertoire  que  vous  venez  de
 creer, et taper d'abord la commande

 # ./setup

 La  sequence  ./  est  necessaire pour s'assurer que la commande setup
 executee est bien celle du repertoire courant, et non  une  autre  qui
 aurait  le  meme  nom.  On va maintenant vous poser quelques questions
 concernant le repertoire source,  et  la  localisation  du  repertoire
 d'installation.  Une  fois  que  ces questions ont eu leur reponse, le
 systeme  lance  quelques  tests  pour  verifier  que   les   logiciels
 necessaires  (compilateurs,  utilitaires  divers, etc.) sont presents,
 puis finalement repond

      Ready to build mSQL.

      You may wish to check "common/site.h" although the defaults should  be
      fine. When you're ready, type "make all" to build the software

 Il faut alors taper

 # make all

 Si tout fonctionne comme prevu, nous devons alors lire :

      make2 : leaving directory '/usr/local/Minerva/src/msql' <-- msql done

      Make of mSQL complete.  You should now install mSQL using make install

      NOTE : mSQL cannot be used free of charge at commercial sites.  Please
      read the doc/License file to see what you have to do.

      make1 : Leaving directory '/usr/local/Minerva/src'

 Tous  les binaires doivent etre accessibles, par exemple en creant des
 liens  symboliques  dans  /usr/local/bin/.   Deplacez-vous   dans   ce
 repertoire et tapez la commande

      # ln -s /usr/local/Minerva/bin/* .

 apres quoi les liens sont correctement construits.

 33..77..22..  TTeesstt ddee  mmssqqll--11

 Apres   l'installation,  il  est  maintenant  possible  de  tester  le
 fonctionnement de la base de donnees. Avant toutes choses, le  serveur
 doit  etre  demarre. L'administrateur systeme, grace aux privileges du
 compte utilisateur root, lance la commande

 # msqld &

 (n'oubliez pas d'ajouter le &, sinon msql ne tournerait pas  en  tache
 de fond.), apres quoi le message suivant doit apparaitre :

      mSql Server 1.0.16 starting ...

      Warning : Couldn't open ACL file : No such file or directory
      Without an ACL file global access is Read/Write

 Ce  message  indique  que  tout  fonctionne  correctement,  a  part la
 configuration des  droits  d'acces.  Pour  le  moment,  il  suffit  de
 demarrer le serveur msql a partir d'un shell, mais vous pourrez par la
 suite vouloir le demarrer automatiquement  au  lancement  du  systeme.
 Cette  commande  doit  alors  etre  ajoutee  dans  un  des  scripts du
 repertoire rc.d. Seul l'administrateur systeme peut lancer la premiere
 commande typique d'une base de donnees (creation de la premiere table)
 :

 # msqladmimn create inventur

 msql repond alors Database "inventur" created. Comme preuve supplemen-
 taire,   vous  pouvez  constater  que  le  repertoire  /usr/local/Min-
 erva/msqldb/ contient maintenant le repertoire ../inventur, vide  pour
 l'intant.  Vous  pouvez  manipuler  la  nouvelle  base avec les outils
 d'administration, qui sont decrits en  detail  dans  la  documentation
 msql.

 33..77..33..  IInnssttaallllaattiioonn ddee mmssqqll--22..00..11

 Une  nouvelle  version,  plus  puissante, du serveur mSQL d'Hugues est
 maintenant  disponible.  Son  installation  est  un  peu   differente.
 Installer  msql-2  de  zero  necessite  les  etapes  suivantes. Copiez
 l'archive a l'endroit  ou  vous  souhaitez  l'installer,  par  exemple
 /usr/local/msql-2/, puis decompressez-la :

 # tar xfvz msql-2.0.1.tar.gz

 Positionnez vous a la racine de l'arborescence d'installation et tapez

 # make target

 Placez vous dans le repertoire targets et verifiez le  type  de  votre
 machine.  Il  devrait  y avoir un nouveau sous-repertoire Linux-_(_v_o_t_r_e
 _v_e_r_s_i_o_n_)_-_v_o_t_r_e _c_p_u_). Allez dans ce repertoire et  lancez  l'utilitaire
 de configuration qui s'y trouve :

 # ./setup

 Il  y  a aussi un fichier site.mm qui peut etre edite. Peut-etre avez-
 vous deja utilise le repertoire /usr/local/Minerva/ et  souhaitez-vous
 le  conserver intact ? Dans ce cas, changez la ligne INST_DIR=... pour
 indiquer le  repertoire  destination  qui  vous  convient.  Sinon,  ne
 changez rien.

 Maintenant, vous pouvez contruire la base de donnees :

 # make
 # make install

 Si tout marche bien, vous verrez ce message :

      [...]

      Installation of mSQL-2 complete.

      *********
      **  This is the commercial, production release of mSQL-2.0
      **  Please see the README file in the top directory of the
      **  distribution for license information.
      *********

 Une   fois  que  tout  est  installe  correctement,  vous  devez  vous
 preoccuper de certains details d'administration.  C'est  ici  que  les
 differences  avec  msql-1 commencent. D'abord, un utilisateur msql est
 cree, et est responsable de l'administration de la base de donnees.

 # adduser msql

 Maintenant, vous devez changer les proprietaire et groupe de tous  les
 fichiers dans le repertoire de mSQL en tapant :

 # cd /usr/local/Minerva
 # chown -R msql:msql *

 Enfin,   vous  pouvez  creer  les  liens  symboliques  pour  tous  les
 executables de la base de donnees dans /usr/local/bin/ en  lancant  la
 commande :

 # ln -s /usr/local/Minerva/bin/* .

 33..77..44..  TTeesstt ddee mmssqqll--22

 Demarrez maintenant le serveur de la base en tapant la commande msql2d
 &, vous devriez obtenir cette reponse :

      Mini SQL Version 2.0.1
      Copyright (c) 1993-4 David J. Hugues
      Copyright (c) 1995-7 Hughes Technologies Pty. Ltd.
      All rights reserved.

           Loading configuration from '/usr/local/Minerva/msql.conf'.
           Server process reconfigured to accept 214 connections.
           Server running as user 'msql'.
           Server mode is Read/Write.

      Warning : no ACL file. Using global read/write access.

 Tout est parfait. La base est compilee et installee, et  nous  pouvons
 maintenant  continuer  avec  les  modules perl puisqu'ils demandent la
 presence d'un serveur de base de donnees operationnel pour les  tests.

 Au  fait,  ce  moment  est  bien choisi pour imprimer la documentation
 complete livree avec msql-2.0.1 :

 # gzip -d manual.ps
 # lpr manual.ps

 Nous pouvons maintenant poursuivre la mise en  place  des  interfaces,
 mais  il est judicieux de laisser le nouveau serveur SQL tourner: cela
 ne fera que faciliter les tests des bibliotheques d'interface.

 33..88..  LLeess ddiiffffeerreenntteess IInntteerrffaacceess :: DDBBII//mmSSQQLL,, MMssqqllPPeerrll,, eett LLiittee

 Une  phrase  frequemment citee dans le Camel Book (la documentation de
 reference de perl) affirme  qu'il  y  a  toujours  plusieurs  manieres
 d'obtenir un resultat avec perl. Helas, cela est vrai aussi avec notre
 application. Il y a trois methodes pour acceder a une base de  donnees
 msql  par  l'intermediaire  de  CGI.  Tout d'abord, la question est de
 savoir s'il faut ou non utiliser perl. Dans le  premier  cas  (suppose
 dans   ce  document),  il  y  a  encore  le  choix  entre  deux  types
 completement differents d'interface. Si nous n'employons pas perl,  il
 reste  la  solution  d'employer  le  langage  de script propre a msql,
 appele Lite, qui est relativement proche du langage C, en plus simple.

 33..88..11..  DDBBII eett DDBBDD--mmSSQQLL

 Au  moment  de  la  redaction  de  ce document, c'est l'utilisation de
 l'interface generique de base de donnees appelee DBI qui est preferee.
 DBI  a quelques avantages. Elle fournit un controle d'acces standard a
 de nombreuses base  de  donnees  commerciales,  et  ce  avec  le  meme
 ensemble  de  commandes.  La  base de donnees en fonctionnement sur un
 systeme donne est  alors  interrogee  par  une  interface  qui  masque
 efficacement   les  caracteristiques  specifiques  de  cette  base  au
 programmeur.  Ainsi,  DBI  fournit  une   passerelle   pratique   pour
 travailler  avec differentes bases de differents auteurs. Avec un seul
 script, il est possible de communiquer avec plusieurs bases de donnees
 differentes.  Le lecteur interesse peut consulter la DBI-FAQ pour plus
 de details. Il y a cependant un inconvenient : l'interface DBI est  en
 cours  de  developpement et aligne les versions a une allure galopante
 (quelques fois avec plusieurs mises a jour par  mois).  De  meme,  les
 pilotes  de  bases  de donnees sont frequemment mis a jour, et peuvent
 etre bases sur des versions specifiques  de  l'interface  de  base  de
 donnees. Les utilisateurs faisant une premiere installation doivent se
 limiter aux numeros de version donnes dans ce document,  car  d'autres
 versions  peuvent  poser des problemes de compilation et de test, dont
 la resolution n'est pas une affaire de neophyte.

 33..88..22..  MMssqqllPPeerrll

 MsqlPerl est une bibliotheque  permettant  l'acces  direct  a  msql  a
 partir  de  programmes  ecrits en perl. Elle n'utilise pas l'interface
 DBI et est tres compacte. Bien qu'elle fonctionne tres bien  avec  les
 deux  versions  de  msql,  son usage n'est pas conseille par rapport a
 l'interface DBI, qui tend a  se  generaliser.  Neanmoins,  suivant  le
 systeme,  c'est  une alternative interessante, car la bibliotheque est
 petite et facile a installer. Notamment, il y a  moins  de  dependance
 par  rapport aux numeros de version que celles constatees entre DBI et
 les pilotes de base de donnees.

 33..88..33..  LLee llaannggaaggee ddee ccoommmmaannddee pprroopprree ddee mmssqqll :: LLiittee

 Enfin, msql-2 fournit son  propre  langage  de  commande  :  Lite.  Ce
 langage   est   proche   du  C,  assaini  et  complete  avec  quelques
 fonctionnalites du type 'shell' (d'une  certaine  maniere,  c'est  une
 version  specialisee  de  perl).  Lite  est  un langage simple et bien
 documente dans le manuel msql-2. Le paquetage msql-2  livre  aussi  en
 exemple un application utilisant Lite.

 Nous  ne  decrirons pas ici Lite, car il est trop specifique de msql-2
 (et deja documente !), et parce que le  lecteur  est  cense  avoir  un
 certain  interet  pour perl, et en avoir de bonnes notions. Neanmoins,
 il est recommande d'y jeter un coup  d'oeil  :  il  peut  s'averer  la
 solution  ideale dans un environnement ne mettant en oeuvre que msql-2
 (en supposant donc qu'aucune autre base n'est utilisee),  grace  a  sa
 simplicite.

 33..99..  LLaa ssoolluuttiioonn ssttaannddaarrdd :: DDBBII eett DDBBDD--mmssqqll

 Nous  supposons  que  perl  a ete installe pendant la configuration du
 systeme, ou en utilisant le gestionnaire de paquetage  mentionne  plus
 haut.  Aucun  detail supplementaire ne sera donne ici. Neanmoins, nous
 allons d'abord tester si notre version de perl est recente :

 # perl -v

 perl doit repondre avec le message suivant :

      This is perl, version 5.003 with EMBED
              Locally applied patches:
                SUIDBUF - Buffer overflow fixes for suidperl security

              built under linux at Apr 22 1997 10:04:46
              + two suidperl security patches

      Copyright 1987-1996, Larry Wall
      [...]

 Jusque la, tout va bien. L'etape suivante  consiste  a  installer  les
 bibliotheques  generales  perl  pour  les  bases  de donnees (DBI), le
 pilote msql (DBD-mSQL) et CGI. Le pilote CGI est necessaire dans  tous
 les cas. Les archives suivantes sont utilisees :

 1. DBI-0.8.1.tar.gz

 2. DBD-mSQL-0.65.tar.gz

 3. CGI.pm-2.31.tar.gz (ou plus recent>

 Une  precision  est necessaire ici pour les debutants : le test decrit
 ici  fonctionne  tres  bien  a  condition  d'utiliser  _e_x_a_c_t_e_m_e_n_t  les
 versions   recommandees  de  logiciels  ;  des  combinaisons  d'autres
 versions peuvent echouer a un moment ou a un autre.  Le  deboguage  de
 combinaisons de versions incompatibles est une affaire de specialistes
 des interfaces d'appel. Quelquefois, seule une methode change  de  nom
 alors  qu'elle  fait la meme chose, mais d'autres fois, les structures
 internes changent de maniere significative.  Donc,  encore  une  fois,
 tenez-vous  en  aux numeros indiques de versions si vous ne voulez pas
 de probleme, et ce meme si vous constatez que les versions ont  encore
 change  dans  l'intervalle. Il est normal de voir les versions evoluer
 rapidement, et vous devez vous attendre a des problemes en  installant
 d'autres versions que celles conseillees ici.

 Il  est tres important que le pilote de base pour mSQL (DBD-mSQL) soit
 installe _a_p_r_e_s l'interface generique DBI.

 Nous commencons par creer le repertoire _/_u_s_r_/_l_o_c_a_l_/_P_e_r_l_M_o_d_u_l_e_s car  il
 est  important  de  conserver l'arborescence initiale de perl intacte.
 Nous pourrions aussi choisir un autre nom de  repertoire  ;  cela  n'a
 strictement  aucune  importance, malheureusement aucune recommandation
 n'est faite dans les fichiers README des differents modules perl.  Une
 fois    recopiees    les    archives    precedemment    citees    dans
 /usr/local/PerlModules, nous les decompactons en tapant

      # tar zxvf [archive-file]

 pour chacune des trois archives. N'oubliez pas d'indiquer le vrai  nom
 de  l'archive  a  la  commande tar. Le processus d'installation de ces
 trois archives est tres  standard  ;  seuls  les  messages  de  sortie
 concernant les etapes les plus importantes sont reproduits ici.

 33..99..11..  IInnssttaallllaattiioonn ddee ll''iinntteerrffaaccee ppeerrll ddee bbaassee ddee ddoonnnneeeess DDBBII

 L'interface de la base de donnees doit avoir ete  installee  avant  le
 pilote  specifique a la base. Le decompactage de l'archive DBI cree le
 repertoire  /usr/local/PerlModules/DBI-0.81/.  Placez-vous   dans   ce
 repertoire.  Il  y  a  un fichier README (que vous devriez lire) et un
 makefile specifique pour perl. Maintenant, tapez la commande

 # perl Makefile.PL

 Le systeme doit repondre avec un long message dont la partie  la  plus
 importante figure ci-dessous :

      [...]
      MakeMake (v5.34)
      Checking if your kit is complete ...
      Looks good
           NAME => q[DBI]
           PREREQ_PM => { }
           VERSION_FROM => q[DBI.pm]
           clean => { FILES=>q[$(DISTVNAME) /] }
           dist => { DIST_DEFAULT=>q[clean distneck disttest [...]
      Using PERL=/usr/bin/perl

      WARNING! By default new modules are installed into your 'site_lib' directories. Since site_lib directories
      come after the normal library directories you MUST delete old DBI files and directories from your 'privlib'
      and 'archlib' directories and their subdirectories.

      Writing Makefile for DBI

 Comme le programme l'indique, tout va bien, et nous pouvons poursuivre
 avec l'etape suivante :

 # make

 Si aucun message d'erreur n'apparait (les traces detaillees  affichees
 sur  l'ecran  _n_e sont _p_a_s un message d'erreur), nous pouvons tester la
 librairie nouvellement installee avec la commande

 # make test

 Sur l'affichage, guettez les lignes suivantes  (vous  pouvez  toujours
 revenir en arriere avec la touche [Shift]-[PgUp]) :

      [...]
      t/basics............ok
      t/dbidrv............ok
      t/examp.............ok
      All tests successful.
      [...]
      DBI test application $Revision: 1.20 $
      Switch: DBI-0.81 Switch by Tim Bunce, 0.81
      Available Drivers: ExampleP, NullP, Sponge
      ExampleP: testing 2 sets of 5 connections:
      Connecting... 1 2 3 4 5
      Disconnecting...
      Connecting... 1 2 3 4 5
      Disconnecting...
      Made 10 connections in 0 seconds ( 0.00 usr  0.00 sys = 0.00 cpu)

      test.pl done

 La  derniere  etape est l'installation de tous les fichiers dans leurs
 repertoires respectifs. La commande suivante s'en occupe :

 # make install

 Il n'y a plus rien a faire.  Si  pour  quelque  raison  que  se  soit,
 l'installation  echoue  et  que vous vouliez la recommencer, n'oubliez
 pas de taper d'abord la commande

 # make realclean

 Cela  supprimera  toutes  les  traces  laissees  par   la   precedente
 installation.  Vous  pouvez  aussi supprimer les fichiers installes en
 copiant le contenu de l'ecran (montre ici abrege)

      Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.h
      Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.so
      Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bs
      [...]
      Writing /usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlist
      Appending installation info to /usr/lib/perl5/i386-linux/5.003/perllocal.po

 dans un fichier, en remplacant Installing par rm. Si vous avez appelle
 ce fichier uninstall vous pouvez alors taper

 # . uninstall

 ce qui effacera les derniers fichiers installes.

 33..99..22..  LLee ppiilloottee mmssqqll ddee ppeerrll :: DDBBDD--mmSSQQLL

 Le  pilote  msql  pourra  etre  installe seulement _a_p_r_e_sl'installation
 reussie de l'interface perl generique de base de donnees.

 Les etapes de l'installation  sont  pratiquement  les  memes  que  les
 precedentes, donc commencez par taper

 # perl Makefile.PL

 La,  le  systeme doit repondre avec un avertissement vous demandant de
 lire la  documentation  accompagnant  le  logiciel.   Ensuite,  il  va
 detecter  ou  se  trouve  msql,  et  vous  demande quelle version vous
 utilisez :

 $MSQL_HOME not defined. Searching for mSQL...
 Using mSQL in /usr/local/Hughes

 -> Which version of mSQL are you using [1/2]?

 Entrez la version correcte. Quelques lignes de texte suivent.  Guettez
 les suivantes :

      Splendid! Your mSQL daemon is running. We can auto-detect your configuration.

      I've auto-detected your configuration to be running on port: 1114

 Vous pouvez maintenant tester le pilote en tapant

 # make test

 Encore  une  fois,  plusieurs  lignes  sont  affichees.  Si  elles  se
 terminent par

      Testing: $cursor->func( '_ListSelectedFields' )/ This will fail.
           ok: not a SELECT in msqlListSelectedFields!
      Re-testing: $dbh->do( 'DROP TABLE testaa' )
           ok
      *** Testing of DBD::mSQL complete! You appear to be normal! ***

 tout va bien, et vous pouvez lancer l'installation du pilote en tapant

 # make install

 Vous etes pret a continuer et pouvez sauter le paragraphe suivant.

 33..1100..  LL''iinntteerrffaaccee MMssqqllPPeerrll

 Si  vous decidez d'utiliser l'interface globale MsqlPerl, aucun pilote
 particulier n'est necessaire ;  seule  l'archive  MsqlPerl-1.15.tar.gz
 est utilisee, puisque, comme cela a deja ete dit, MsqlPerl fournit une
 interface directe entre perl et le serveur de base  de  donnees,  sans
 utiliser l'interface DBI. L'installation et le test sont tres faciles.

 Apres avoir tape perl Makefile.PL, l'utilitaire make peut etre active.
 Vous  devez  d'abord  indiquer  ou  se  trouve  mSQL.  S'il  est  dans
 /usr/local/Minerva/, la reponse par defaut peut etre validee.

 Ensuite, tapez make test. Avant cela, vous devez vous assurer qu'il  y
 a  bien une base nommee test et que vous avez les droits d'ecriture et
 lecture dessus. Cela peut etre fait avec

 # msqladmin create test

 33..1111..  BBiibblliiootthheeqquuee CCGGII ddee ppeerrll

 L'installation de l'interface CGI de perl est la plus simple des trois
 etapes. Lancez les commandes dans l'ordre donne, et voila :

 # perl Makefile.PL
 # make
 # make install

 Contrairement  aux autres pilotes, cette interface n'a pas d'option de
 test (# make test), alors que les autres modules _d_o_i_v_e_n_t  etre  testes
 dans tous les cas.

 Un  sous-repertoire  avec  les  exemples  CGI est cree. Vous pouvez en
 copier le contenu vers /home/httpd/cgi-bin/ et utiliser un  navigateur
 pour jouer avec les scripts.

 33..1122..  CChheecckk--lliisstt ddee ll''iinnssttaallllaattiioonn

 Nous avons effectue les etapes suivantes, dans cet ordre:

 1. Installation de Linux avec support reseau

 2. Installation d'un serveur http, par exemple Apache

 3. Installation d'un navigateur, par exemple Arena, Lynx ou Netscape

 4. Installation d'un serveur SQL, par exemple msql

 5. Installation d'une interface perl SQL convenable

 6. Installation des fichiers CGI

 A  la fin, vous devez faire un peu de menage. Toutes les arborescences
 des sources msql et les  modules  perl  peuvent  etre  detruites  sans
 inconvenient  (cependant,  vous  ne  devriez pas detruire les fichiers
 archives !) puisque les binaires et la documentation  sont  maintenant
 dans des repertoires differents.

 44..  UUnn eexxeemmppllee ddee BBaassee ddee DDoonnnneeeess

 Apres   avoir   termine  la  procedure  d'installation,  nous  pouvons
 maintenant lancer l'application donnee en exemple. En fonction  de  la
 version  de  msql  installee  et  de  l'interface  perl utilisee, nous
 devrons modifier un peu ce programme.

 Tout   d'abord,   le   fichier   index.html,   dans   le    repertoire
 /home/httpd/html/   doit   etre  modifie  pour  appeler  l'application
 exemple. Nous pouvons mettre notre  base  (que  nous  pouvons  appeler
 database.cgi ou inventur.cgi) dans /home/httpd/html/test.

 Nous  ajoutons  une  ligne  parmi  les  suivantes  dans  index.html (a
 choisir, bien sur, en fonction des choix d'installation) :

 ______________________________________________________________________
 <LI>Test the <A HREF="test/database.cgi">Database, DBI:DBD-mSQL style!</A>
 <LI>Test the <A HREF="test/inventur.cgi">Database, MsqlPerl style!</A>
 ______________________________________________________________________

 Vous ne devez  en  principe  choisir  qu'une  seule  des  deux  lignes
 precedentes,  mais  vous  pouvez, si vous avez installe les deux types
 d'interface, laisser les deux  lignes  telles  quelles.  Vous  pourrez
 alors comparer les performances.

 44..11..  AAddaappttaattiioonn ddee ll''eexxeemmppllee ddee ssccrriipptt ppoouurr MMssqqllPPeerrll

 Il est necessaire d'indiquer, dans notre exemple de script, qu'il faut
 utiliser l'interface MsqlPerl.  La  modification  doit  etre  faite  a
 plusieurs  endroits.  D'abord, au debut du fichier, il faut changer la
 clause use :

      # use DBI;                 # Generisches Datebank-Interface
      use Msql;

 Ensuite, a la ligne 27, MsqlPerl n'exige pas la  mention  d'un  pilote
 particulier  :

      # $dbh = DBI->connect($host, $database, '', $driver) ||
      $dbh = Msql->connect($host, $database) ||

 A  partir  de  la  ligne 33 et pour tout le script, changez toutes les
 occurrences de do par query :

      # $dbh->do("SELECT * FROM hw") || db_init($dbh);
      $dbh->query("SELECT * FROM hw") || db_init($dbh);

 Enfin, dans le  laius  MsqlPerl,  la  ligne  207  peut  etre  mise  en
 commentaire :

      # $sth->execute || msg("SQL Error: $sth->errstr);

 De  plus,  il peut etre necessaire de remplacer tout les appels errstr
 tels que celui de la ligne precedente par errmsg. Cela  depend  de  la
 version utilisee.

 Apres ces modifications, le script doit tourner correctement.

 44..22..  AAddaappttaattiioonn ddee ll''eexxeemmppllee ppoouurr mmssqqll--22

 La  syntaxe  SQL  a  subi  des  changements durant le developpement de
 msql-2.  Le  script  original   n'executera   pas   les   instructions
 d'initialisation  de  la  table,  aux lignes 45 -- 48. Le modificateur
 primary key n'est plus compris par msql-2, et doit etre supprime :

        $dbh->do(<<EOT) || die $dbh->errstr;   # Neue Personen-Tabelle
            create table person (
      # We do not need the 'primary key' modifier anymore in msql-2!
      #           pn    int primary key,    # Personalnummer
                  pn    int,                # Personalnummer
                  name  char(80),           # Nachname, Vorname
                  raum  int                 # Raumnummer
                )
      EOT
        $dbh->do(<<EOT) || die $dbh->errstr;   # Neue Hardware-Tabelle
            create table hw (
      # We do not need the 'primary key' modifier anymore in msql-2!
      #           asset   int primary key,    # Inventurnummer
                  asset   int,                # Inventurnummer
                  name    char(80),           # Bezeichnung
                  person  int                 # Besitzer
                )
      EOT

 Malheureusement,  ce  script  particulier  acceptera  maintenant   les
 enregistrements   avec   des   numeros   personnels  identiques  ;  le
 modificateur msql-1 primary key etait justement la pour  eviter  cela.
 La documentation msql2 indique comment utiliser la clause CREATE INDEX
 pour creer des entrees uniques.

 55..  CCoonncclluussiioonn

 Si vous avez installe msql-2 sur votre systeme, vous  pouvez  regarder
 les  exemples  de programmes ecrits avec Lite, le langage de script de
 msql-2.

 Chaque  version  de  msql  est  livree  avec   un   minimum   d'outils
 d'administration,  qui permettent a l'utilisateur de creer et detruire
 des tables (msqladmin) et  d'examiner  la  structure  de  la  base  de
 donnees (relshow).

 Msql   deuxieme  generation  (c'est-a-dire  msql-2)  possede  quelques
 utilitaires  de  plus  :  msqlimport  et  msqlexport.  Ils  permettent
 d'inserer  et  d'extraire  des  donnees de la base SQL, a partir de et
 vers des fichiers. Ces utilitaires peuvent etre utilises pour, _e_n  _u_n_e
 _s_e_u_l_e  _p_a_s_s_e,  charger ou extraire de grandes quantites de donnees, et
 cela sans que l'utilisateur ait a se soucier d'ecrire _u_n_e _s_e_u_l_e  ligne
 de perl, de SQL, ni meme de n'importe quoi.

 Si  vous  voulez ecrire votre propre script perl de gestion de base de
 donnees,  vous  trouverez  suffisamment  d'aide  dans   les   fichiers
 d'exemples,  et  dans  la  volumineuse  documentation en ligne qui est
 livree avec le module DBI.

 Dans tous les cas, vous etes maintenant prets a  publier  vos  donnees
 sur votre reseau, et meme sur le Web.