<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <META NAME="GENERATOR" CONTENT="lfparser_2.23">
 <META NAME="LFCATEGORY" CONTENT="Applications">
<!-- this is used by a number of tools:
 =LF=AUTHOR: Georges     Tarbouriech
 =LF=CAT___: Applications
 =LF=TITLE_: MySQL und Perl: eine Zweckehe
 =LF=NUMBER: 226
 =LF=ANAME_: article226.shtml
 -->
 <TITLE>lf226, Applications: MySQL und Perl: eine Zweckehe</TITLE>
<!-- stylesheet added by lfparser: --> 
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-familiy:monospace,Courier }
 p.cl { color:#EE9500 }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm ;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; border-style:none; border-width:medium; border-color:#aedbe8; padding:0.1cm ;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top"><A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">Home</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">Plan</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">Index</FONT></A> &nbsp;|&nbsp; <A class="nodec" href="../Search/index.html"><FONT color=
                 "#DDDDDD" size="2">Suchen</FONT></A> </TD>
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">Nachrichten</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color=
           "#FFFFFF">Archiv</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.shtml"><FONT color=
           "#FFFFFF">Links</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">&Uuml;ber uns</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.4 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Dieses Dokument ist verf&uuml;bar auf: <A href="../../English/January2002/article226.shtml">English</a> &nbsp;<A href="../../Castellano/January2002/article226.shtml">Castellano</a> &nbsp;<A href="../../ChineseGB/January2002/article226.shtml">ChineseGB</a> &nbsp;<A href="../../Deutsch/January2002/article226.shtml">Deutsch</a> &nbsp;<A href="../../Francais/January2002/article226.shtml">Francais</a> &nbsp;<A href="../../Nederlands/January2002/article226.shtml">Nederlands</a> &nbsp;<A href="../../Portugues/January2002/article226.shtml">Portugues</a> &nbsp;<A href="../../Russian/January2002/article226.shtml">Russian</a> &nbsp;<A href="../../Turkce/January2002/article226.shtml">Turkce</a> &nbsp;<A href="../../Arabic/January2002/article226.shtml">Arabic</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0  WIDTH="30%" >
<TR>
<TD>

<!-- 2pdaIgnoreStart -->
<!-- PALM DOC -->
<TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD>
<font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font>
</TD> </TR> </TABLE>
<!-- END PALM DOC -->
<!-- 2pdaIgnoreStop -->
<br>
<IMG src="../../common/images/Georges-Tarbouriech.jpg" width=
    "115" height="124" alt="Georges Tarbouriech">
<BR>von  Georges Tarbouriech <br> <small>&lt;georges.t(at)linuxfocus.org&gt;</small>
<BR><BR>
<I>&Uuml;ber den Autor:</I><BR>
<P>Georges benutzt Unix schon seit langem. Er mag jene Produkte, die zur
    Verbreitung von L&ouml;sungen mit freier Software im professionellen
    Bereich gef&uuml;hrt haben.
    </P>
<!-- TRANSLATED TO de -->
<BR><BR><I>&Uuml;bersetzt ins Deutsche von:</I><BR>
Hubert Kai&szlig;er et al <small>&lt;hubert.kaisser(at)botb.de&gt;</small>
<br>
<!-- TRANSLATED TO STOP -->
<BR><i>Inhalt</i>:
<UL>
  <LI><A HREF="#226lfindex0">Was gibt es &uuml;ber dieses nette Paar zu sagen?</A></LI>
  <LI><A HREF="#226lfindex1">&Uuml;ber das Beispiel, welches wir benutzen werden</A></LI>
  <LI><A HREF="#226lfindex2">Die Datenbank anlegen</A></LI>
  <LI><A HREF="#226lfindex3">Perl bei der Arbeit</A></LI>
  <LI><A HREF="#226lfindex4">Der Sicherheitsaspekt</A></LI>
  <LI><A HREF="#226lfindex5">Was noch?</A></LI>
  <LI><A HREF="#226lfindex6">Referenzen</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=226&amp;lang=en">Talkback f&uuml;r diesen Artikel</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<br>&nbsp;
<H2>MySQL und Perl: eine Zweckehe</H2>
 <IMG src="../../common/images/article226/mysqlandperl.png"  width="167" height="87" alt="MySQL and Perl" hspace="10">
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>Zusammenfassung</i>:
<P>
<P>MySQL und Perl gibt es nun schon recht lange. Sie sind immer noch weit
    verbreitet, auch wenn sich die "Mode" &auml;ndert. In diesem Artikel geht es um
    diese zwei Produkte, die als Ganzes zusammen arbeiten, entweder im Internet
    oder in Ihrem lokalen Netzwerk. Das gegebene Beispiel betrifft Unixsysteme,
    freie und kommerzielle, auch wenn es auf andere weit verbreitete
    "Betriebssysteme" angewendet werden kann.<br>
    Was dieser Artikel ist: eine kleine &Uuml;bersicht, was man mit diesem Paar
    machen kann, mit einer Vorstellung der Benutzerfreundlichkeit,
    Geschwindigkeit, Zuverl&auml;ssigkeit, Sicherheit...<br>
    Was dieser Artikel nicht ist: weder ein MySQL-Tutorium, noch ein Perl-Tutorium;
    weder eine MySQL-&Uuml;bersicht, noch eine Perl-&Uuml;bersicht.<br>
    Folglich werden wir MySQL in Verbindung mit Perl betrachten, ohne zu
    vergessen, da&szlig; gilt: "there is more than one way to do it (viele Wege f&uuml;hren
    nach Rom)".</P></P>
