<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
  <HEAD>
    <META name="generator" content="HTML Tidy, see www.w3.org">
    <!-- this stylesheet will later on be added by lfparser automatically: -->
<STYLE type="text/css">
<!--
  pre { font-familiy:monospace,Courier }
  p.code { width:80%; alignment:center; background-color:#aedbe8; border-style:no ne; border-width:medium; border-color:#aedbe8; padding:0.1cm ; text-align:left }
-->
</STYLE>
  </HEAD>

  <BODY>
    <H1>MySQL et Perl, le mariage de raison</H1>

    <H4>ArticleCategory:</H4>
    Applications 

    <H4>AuthorImage:</H4>
    <IMG src="../../common/images/Georges-Tarbouriech.jpg" width=
    "115" height="124" alt="Georges Tarbouriech"> 

    <H4>TranslationInfo:[Author and translation history]</H4>
    <P>original in en <A href="mailto:georges.t@linuxfocus.org">Georges
    Tarbouriech</A>&nbsp;</P>
    <P>en to fr <A href="mailto:georges.t@linuxfocus.org">Georges
    Tarbouriech</A>&nbsp;</P>

    <H4>AboutTheAuthor</H4>

    <P>Georges est un vieil utilisateur d'Unix. Il appr�cie tous ces produits qui ont
    contribu� � r�pandre les solutions bas�es sur le logiciel libre dans le
    domaine professionnel.</P>

    <H4>Abstract:</H4>

    <P>MySQL et Perl font partie du paysage depuis d�j� longtemps.
    Ils sont toujours largement utilis�s m�me si la "mode" est en train de
    changer. Cet article parle de ces deux produits utilis�s conjointement soit
    sur Internet, soit sur votre r�seau local. L'exemple propos� concerne les
    syst�mes Unix, libres ou non, m�me s'il peut �tre adapt� � d'autres
    "syst�mes" largement r�pandus.
    <br>
    Ce qu'est cet article : un petit tour d'horizon de ce que l'on peut faire
    avec ce couple, en insistant sur la facilit� d'utilisation, la rapidit�, la
    fiabilit�, la s�curit�...
    <br>
    Ce que cet article n'est pas : ni un tutoriel MySQL ou Perl, ni une
    pr�sentation approfondie de MySQL ou Perl.<br>
    Par cons�quent, nous y verrons MySQL au travail en liaison avec Perl, sans
    oublier "qu'il y a plus d'une fa�on de le faire".
    </P>

    <H4>ArticleIllustration:</H4>
    <IMG src="../../common/images/article226/mysqlandperl.png" width="167"
    height="87" alt="MySQL and Perl" hspace="10">
    
    <H4>ArticleBody:[The article body]</H4>

    <H2>Quid de ce couple sympathique ?</H2>
    <P>
    <b>MySQL</b> est un Syst�me de Gestion de Bases de Donn�es Relationnelles
    (SGBDR) disponible sur
    <A href=
    "http://www.mysql.com">http://www.mysql.com</A>. Il est publi� sous licence
    GNU GPL gratuitement en fonction de l'usage pour lequel il est pr�vu.
    V�rifiez la politique de licence sur le site de MySQL. Il fonctionne en tant
    que client ou serveur sur de nombreuses plate-formes. D'autres SGBDR libres
    existent et nous ne ferons aucune comparaison puisque le choix de MySQL pour
    cet article est purement arbitraire. De m�me nous ne comparerons pas avec
    les "gros" produits commerciaux tels qu'Informix, Oracle, Sybase...
    Pr�cisons toutefois que MySQL est probablement l'un des SGBD les plus
    utilis�s sur Internet. Pour cet article nous avons choisi (toujours
    arbitrairement) la version 3.23.36. Au moment d'�crire ces lignes, la
    derni�re version stable est la 3.23.46 et la version exp�rimentale est la
    tant attendue version 4.0. Tout ceci peut �tre t�l�charg� sous forme de code
    source � compiler ou sous forme de paquetage.
    <br>
    Pour utiliser MySQL avec Perl, vous aurez besoin d'autre chose : les modules
    DBI de Perl. Vous devez au moins t�l�charger DBI, Msql-Mysql-modules, Data-Dumper
    et Data-ShowTable.
    <br>
    Nous ne parlerons pas de leur installation puisqu'elle est �vidente et que
    les distributions vous fournissent tout ce que vous avez besoin de savoir.
    <br>
    <b>Perl</b> signifie Practical Extraction and Report Language. Au tout d�but
    il �tait destin� � la manipulation de document (analyse, extraction...) mais
    il est rapidement devenu beaucoup plus que �a. Vous pouvez pratiquement tout
    faire avec Perl, depuis les t�ches d'administration aux scripts cgi, en
    passant par de v�ritables applications et bien s�r, l'interfa�age de bases
    de donn�es.
   <br>
    Perl fait partie de nombreuses (sinon toutes) distributions Unix, qu'elles
    soient libres ou non. La version stable actuelle est la 5.6.1 et
    l'exp�rimentale est la 5.7.2 au moment d'�crire ces lignes. Pour cet article
    nous utiliserons la bonne vieille 5.005_03. Si Perl n'est pas install� sur
    votre machine (comment est-ce possible ?), vous pouvez l'obtenir sur
   <A href=
    "http://www.perl.com">http://www.perl.com</A>. Perl propose des tonnes de
    modules pour pratiquement tout. Vous pouvez les obtenir � partir de la
    section CPAN de ce m�me site : une mine d'or !
    <br>
    Dernier point et non le moindre, pour travailler avec les deux outils
    r�unis, surprise : il vous faut un serveur web ! Apache semble le bon choix
    puisqu'il fait partie de nombreuses distributions Unix. Si vous ne l'avez
    pas (o� avez-vous trouv� votre distribution ?), il est disponible �
   <A href=
    "http://www.apache.org">http://www.apache.org</A>.
    </p>
    
    <H2>L'exemple utilis�</H2>
    <p>
    Vous avez sans doute remarqu� que LinuxFocus est un magazine multilingue. Ca
    signifie que lorsque vous �tes un �diteur, vous devez g�rer le statut des
    nouveaux articles, leur traduction. En d'autres termes, qui fait quoi,
    quand... Actuellement, il y a environ 200 articles, traduits en moyenne en 5
    langues. Ce qui fait un millier d'articles (que je suis bon !) et �a
    augmente tous les mois ! Tout cela doit �tre archiv�, format�, r�capitul�...
    Comment croyez-vous que cette gestion fonctionne ? Gr�ce � Perl, bien s�r.
    <br>
    Notre �diteur en chef, Guido Socher, a �crit de nombreux programmes en Perl
    pour nous faciliter la t�che. Il a �galement �crit un tutoriel Perl en trois
    parties ainsi que la pr�sentation d'un livre sur Perl. Voir la partie
    "R�f�rences" � la fin de l'article.
    <br>
    Javi, l'�diteur Espagnol, a �crit un programme pour g�rer l'avancement des
    traductions... en Perl.
    <br>
    Atif, l'un de nos auteurs �toile, vient du royaume de Perl, et c'est pour
    cela que sa langue maternelle... est Perl. Accessoirement, il a �galement
    contribu� � MySQL, en am�liorant un outil d'administration web. Voir
    �galement la partie R�f�rences.
    <br>
    Tout cela pour dire que si vous cherchez un paradis Perl... rejoignez
    LinuxFocus.
    <br>
    Comme je suis l'un des �diteurs Fran�ais... et que je suis plut�t paresseux,
    j'ai cr�e ma propre base de donn�es LinuxFocus en utilisant, devinez quoi :
    MySQL et Perl !
    </p>
    
    <H2>Cr�ation de la base</H2>
    <p>
    Cela suppose que MySQL a �t� correctement install�, que des utilisateurs ont
    �t� cr�es et ont �t� prot�g�s par des mots de passe. L'installation n'entre
    pas dans le cadre de cet article et la documentation d'excellente qualit�
    fournie avec MySQL vous dira tout.
    <br>
    D�marrez le serveur MySQL � l'aide du script <i>mysql.server</i>, puisqu'il
    invoque le d�mon <i>safe_mysqld</i> auquel vous pouvez passer des options.
    Connectez-vous au serveur en tapant 
    <p class="code">
    mysql -h host -u user -p</p>.
    Si le serveur est sur votre machine, <i>-h host</i> est
    inutile.
    <br>
    Apr�s avoir tap� le mot de passe, vous �tes connect� au serveur (enfin, vous
    devriez !). Et vous pouvez maintenant cr�er votre base de donn�es.
    <br>
    Au prompt mysql, tapez 
    <p class="code">CREATE DATABASE lf;</p>
     Il s'agit de notre exemple (lf pour LinuxFocus) et il est �vident que vous
     donnez le nom de votre choix � votre propre base. Ensuite, garantissez
     certaines permissions aux utilisateurs autoris�s, en supposant que vous
     ayez le droit de le faire (c'est-�-dire que l'utilisateur connect� poss�de des droits
     d'administrateur). Si vous souhaitez qu'un utilisateur puisse g�rer la
     base, vous pouvez lui en donner les privil�ges en tapant
    <p class="code">
    GRANT ALL ON lf.* TO username;</p>
    
    S�lectionnez la base que vous venez de cr�er en tapant
   <p class="code">
   USE lf</p>. 
   Cr�ez une table en fonction de vos besoins. Dans notre
   exemple, nous d�finissons une table nomm�e trissue
    <p class="code">
    CREATE TABLE trissue
    (num INTEGER UNSIGNED, category VARCHAR(25), title VARCHAR(40), author
    VARCHAR(20), en VARCHAR(20), es VARCHAR(20), fr VARCHAR(20),de VARCHAR(20),
    nl VARCHAR(20), ru VARCHAR(20), tk VARCHAR(20), issue
    VARCHAR(20));</p>.
    V�rifions qu'elle correspond bien � ce que l'on attend avec :
    <p class="code">
    USE lf<br>
    SHOW TABLES;  <br>
    DESCRIBE trissue;</p> C'est tout. 
    <br>
    Maintenant, il nous faut des donn�es. Pour int�grer des donn�es dans une
    table vide, le moyen le plus simple consiste � utiliser un fichier texte
    avec des tabulations en guise de s�parateurs. Lorsque votre texte est pr�t,
    tapez :
   <p class="code">
    LOAD DATA LOCAL INFILE "maindb.txt" INTO TABLE trissue;</p>
    Si votre fichier texte est correct, la table est maintenant peupl�e. Vous
    pouvez le v�rifier par :
   <p class="code">
    SELECT * FROM trissue;</p> 
    Ceci devrait afficher une longue liste. Vous pouvez d�s lors retrouver
    n'importe quelle donn�e � l'aide de requ�tes.
    <br>
    Jusque l�, �a va.<br>
    Nous n'avons utilis� que MySQL qui nous a permis de tout faire. Alors, que
    vient faire Perl l�-dedans ?
    </p>
    <H2>Perl au travail</H2>
    <p>
    Perl va nous aider � automatiser les requ�tes, � afficher les r�sultats dans
    un navigateur web, etc. Encore une fois, ceci implique que les modules Perl
    ont �t� correctement install�s pour permettre l'utilisation de MySQL en
    liaison avec Perl.
    <br>
    Nous allons maintenant �crire des scripts Perl utilis�s en tant que scripts
    cgi. Ils vont nous permettre de m�ler Perl et HTML pour interroger la
    base et formater le r�sultat.
    <br>
    Nous ne traiterons que d'un simple exemple de script, nous autorisant �
    rechercher tous les articles d'un m�me auteur. Nous afficherons les num�ros
    des articles, la cat�gorie, le titre, les noms des traducteurs des
    diff�rentes langues (uniquement celles des projets �tablis), et le mois
    de parution de l'article. 
    <br>
    Vous pouvez utiliser ce script comme mod�le pour votre usage personnel, mais
    sachez que cet exemple n'est pas un programme particuli�rement s�curis�.
    Vous pouvez obtenir une version un peu plus comment�e
    <A href=
    "../../common/src/article226/lfperl.txt">=&gt;ici&lt;=</a>.
    <br><br>
     <p class="code">
     #!/usr/bin/perl -Tw 
<br> # D'abord, disons qu'il s'agit d'un script Perl "Tainted".
<br> #
<br> # Ceci est un commentaire
<br> # consultation de la base
<br> #
<br> # Utilisons le module Perl DBI  
<br> use DBI;
<br>    
<br> # en tant que cgi :
<br> use CGI qw(param());
<br>    
<br> print &lt;&lt;END_of_start; 
<br>   
<br> Content-type: text/html
<br>   
<br> &lt;html&gt; 
<br> &lt;title&gt;LFAuthors main db&lt;/title&gt; 
<br>   
<br> &lt;center&gt;&lt;TABLE&gt; 
<br> &lt;TR VALIGN=TOP&gt; 
<br> &lt;TD&gt;&lt;form action="/cgi-bin/lf.cgi" method="get"&gt; 
<br>    
<br> # Voici le titre du bouton de la page de lancement
<br> &lt;input type="submit" value="        LFAuth       "&gt; 
<br> &lt;/form&gt; 
<br> &lt;/TD&gt; 
<br> &lt;/TR&gt; 
<br> &lt;/TABLE&gt; 
   </p>
   
   Nous demandons maintenant au script d'interroger la base
   <p class="code">
&lt;center&gt;&lt;H2&gt;Search by author&lt;/H2&gt;&lt;/center&gt;
<br>
<br>&lt;form action=\"/cgi-bin/lf.cgi\" method=\"get\"&gt;Author name : &lt;input
<br>type=\"text\" size=\"30\" name=\"author\"&gt;&lt;input type=\"submit\" 
<br>value=\"Search...\"&gt;&lt;/form&gt;&lt;/center&gt;
<br>
<br>
<br>END_of_start
<br>
<br>
<br>if (param("author") ne '') {
<br>	$author = param("author");
<br>	
<br>	$autsrch.='"';
<br>	$autsrch.=$author;
<br>	$autsrch.='"';
<br>
<br># Nous nous connectons � la base nomm�e lf en tant qu'utilisateur untel
<br>
<br>	$dbh = DBI->connect("DBI:mysql:lf","untel",'');
<br>
<br>	$sth = $dbh->prepare("
<br>		select *
<br>		from trissue
<br>		where
<br>		author = $autsrch
<br>		");
<br>		
<br>	$sth->execute;
</p class="code">

Nous demandons maintenant au script de pr�parer et d'afficher les r�sultats de
la requ�te. Soit le champ de recherche est vide et le contenu de la base est
affich� en totalit�, soit nous recherchons un nom et chaque article
correspondant � cet auteur sera affich�. Si vous avez des milliers
d'enregistrements dans votre base, je vous d�conseille l'affichage de la
totalit� du contenu !
<br>
<p class="code">
print &lt;&lt;END_suite;
<br>	
<br>&lt;center&gt;
<br>&lt;TABLE BORDER=&gt;
<br>&lt;tr bgcolor=#A1C4EE&gt;
<br>&lt;th width=60 align=CENTER&gt;&lt;font color=#000000&gt; Num &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Category &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Title &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Author &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; En &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Es &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Fr &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; De &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Nl &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Ru &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Tk &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Issue &lt;/font&gt;&lt;/th&gt;
<br>  		&lt;/tr&gt;
<br>
<br>END_suite
<br>	
<br>while( ($num,$category,$title,$author,$en,$es,$fr,$de,$nl,$ru,$tk,$issue) =$sth->fetchrow() ) {
<br>print "&lt;tr&gt;";
<br>print "&lt;td width=60 bgcolor=#FFFFE8 align=center&gt; $num&lt;/td&gt";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $category&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $title&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $author&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $en&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $es&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $fr&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $de&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $nl&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $ru&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $tk&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $issue&lt;/td&gt;";
<br>print "&lt;/tr&gt;";
<br>	
<br>	}
<br>	print "&lt;/TABLE&gt;";
<br>	print "&lt;BR&gt;";
<br>	print "&lt;BR&gt;";
<br>	print "&lt;br&gt;";
<br>	
<br>	
<br>} else {
<br>
<br># Connexion � la base
<br>
<br>	$dbh = DBI->connect("DBI:mysql:lf","untel",'');
<br>
<br>
<br># Recherche
<br>
<br>	$sth = $dbh->prepare("
<br>		select *
<br>		from trissue
<br>		");
<br>		
<br>	$sth->execute;
<br>
<br>
<br># Affichage du r�sultat
<br>
<br>
<br>print &lt;&lt;SUITE;
<br>
<br>&lt;center&gt;
<br>&lt;TABLE BORDER=&gt;
<br>&lt;tr bgcolor=#A1C4EE&gt;
<br>&lt;th width=60 align=CENTER&gt;&lt;font color=#000000&gt; Num &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Category &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Title &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Author &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; En &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Es &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Fr &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; De &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Nl &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Ru &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Tk &lt;/font&gt;&lt;/th&gt;
<br>&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Issue &lt;/font&gt;&lt;/th&gt;
<br>  		&lt;/tr&gt;
<br>
<br>SUITE
<br>	
<br>while( ($num,$category,$title,$author,$en,$es,$fr,$de,$nl,$ru,$tk,$issue) =$sth->fetchrow() ) {
<br>print "&lt;tr&gt;";
<br>print "&lt;td width=60 bgcolor=#FFFFE8 align=center&gt; $num&lt;/td&gt";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $category&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $title&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $author&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $en&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $es&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $fr&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $de&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $nl&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $ru&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $tk&lt;/td&gt;";
<br>print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $issue&lt;/td&gt;";
<br>print "&lt;/tr&gt;";
<br>	
<br>	}
<br>	print "&lt;/TABLE&gt;";
<br>	print "&lt;BR&gt;";
<br>	
<br>}
<br>print end_html;
<br>$sth->finish;
<br>
<br>
<br># D�connexion
<br>
<br>$dbh->disconnect;
<br>
<br>exit;
</p>
<br>
Voici le r�sultat obtenu dans un navigateur :
<br><br>
<P><center><A HREF="../../common/images/article226/query.jpg"><IMG
    SRC="../../common/images/article226/queryth.jpg" ALT="query"></A></center>
    <br><br>
    
C'est tout fini !
</p>

<H2>Du c�t� s�curit�</H2> 
<p>
De toute �vidence, si vous souhaitez proposer un service de base de donn�es sur
votre site, vous devez s�curiser l'ensemble. Bien s�r, nous ne fournirons pas de
m�thode pas � pas pour s�curiser votre site ou votre serveur de bases de
donn�es. Toutefois, il est important d'insister sur ce qui est basique.
<br>
En bref, lorsque vous proposez des services sur Internet, la premi�re chose �
faire consiste � s�curiser votre serveur web. Ceci est tr�s loin du cadre de cet
article. Si vous voulez en savoir plus sur le sujet, il existe une �norme
documentation. Un bon endroit pour commencer n'est autre que
<A href=
    "http://www.linuxdoc.org">le Linux Documentation Project</A>.
    <br>
    L'�tape suivante concerne le serveur de bases de donn�es. Lorsque vous
    installez un outil tel que MySQL, n'oubliez pas de lire le chapitre s�curit�
    du manuel. Encore une fois, le travail de base concerne les mots de passe
    des utilisateurs : ne laissez jamais un compte sans mot de passe,
    particuli�rement celui de root (qui devrait �tre diff�rent de celui de la
    machine). L'autre point important concerne les permissions : n'autorisez pas
    tout � tout le monde. Cela para�t �vident... et c'est la raison pour
    laquelle nombreux sont ceux qui l'oublient !
    <br>
    Pour aller un peu plus loin, pourquoi ne pas "chrooter" la base ? Lisez
    l'article de
    <A href=
    "article225.shtml">Mark</a> "Chrooter tous les services" dans ce num�ro. Il
    y parle d'une autre base mais ce qu'il dit peut �tre appliqu� � MySQL.
    <br>
    Une autre mesure de s�curit� concerne la circulation des donn�es. Ce n'est
    pas une mauvaise id�e d'envoyer et de recevoir les donn�es par un canal
    s�curis�. Vous pouvez lire l'article
    <A href=
    "../May2001/article202.shtml">Par le tunnel</a> pour plus ample
    information.
    <br>
    Enfin, l'essentiel, la programmation s�curis�e est l'une des cl�s. Perl est
    un langage extraordinaire mais il est tr�s facile de faire de grosses
    erreurs de programmation avec lui. Un autre article de LinuxFocus vous dira
    ce qu'il faut faire, particuli�rement avec Perl. Jetez un oeil (et m�me les
    deux)
    <A href=
    "../November2001/article203.shtml">l�</a>. C'est le dernier article de la
    s�rie sur la programmation s�curis�e et il concerne plus sp�cialement les
    scripts cgi. A lire absolument !
    <br>
    Alors, bien s�r, tout ceci suppose que votre syst�me est d�j� s�curis�, sans
    trous de s�curit� bien connus, avec tous les derniers correctifs, et avec de
    nombreux outils de s�curit� obligatoires tels qu'un NIDS
   (Network Intrusion Detection System) comme snort (<A href=
    "http://www.snort.org">http://www.snort.org</a>), un pare-feu, des scanners
    de ports et de s�curit� (<A href=
    "http://www.insecure.org">nmap</a>, <A href=
    "http://www.nessus.org">nessus</a>), etc.
    <br>
    Si vos moyens vous le permettent, vous pouvez aussi avoir un serveur
    diff�rent pour chaque service propos� : un serveur web, un serveur de bases
    de donn�es... et leur miroir pour garantir une haute disponibilit�. Ainsi de
    suite ! Ce n'est jamais fini, puisque la s�curit� n'est jamais aboutie. Vous
    essayez seulement de r�duire les risques... et ils sont tous les jours plus
    gros. Vous voil� avertis.
    </p>

<H2>Quoi d'autre ?</H2>    
 <p>
 Comme Il Y a toujours Plus d'Une Fa�on de Le Faire (TIMTOWDI c'est quand m�me
 plus parlant que IYPUFDLF), vous pouvez choisir celle qui vous convient le
 mieux. Il existe de nombreux SGBDR ainsi que de nombreux langages pour
 communiquer avec eux. L'id�e derri�re cet article �tait de montrer que
 MySQL et Perl fonctionnent vraiment bien ensemble.
 <br>
 Certes, le choix �tait enti�rement subjectif : j'adore MySQL pour sa relative
 petite taille, parce qu'il fonctionne sous de nombreux OS, qu'il est rapide,
 fiable... J'appr�cie �galement beaucoup le travail de l'�quipe de MySQL, sans
 oublier les nombreux contributeurs. Et ce que pr�f�re : ces gens n'ont pas
 essay� de r�inventer la roue. Ils ont conserv� la simplicit�.
  <br>
  Pour ce qui est de Perl, tout a �t� dit : que pourrais-je ajouter ? Je crois
  vraiment qu'il est impossible de travailler sans lui, que vous soyez
  administrateur r�seau, d�veloppeur ou que sais-je. La communaut� Perl est
  l'un des si�ges du partage des connaissances. Un magazine existe, nomm� le
  Perl Journal, qui est maintenant int�gr� au magazine SysAdmin, tous les deux
  num�ros. Si vous voulez vous abonner, visitez <A href=
    "http://www.samag.com">http://www.samag.com</a>.
 <br>
 Puisque nous parlons de beau travail, voici l'habituelle partie hors-sujet.
 Vous, lecteurs de LinuxFocus, n'avaient sans doute pas remarqu� le petit nombre
 de personnes investies dans le magazine. Pourtant, vous pouvez le lire dans de
 nombreuses langues. Avez-vous remarqu� que certaines �quipes travaillent
 presque toujours avec une ou deux personnes qui font tout ? Ils sont
 traducteurs, webmestres, etc. Regardez du c�t� de l'�quipe Russe ou de l'�quipe
 Turque : vous verrez que la plupart des articles sont traduits par Kirill ou
 Erdal. Jetez un oeil sur les projets en cours de d�veloppement, tels que le
 Portugais ou l'Arabe : m�me r�sultat ! J'aimerais les f�liciter pour l'�norme
 travail r�alis�. Merci � vous tous : la communaut� du logiciel libre peut vous �tre
 reconnaissante. 
<br>
Pardon pour la digression, mais je crois qu'il fallait que ce soit dit.
<br>
Pour en revenir au sujet, terminons par quelques mots sur le logiciel libre. Les
gens de MySQL et de Perl m�ritent un grand merci. Ils nous fournissent des
outils extraordinaires, presque toujours gratuitement. Pourtant ces outils sont
souvent aussi "bons" que les v�ritables produits commerciaux (sinon meilleurs),
ils sont fr�quemment mis � jour, tr�s bien document�s et vous pouvez les
utiliser sur la plupart des syst�mes Unix. Connaissez-vous un �quivalent
ailleurs ? J'ai bien peur que non !
<br>
Cet article ne vous apprendra sans doute pas grand chose, mais s'il vous
donne envie d'essayer ces produits, il n'aura pas �t� inutile.
<br>
Quand je vous dis qu'on vit une �poque formidable !
</p>    
<H2>R�f�rences</H2>
<p>
<A href="http://www.perl.org">Perl mongers</a> 
<br><br>
Le tutorial Perl de Guido :
<br><br>
<A href="../September1999/article114.html">Perl I</a>
<br>
<A href="../November1999/article126.html">Perl II</a>
<br>
<A href="../January2000/article136.shtml">Perl III</a>
<br><br>
Revue du livre Programmation Professionnelle de Perl :
<br><br>
<A href="../July2001/article208.shtml">Programmation avec Perl</a>
<br><br>
<A
href="http://www.mysql.com/downloads/download.php?file=Downloads/Contrib/mysqladmin-atif-1.0.tar.gz">La
    contribution d'Atif</A> � MySQL.
<br><br>
Une revue de MySQL sur LinuxFocus : vieil article encore d'actualit� :
<br><br>
<A href="../July1998/article59.html">MySQL</a> 
<br><br>
Un vieux tutoriel SQL en deux parties sur LinuxFocus :
<br><br>
<A href="../May1998/article38.html">SQL Partie I</a> 
<br>
<A href="../July1998/article58.html">SQL Partie II</a> 
<!-- vim: set sw=2 ts=2 et: --> 
  </BODY>
</HTML>