<HR size="2" noshade align="right"><BR>
<!-- BODY OF THE ARTICLE -->


    <A NAME="226lfindex0">&nbsp;</A>
<H2>Was gibt es &uuml;ber dieses nette Paar zu sagen?</H2>

    <P>
    <b>MySQL</b> ist ein Relational DataBase Management System (relationales
    Datenbankmanagementsystem)(RDBMS),
    erh&auml;ltlich bei <A href="http://www.mysql.com">http://www.mysql.com</A>.
    Es ist unter der GNU GPL ver&ouml;ffentlicht, frei, je nachdem, wof&uuml;r es benutzt
    wird. &Uuml;berpr&uuml;fen Sie die Lizenzpolitik auf der MySQL-Webseite. Es
    funktioniert auf vielen Plattformen entweder als Server oder als Client.
    Es gibt noch ein paar andere RDBMS als freie Software, aber wir werden
    hier keine Vergleiche anstellen, da die Wahl von MySQL f&uuml;r diesen
    Artikel willk&uuml;rlich ist. Auch werden wir es nicht mit den gro&szlig;en
    "kommerziellen" Programmen wie Informix, Oracle, Sybase, usw.
    vergleichen. Es reicht zu sagen, da&szlig; MySQL vermutlich eines der am
    weitesten verbreitesten DBMS im Internet ist. F&uuml;r diesen Artikel verwenden
    wir die Version 3.23.36 (wiederum willk&uuml;rlich). Zum Zeitpunkt des
    Verfassens dieses Textes ist die aktuelle stabile Version 3.23.46
    und die Alphaversion ist die lang erwartete Version 4.0. Diese k&ouml;nnen als
    Quelltext zum Kompilieren oder als Pakete heruntergeladen werden.
    <br>
    Um MySQL in Verbindung mit Perl zu benutzen, braucht man etwas mehr:
    die DBI-Module von Perl. Man kann zumindest DBI, Msql-Mysql-modules,
    Data-Dumper and Data-ShowTable runterladen.
    <br>
    Wir werden nicht &uuml;ber ihre Installation sprechen, da sie einleuchtend
    ist und die Pakete alle Informationen beinhalten, die Sie brauchen.
    <br>
    <b>Perl</b> bedeutet Practical Extraction and Report Language.
    Am Anfang war es f&uuml;r Dokumentmanipulation gedacht (Syntaxanalyse,
    Extrahierung...), aber bald wurde es viel mehr als das.
    Man kann mit Perl fast alles machen, von administrativen Aufgaben bis hin
    zu CGI-Scripts durch richtige Applikationen und, nat&uuml;rlich,
    Datenbankschnittstellen.<br>
    Perl ist bei vielen freien und kommerziellen Unix-Distributionen
    dabei, wenn nicht sogar bei allen. Zum Zeitpunkt der Erstellung dieses
    Artikels ist die aktuelle stabile Version 5.6.1 und die Betaversion
    5.7.2. In diesem Artikel werden wir die gute, alte 5.005_03 verwenden.
    Sollten Sie kein Perl auf Ihrer Maschine haben (wie ist das nur m&ouml;glich?),
    k&ouml;nnen Sie es von <A href= "http://www.perl.com/">http://www.perl.com/</A>
    herunterladen. Perl versorgt Sie tonnenweise mit Modulen f&uuml;r fast alles.
    Sie k&ouml;nnen sie sich aus dem CPAN der Webseite runterladen: eine Goldmine!
    <br>
    Nicht zuletzt, welch &Uuml;berraschung, um mit beiden Werkzeugen zu arbeiten:
    Man braucht einen Webserver! Apache scheint die richtige Wahl zu sein, da
    er, wie gew&ouml;hnlich, Teil vieler freier und kommerzieller
    Unix-Distributionen ist. Sollten Sie ihn nicht haben (wo haben sie nur Ihre
    Distribution her?), ist er auf
    <A href= "http://www.apache.org/">http://www.apache.org/</A> erh&auml;ltlich.
    </p>

    <A NAME="226lfindex1">&nbsp;</A>
<H2>&Uuml;ber das Beispiel, welches wir benutzen werden</H2>

    <p>
    Sie haben wahrscheinlich schon gemerkt, da&szlig; LinuxFocus ein
    mehrsprachiges Magazin ist. Das bedeutet, wenn Sie ein Redakteur sind,
    m&uuml;ssen Sie den Status eines neuen Artikels und somit die &Uuml;bersetzung
    &uuml;berwachen. Anders gesagt: wer tut was, wann... Zur Zeit gibt
    es ungef&auml;hr 200 Artikel, oft in durchschnittlich 5 Sprachen
    verf&uuml;gbar. Das ergibt ungef&auml;hr 1000 Artikel (na, wie schlau
    bin ich?) und es werden immer mehr. Diese Masse mu&szlig;
    archiviert, formatiert und zusammengefa&szlig;t werden... Wie
    glauben Sie, wird das bewerkstelligt? Nat&uuml;rlich mit Perl.
    <br>
    Unser Chefredakteur, Guido Socher, hat schon viele Perl-Programme
    geschrieben, um unser Leben erheblich leichter zu machen. Er schrieb
    ebenfalls ein dreiteiliges Perl-Tutorial und eine
    Perl-Buchkritik.  Schauen Sie sich doch mal den Abschnitt mit
    den Verweisen am Ende dieses Artikels an!
    <br>
    Javi, unser spanischer Redakteur, schrieb ein Program, um den
    Status der &Uuml;bersetzung zu verwalten... in Perl.
    <br>
    Atif, einer unserer Star-Autoren, kommt aus dem K&ouml;nigreich
    Perl, deshalb ist seine Muttersprache Perl. Letztendlich hat er
    auch zu MySQL beigetragen, indem er ein Web-Administrations-Tool
    verbessert hat. Wieder finden Sie etwas dazu im Abschnitt mit
    den Verweisen.
    <br>
    All dies zeigt deutlich, da&szlig;, wenn Sie nach einem
    Perl-Paradies suchen, Sie lediglich bei LinuxFocus mitmachen
    m&uuml;ssen.
    <br>
    Da ich einer der franz&ouml;sischen LinuxFocus-Redakteure bin, und ich
    ziemlich faul bin, habe ich mir meine eigene Datenbank
    angelegt, die, raten Sie mal, auf MySQL und Perl basiert.
    </p>

    <A NAME="226lfindex2">&nbsp;</A>
<H2>Die Datenbank anlegen</H2>

    <p>
    Dies setzt voraus, da&szlig; MySQL korrekt installiert wurde, Benutzer angelegt
    und sie mit Passw&ouml;rtern gesch&uuml;tzt wurden. Die Installation ist au&szlig;erhalb des
    Rahmens dieses Artikels und die gro&szlig;artige Dokumentation, die bei MySQL
    zur Verf&uuml;gung steht, stellt alle Informationen zur Verf&uuml;gung.
    <br>
    Starten Sie den MySQL-Server, indem Sie das Skript <i>mysql.server</i>
    verwenden, da es den Daemon <i>safe_mysqld</i> aufruft und Sie diesem Daemon
    Optionen &uuml;bergeben k&ouml;nnen.
    <br>
    Starten Sie eine Verbindung, indem Sie
    <br><br><i>mysql -h host -u user -p</i><br><br>
    eingeben. Wenn der Server auf Ihrer lokalen Maschine l&auml;uft, dann
    brauchen Sie <i>-h host</i> nicht.
    <br>
    Nachdem Sie das Pa&szlig;wort eingegeben haben, sind Sie mit dem Server
    verbunden (nun, das sollten Sie sein!). Und jetzt k&ouml;nnen Sie Ihre
    Datenbank anlegen.
    <br>
    Am Prompt von mysql geben Sie nun
    <br><br><i>CREATE DATABASE lf;</i><br><br>
    ein. Dies ist unser Beispiel (lf steht f&uuml;r LinuxFocus) und es ist
    naheliegend, da&szlig; Sie Ihrer Datenbank den Namen geben, den Sie wollen.
    Als n&auml;chstes erteilen Sie den zugelassenen Benutzern einige Rechte,
    unter der Annahme, da&szlig; Sie das Recht haben, es zu tun (das soll hei&szlig;en,
    da&szlig; Sie als User mit administrativen Rechten eingelogt sind). Wenn
    Sie wollen, da&szlig; ein Benutzer in der Lage ist, die Datenbank zu verwalten,
    dann k&ouml;nnen Sie ihm die Privilegien geben, indem Sie
    <br><br> <i>GRANT ALL ON lf.* TO username;</i> <br><br>
    eingeben. W&auml;hlen Sie die Datenbank, die Sie gerade erzeugt haben, indem
    Sie <i>USE lf</i> eingeben. Erzeugen Sie eine Tabelle, gem&auml;&szlig; Ihrem
    Bedarf. In unserem Beispiel legen wir eine Tabelle mit dem Namen trissue
    an:
    <br><br>
    <i>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));</i>.
    <br><br>
    Lassen Sie uns pr&uuml;fen, ob es wie erwartet erzeugt wurde:
    <br><br>
    <i>USE lf</i><br>
    <i>SHOW TABLES;</i><br>
    <i>DESCRIBE trissue;</i>
    <br><br>
    Das ist alles.
    <br>
    Und nun brauchen wir einige Daten. Um Daten in eine leere Tabelle zu
    laden, ist es das einfachste, eine Textdatei mit TAB-Trennern zu
    verwenden. Wenn Ihr Text fertig ist, schreiben Sie einfach:
    <br><br>
    <i>LOAD DATA LOCAL INFILE "maindb.txt" INTO TABLE trissue;</i>
    <br><br>
    Wenn Ihre Textdatei korrekt ist, dann ist die Tabelle nun gef&uuml;llt.
    Das k&ouml;nnen Sie mit dem Folgenden &uuml;berpr&uuml;fen:
    <br><br>
    <i>SELECT * FROM trissue;</i>
    <br><br>
    Dies sollte eine lange Liste anzeigen. Nun sind Sie in der Lage, alle
    Daten abzurufen, indem Sie Abfragen verwenden.
    <br>
    Soweit, so gut.<br>
    Bis jetzt haben wir nur MySQL verwendet und konnten alles damit machen.
    Was ist also der Sinn von Perl ?
    </p>

    <A NAME="226lfindex3">&nbsp;</A>
<H2>Perl bei der Arbeit</H2>

    <p>
    Perl wird uns dabei helfen, diese Abfragen zu automatisieren und um die
    Ergebnisse in einem Web-Browser anzuzeigen usw. Auch hier ist
    vorausgesetzt, da&szlig; die Perl-Module korrekt installiert wurden, um MySQL
    in Verbindung mit Perl zu verwenden.
    <br>
    Wir werden jetzt Perl-Skripte schreiben, die wir als CGI-Skripte verwenden
    werden. Sie werden uns auch erm&ouml;glichen Perl und HTML zu mischen, um
    die Datenbank abzufragen und die Ausgabe zu formatieren.
    <br>
    Wir werden ein einfaches Beispiel-Skript verwenden, das uns erlaubt, alle
    vom gleichen Autor geschriebenen Artikel zu durchsuchen. Wir lassen die
    Artikelnummer, die Kategorie, den Titel, die Namen der &Uuml;bersetzer f&uuml;r die
    verschiedenen Sprachen anzeigen (nur die vollst&auml;ndigen Projekte), die
    Ausgabe und wann die Artikel ver&ouml;ffentlicht wurden.
    <br>
    Sie k&ouml;nnen dieses Skript als Vorlage f&uuml;r Ihre eigene Anwendung benutzen,
    aber seien Sie sich bewu&szlig;t, da&szlig; dieses Beispiel kein sehr sicheres
    Programm ist. Sie k&ouml;nnen eine ausf&uuml;hrlicher kommentierte Version
    <A href="../../common/src/article226/lfperl.txt">dort</a> bekommen.
    <br><br>
     <pre>

    # First, we say this is a "Tainted" Perl script.

    #!/usr/bin/perl -Tw
    #
    # This is a comment
    # db consult
    #
    # We use the Perl DBI module
    use DBI;

    # As cgi :
    use CGI qw(param());

   print &lt;&lt;END_of_start;

   Content-type: text/html

    &lt;html&gt;
   &lt;title&gt;LFAuthors main db&lt;/title&gt;

    &lt;center&gt;&lt;TABLE&gt;
    &lt;TR VALIGN=TOP&gt;
    &lt;TD&gt;&lt;form action="/cgi-bin/lf.cgi" method="get"&gt;

    # Here comes the button's title for the launching page
    &lt;input type="submit" value="        LFAuth       "&gt;
    &lt;/form&gt;
    &lt;/TD&gt;
    &lt;/TR&gt;
    &lt;/TABLE&gt;
   </pre><br>

   Jetzt weisen wir das Skript an, die Datenbank abzufragen:
   <br>
   <pre>
&lt;center&gt;&lt;H2&gt;Search by author&lt;/H2&gt;&lt;/center&gt;

&lt;form action=\"/cgi-bin/lf.cgi\" method=\"get\"&gt;Author name : &lt;input
type=\"text\" size=\"30\" name=\"author\"&gt;&lt;input type=\"submit\"
value=\"Search...\"&gt;&lt;/form&gt;&lt;/center&gt;


END_of_start


if (param("author") ne '') {
	$author = param("author");

	$autsrch.='"';
	$autsrch.=$author;
	$autsrch.='"';

# We connect to the database named lf as user doe

	$dbh = DBI->connect("DBI:mysql:lf","doe",'');

	$sth = $dbh->prepare("
		select *
		from trissue
		where
		author = $autsrch
		");

	$sth->execute;
</pre>
<br>

Nun lassen wir das Skript die Ergebnisse der Abfrage vorverarbeiten und
anzeigen. Entweder haben wir keine Suche angegeben und es wird den Inhalt
der ganzen Datenbank anzeigen oder wir haben nach einem Namen gefragt und
es zeigt alle Artikel, die mit dem Namen dieses Autors verkn&uuml;pft sind, an.
Wenn Sie Tausende von Datens&auml;tzen in Ihrer Datenbank haben, empfehle ich,
nicht den ganzen Inhalt ausgeben zu lassen!
<br>
<pre>
print &lt;&lt;END_suite;

&lt;center&gt;
&lt;TABLE BORDER=&gt;
&lt;tr bgcolor=#A1C4EE&gt;
&lt;th width=60 align=CENTER&gt;&lt;font color=#000000&gt; Num &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Category &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Title &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Author &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; En &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Es &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Fr &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; De &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Nl &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Ru &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Tk &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Issue &lt;/font&gt;&lt;/th&gt;
  		&lt;/tr&gt;

END_suite

while( ($num,$category,$title,$author,$en,$es,$fr,$de,$nl,$ru,$tk,$issue)
=$sth->fetchrow() ) {
print "&lt;tr&gt;";
print "&lt;td width=60 bgcolor=#FFFFE8 align=center&gt; $num&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $category&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $title&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $author&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $en&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $es&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $fr&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $de&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $nl&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $ru&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $tk&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $issue&lt;/td&gt;";
print "&lt;/tr&gt;";

	}
	print "&lt;/TABLE&gt;";
	print "&lt;BR&gt;";
	print "&lt;BR&gt;";
	print "&lt;br&gt;";


} else {

# DB Connect

	$dbh = DBI->connect("DBI:mysql:lf","doe",'');


# Search

	$sth = $dbh->prepare("
		select *
		from trissue
		");

	$sth->execute;


# Display result


print &lt;&lt;SUITE;

&lt;center&gt;
&lt;TABLE BORDER=&gt;
&lt;tr bgcolor=#A1C4EE&gt;
&lt;th width=60 align=CENTER&gt;&lt;font color=#000000&gt; Num &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Category &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Title &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Author &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; En &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Es &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Fr &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; De &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Nl &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Ru &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Tk &lt;/font&gt;&lt;/th&gt;
&lt;th width=110 align=CENTER&gt;&lt;font color=#000000&gt; Issue &lt;/font&gt;&lt;/th&gt;
  		&lt;/tr&gt;

SUITE

while( ($num,$category,$title,$author,$en,$es,$fr,$de,$nl,$ru,$tk,$issue)
=$sth->fetchrow() ) {
print "&lt;tr&gt;";
print "&lt;td width=60 bgcolor=#FFFFE8 align=center&gt; $num&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $category&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $title&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $author&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $en&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $es&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $fr&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $de&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $nl&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $ru&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $tk&lt;/td&gt;";
print "&lt;td width=110 bgcolor=#FFFFE8 align=left&gt; $issue&lt;/td&gt;";
print "&lt;/tr&gt;";

	}
	print "&lt;/TABLE&gt;";
	print "&lt;BR&gt;";

}
print end_html;
$sth->finish;


# Disconnect

$dbh->disconnect;

exit;

</pre>
<br>
Hier ist die Ausgabe der Abfrage in einem Web-Browser:
<br><br>
<P><center><A HREF="../../common/images/article226/query.jpg"><IMG
    SRC="../../common/images/article226/queryth.jpg" ALT="query"></A></center>
    <br><br>

Nun sind wir fertig!
</p>

<A NAME="226lfindex4">&nbsp;</A>
<H2>Der Sicherheitsaspekt</H2>

<p>
Es ist klar, da&szlig; Sie das Ganze sichern m&uuml;ssen, wenn Sie auf Ihrer Webseite
eine Datenbank anbieten wollen. Nat&uuml;rlich werden wir keine schrittweise
Anleitung geben, wie man eine Webseite oder einen Datenbank-Server sichert.
Wie auch immer, es ist wichtig auf Grundlegendem zu bestehen.
<br>
Um es kurz zu machen: wenn Sie Dienste im WWW anbieten, ist das Erste was Sie
sichern m&uuml;ssen, der Web-Server. Dies ist weit au&szlig;erhalb des Rahmens dieses
Artikels. Wenn Sie mehr &uuml;ber dieses Thema lernen wollen, gibt es dazu Unmengen
an verf&uuml;gbarer Dokumentation. Ein sch&ouml;ner Start ist das
<A href="http://www.linuxdoc.org">Linux Documentation Project</A>.
    <br>
    Der n&auml;chste Schritt betrifft den Datenbank-Server. Wenn Sie ein
    Werkzeug wie MySQL installieren, vergessen Sie nicht den Sicherheitsteil
    des Manuals zu lesen. Nochmals gilt die grundlegende Sorge den
    Benutzerpa&szlig;w&ouml;rtern: Lassen Sie niemals ein Benutzerkonto ohne Pa&szlig;wort,
    insbesondere das root-Account der Datenbank (welches ein anderes als das
    des root-Account des Rechners sein sollte). Der andere wichtige Punkt
    betrifft die Rechte: geben Sie nicht jedem alle Rechte. Es scheint
    offensichtlich... und deshalb vergessen es viele Leute einfach!
    <br>
    Um noch weiter zu gehen: warum nicht die Datenbank in eine Chroot-Umgebung
    verschieben? Lesen Sie
    <A href="article225.shtml">Mark's article</a>"Chrooting all services"
    &uuml;ber dieses Thema. Er schreibt &uuml;ber eine andere Datenbank, aber was er
    schreibt, kann auf MySQL angewendet werden.
    <br>
    Eine andere Sicherheitsma&szlig;nahme betrifft die Datenzirkulation. Es ist
    kein schlechter Gedanke, die Daten durch einen Tunnel zu senden und zu
    empfangen. Sie k&ouml;nnen den Artikel
    <A href= "../May2001/article202.shtml">Durch den Tunnel</a>
    f&uuml;r weitere Hinweise durchlesen.
    <br>
    Nicht zuletzt ist sicheres Programmieren einer der Grundgedanken. Perl ist
    eine gro&szlig;artige Sprache, aber es ist recht einfach, damit Programmierfehler
    zu machen. Ein weiterer LinuxFocus-Artikel kann Ihnen beibringen, was zu tun ist,
    besonders bei Perl. Schauen Sie sich mal
    <A href="../November2001/article203.shtml">hier</a> um. Es ist der letzte
    Artikel der "Sicheres Programmieren"-Serie und betrifft besonders
    CGI-Skripte. Ein Mu&szlig;!
    <br>
    Nat&uuml;rlich setzt dies voraus, da&szlig; Sie schon ein gesichertes System ohne
    bekannte Sicherheitsl&ouml;cher haben, mit den letzten Patches und vielen
    n&ouml;tigen Sicherheitswerkzeugen wie NIDS (Network Intrusion Detection
    System), wie Snort (auf
    <A href="http://www.snort.org/">http://www.snort.org/</a>),
    Firewall, Port- und Sicherheitsscanner (<A href=
    "http://www.insecure.org/">nmap</a>, <A href=
    "http://www.nessus.org/">nessus</a>), etc.
    <br>
    Wenn Sie es sich leisten k&ouml;nnen, dann k&ouml;nnen Sie sich auch f&uuml;r jeden
    angebotenen Dienst einen anderen Server einrichten: ein Web-Server, ein
    Datenbank-Server... und deren Mirror f&uuml;r Hochverf&uuml;gbarkeit. Und so weiter!
    Sie werden niemals damit fertig, da Sicherheit niemals erreicht wird.
    Versuchen Sie einfach die Risiken zu reduzieren... und sie werden t&auml;glich
    immer schlimmer. Ich habe Sie gewarnt.
    </p>

<A NAME="226lfindex5">&nbsp;</A>
<H2>Was noch?</H2>

 <p>
 Da gilt: "There Is More Than One Way to Do It (viele Wege f&uuml;hren nach Rom)",
 k&ouml;nnen Sie es sich
 selbst aussuchen, wie Sie die Sache verwirklichen. Es gibt viele
 RDBMS und viele Sprachen, um mit ihnen zu kommunizieren. Der
 Gedanke hinter diesem Artikel war, zu zeigen, wie gut MySQL und
 Perl arbeiten, wenn man sie zusammen nutzt.
 <br>
 Nat&uuml;rlich war die Wahl sehr subjektiv: Ich liebe MySQL, weil es
 eher klein ist, unter vielen Betriebssystemen l&auml;uft, schnell und
 zuverl&auml;ssig ist... Ausserdem sch&auml;tze ich die Arbeit des MySQL-
 Teams sehr, ohne die zahlreichen Helfer zu vergessen. Und was mir
 am meisten gef&auml;llt: diese Leute haben nicht versucht, das Rad neu
 zu erfinden. Sie liessen den Dingen ihre Einfachheit.
 <br>
 Bez&uuml;glich Perl wurde schon alles gesagt: Was k&ouml;nnte ich noch
 hinzuf&uuml;gen? Ich glaube, Sie k&ouml;nnen nicht ohne arbeiten, ob Sie nun
 ein Netzwerkadministrator sind oder ein Entwickler oder was auch
 immer. Die Perl-Community ist eine der gr&ouml;&szlig;ten Quellen von
 gemeinschaftlich geteiltem Wissen. Es ist ein Magazin erh&auml;ltlich,
 welches sich Perl Journal nennt, welches inzwischen jeder zweiten
 Ausgabe des SysAdmin Magazins beiliegt. Wenn Sie es abonnieren m&ouml;chten,
 dann gehen Sie auf <A href="http://www.samag.com/">http://www.samag.com/</a>.
 <br>
Da wir gerade &uuml;ber gro&szlig;artige Arbeit sprechen: hier kommt der &uuml;bliche Abschnitt
mit dem Off-Topic-Thema. Sie, die LinuxFocus-Leser, haben wahrscheinlich die
kleine Anzahl von beteiligten Leuten dieses Magazins noch nicht wahrgenommen.
Trotzdem k&ouml;nnen Sie es in vielen verschiedenen Sprachen lesen. Haben Sie
jemals bemerkt, da&szlig; einige der Teams fast immer aus einer oder zwei Personen
besteht, die die ganze Arbeit machen? Sie sind Webmaster, &Uuml;bersetzer usw.
Schauen Sie beim russischen oder t&uuml;rkischen Team nach: Sie werden sehen, da&szlig;
die meisten der Artikel von Kyril oder Erdal &uuml;bersetzt werden. Schauen Sie bei
den Projekten, die am Entwickeln sind, wie Arabisch oder Portugiesisch:
gleiches Ergebnis! Ich m&ouml;chte ihnen allen zu dieser gro&szlig;artigen Arbeit
gratulieren. Danke an Euch alle: Die Free Software Community verdankt Euch
viel.
<br>
Entschuldigung f&uuml;r diese Abschweifung, aber ich glaube, das mu&szlig;te gesagt
werden.
<br>
Zur&uuml;ck zum Thema: Lassen Sie mich mit ein paar Worten &uuml;ber Freie Software
abschliessen. Die Leute bei MySQL oder Perl verdienen ein herzliches Dankesch&ouml;n.
Sie versorgen Sie mit gro&szlig;artigen Werkzeugen, meist kostenlos. Dennoch sind
diese Werkzeuge oft so gut wie echte kommerzielle Produkte (wenn nicht sogar
besser), sie werden regelm&auml;&szlig;ig verbessert, sehr gut dokumentiert und Sie k&ouml;nnen
sie auf fast jedem Unix verwenden. K&ouml;nnen Sie woanders etwas Vergleichbares
finden?  Ich f&uuml;rchte nicht!
<br>
Dieser Artikel wird Ihnen wahrscheinlich nicht viel beibringen, wenn es Sie
jedoch dazu anregt, diese Produkte auszuprobieren, ist er nicht nutzlos.
<br>
Leben wir nicht in einer gro&szlig;artigen Zeit?
</p>

<A NAME="226lfindex6">&nbsp;</A>
<H2>Referenzen</H2>

<p>
<A href="http://www.perl.org">Perl mongers</a>
<br><br>
Guidos Perl-Tutorium:
<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>
Buchkritik von "Professional Perl Programming":
<br><br>
<A href="../July2001/article208.shtml">Perl Programming</a>
<br><br>
<A href=
    "http://www.mysql.com/Dowloads/Contrib/mysqladmin-atif-1.0.tar.gz">Atifs</A>
    Beitrag zu MySQL.
<br><br>
Eine &Uuml;bersicht von MySQL in LinuxFocus; ein alter, aber immer noch aktueller
Artikel:
<br><br>
<A href="../July1998/article59.html">MySQL</a>
<br><br>
Ein altes LinuxFocus SQL-Tutorium in zwei Teilen:
<br><br>
<A href="../May1998/article38.html">SQL Teil I</a>
<br>
<A href="../July1998/article58.html">SQL Teil II</a>
<!-- vim: set sw=2 ts=2 et: -->
  



<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Talkback f&uuml;r diesen Artikel</h2>
Jeder Artikel hat seine eigene Seite f&uuml;r Kommentare und R&uuml;ckmeldungen. Auf dieser Seite kann jeder eigene Kommentare abgeben und die Kommentare anderer Leser sehen:
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=226&amp;lang=en"><b>&nbsp;Talkback Seite&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%">
<A HREF="../../common/lfteam.html">Der LinuxFocus Redaktion schreiben</A>
<BR><FONT COLOR="#FFFFFF">&copy; Georges     Tarbouriech, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
<BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=de&amp;article=article226.shtml" target="_TOP">Einen Fehler melden oder einen Kommentar an LinuxFocus schicken</A><BR></TD>
<TD BGCOLOR="#9999AA">
<!-- TRANSLATION INFO -->
<font size=2>Autoren und &Uuml;bersetzer:</font>
<TABLE>
  <tr><td><font size="2">en --&gt; -- : Georges Tarbouriech <small>&lt;georges.t(at)linuxfocus.org&gt;</small></font></td></tr>
  <tr><td><font size="2">en --&gt; de: Hubert Kai&szlig;er et al &lt;hubert.kaisser(at)botb.de&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2002-01-01, generated by lfparser version 2.23</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>