[LinuxFocus-icon]
��ҳ  |  վ���ͼ  |  ����  |  ����

���� | �����ڿ� | ���� | ����LF
This document is available in: English  Castellano  ChineseGB  Deutsch  Francais  Nederlands  Portugues  Russian  Turkce  Arabic  

Georges Tarbouriech
by Georges Tarbouriech
<georges.t(at)linuxfocus.org>

��������:

Georges����ʹ��Unix���꣬��ϲ���������������������רҵ�����ڵ����⡣


Ŀ¼:

 

MySQL & Perl, ����֮��

MySQL and Perl

ÕªÒª:

MySQL��Perl���������൱��ʱ�䣬����"ʱ��"��ͣ�仯�ţ�������Ȼ���㷺ʹ�á�����������ν����ֹ��߽����һ��Ӧ����Ineternet���������ϡ����е����ӱ�д��Unixϵͳ����Ȼ��ͬ������Ӧ���������㷺ʹ�õ�ϵͳ�С�
���Ķ������ϵ�Ӧ�����������ۣ������������ԣ��ٶȣ��ɿ��ԣ���ȫ�Եȡ�
���IJ�����һƪMYSQL��Perl�Ľ̳̣�Ҳ����һƪ��MYSQL��Perl�����ۡ�
���ǽ�������ν��ʹ��MySQL��Perl����Ҫ����:"there is more than one way to do it"��



 

What about this nice pair ?

MySQL��һ�ֹ�ϵ�����ݿ�ϵͳ(RDBMS),����ҳΪhttp://www.mysql.com/�� ����GNU GPL�����������ʹ�ã���ע���Ķ���Ȩ������ ������������ƽ̨�Ϲ���������������ͬʱ���ǿͻ��ˡ���MySQL֮�⻹��һЩ �����������������ʵ�RDBMS,�����ﲻ���καȽϣ����Ľ�����MYSQL������Ҳ����������Щ������ҵ���ݿ��� Informix,Oracle,Sybase�����ȣ����㹻��������MySQL��Internet��ʹ����㷺�����ݿ�ϵͳ֮һ�� ����ƪ����������ʹ�õ�MySQL�汾��3.23.36�����ڵ��ȶ����а汾��3.23.46�������ȴ���4.0�� ���ڲ���֮�С����ǿ��Դ��������ص����ǵ�Դ�������ļ���
Ϊ�˽�MySQL��Perl���ʹ�ã��㻹��ҪЩ����: Perl DBIģ�顣������Ӧ������DBI, Msql-Mysql-modules, Data-Dumper��Data-ShowTable�ȡ�
���IJ��������ǵİ�װ���̣���Ϊ�Ǻܼ򵥣�ͬʱ���е�˵���ļ��Ѿ��ṩ������Ҫ֪�����������ݡ�
Perlȫ����ʵ��ժ¼�뱨������(Practical Extraction and Report Language)�� ����������ļ�������������ժҪ...�����ܿ����Ĺ��ܾ�������չ�� �㼸���������������κ� �κ����飺ϵͳ������CGI�ű������Լ����ݿ�ӿڳ���
Perl����������(������ܳ���ȫ���Ļ�)Unix���а汾�У� ��������Щ����ѵģ���Щ���ǡ�����д��ʱ���ȶ��İ汾��5.6.1���汾5.7.2�ڲ����С� ���IJ��õ���5.005_03,�ܲ�����һ���汾�������ϵ㡣�����Ļ��ӻ�û��װPerl,����Դ�http://www.perl.com/���ء�Perl�ṩ������ģ�飬�����Ǽ�����������κ��£�����Դ������վ��CPAN��Ŀ�ҵ����ǡ�
���һ�㣬Ϊ��������������������ʼ�������㻹��Ҫһ��web��������ApacheӦ����һ��������ѡ���������ڶ���Unixϵͳ�С� ����㻹û�У����Ե�http://www.apache.org/���ء�

 

ʹ�õķ���

��Ҳ���Ѿ�ע�⵽LinuxFocus��־�ж������Եİ汾�������ζ����Ϊ�༭��Ҫͬʱ���� �������Լ��������İ汾��һ������£����ǿ��Կ�����Լ200ƪ���£�ƽ��ÿƪ������5�����Եİ汾�����������˴�Լ1000ƪ���²��һ��ڼ��������� ��Щ������Ҫ���浵����ʽ��׼�����ܽἰժҪ.....Ӧ����ô����Щ�£���Ȼ����Perl!
���ǵ��ܱ�Guido Socher��д������perl����ʹ���ǵĹ�����ļ������࣬��д��һ������ͷ�� Perl�̳̺�һ������Perl���顣���ձ���ĩβ�IJο����ײ��֡�
Javi,���ǵ��������༭����Perl��д��һ������������������ȡ�
Atif�����ǵ��������ߣ� ������perl��������������ĸ�����Perl�� ��ͬʱҲ׫д����MySQL�������£�������һ��WEB�������߸Ľ������� ͬ��������ڲο����ײ����ҵ�����
��֮���������Ѱ��һ��Perl���磬����LinuxFocus��
����LinuxFocus���İ�ı༭֮һ���Ҹ��������Ǵ������Լ���LinuxFocus���ݿ⣬�²���ʲô: MySQL ��Perl!

 

�������ݿ�

������Ӧ���Ѿ���ȷ��װ��MySQL�������ú��û����롣���ڰ�װ�����DZ������۵����ݣ�MySQL�Դ��� �����ĵ��Ѿ�����������ϸ�ڡ�
��mysql.server����MySQL������,�������ͬʱ���� safe_mysqld �ػ����̣��������Ը������Ρ�
��

mysql -h host -u user -p

���ӵ��������������������װ���㱾���ϣ��Ͳ��üӲ���-h host��
��������������㽫���ӵ������������ڿ��Խ����Լ������ݿ��ˡ�
��mysql������ʾ��״̬������

CREATE DATABASE lf;

����������ǵ�ʾ�����ݿ�(lf����LinuxFocus)�� ����Ը��������Ҫ�����ɱ�ġ����������Ǹ��û���Ȩ�ˣ���Ȼ������Ҫ���㹻��Ȩ�ޣ�����Ҫ ����administratorȨ�޵��û����ӣ��������Ҫ��ij���û��������ݿ⣬ͨ��

GRANT ALL ON lf.* TO username;

������Ȩ������

USE lf

ѡ��ղŴ��������ݿ⣬������һ�ű��� ���������Ǵ����ı���trissue,�����ʽΪ��

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));

ͨ�������������Լ��һ�����ǸղŴ����ı������Ƿ���ȷ

USE lf
SHOW TABLES;
DESCRIBE trissue;


����������Ҫ�ڱ����������ݣ���һ�ſձ��е������ݵ���򵥵ķ�������ʹ��һ�� ��TAB�ָ������ı��ļ�������ı��ļ��Ѿ�׼���ã�����

LOAD DATA LOCAL INFILE "maindb.txt" INTO TABLE trissue;

�������ı��ļ�û�� ���⣬��ô�������ű����Ѿ�������ݣ������ͨ�����������������һ�£�

SELECT * FROM trissue;

�⽫������ʾһ���ܳ����б��� ���ڣ���Ϳ��Խ��в�ѯ������κ����͵������ˡ�
ok,������Ϊֹ�� ���ǽ�������MySQL���Ϳ������κ����飬��ô����Perl����ʲô��

 

Perl����

Perl���԰��������Զ����в�ѯ���������ʾ��һ��WEB������ϣ��ȵȡ��ظ�һ�飬 ������ҪΪPerl��װ��ȷ��ģ��ʹ֮����MYSQL���Ϲ�����
����������Perl��дһ��CGI�ű������������ǽ�Perl��HTML���������ʵ�ֲ�ѯ���ݿ� ���������ʽ�������
������һ���򵥵Ľű�����ѯijһ���ߵ��������£���ʾ���µı�ţ����࣬ ���⣬��ͬ���԰汾�ķ����ߵ��������������µ���־�ںš�
����Խ�����ű�����һ��ģ��ʹ�ã�����ע��������̲�����һ�� �dz��ɿ��ij�������Դ�������������ص�һ������ϸע�͵İ汾��=>here<=.

#!/usr/bin/perl -Tw
# First, we say this is a "Tainted" Perl script.
#
# This is a comment
# db consult
#
# We use the Perl DBI module
use DBI;

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

print <<END_of_start;

Content-type: text/html

<html>
<title>LFAuthors main db</title>

<center><TABLE>
<TR VALIGN=TOP>
<TD><form action="/cgi-bin/lf.cgi" method="get">

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

�����ýű�ȥ��ѯ���ݿ⡣

<center><H2>Search by author</H2></center>

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


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;

�����ýű�ȥ��ʾ��ѯ����� ������Dz����Ʋ�ѯ������������ʾ�����ݿ���������ݣ���������ṩһ�����������������ʾ�� ���������ص��������¡���������ݿ�����ǧ����¼ʱ�����Ƽ���ʾ���������ݣ�

print <<END_suite;

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

END_suite

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

}
print "</TABLE>";
print "<BR>";
print "<BR>";
print "<br>";


} else {

# DB Connect

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


# Search

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

$sth->execute;


# Display result


print <<SUITE;

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

SUITE

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

}
print "</TABLE>";
print "<BR>";

}
print end_html;
$sth->finish;


# Disconnect

$dbh->disconnect;

exit;

�����������������ʾ�IJ�ѯ�����

query


 

��ȫ����

�������Ϊ�����վ�������ݿ�֧�֣�����ȻҪ���ǰ�ȫ�Ե����⡣�������Dz����ṩ һ������ȥ�����Ͱ�Ľ��WEB�����������ݿ��������ȫ���⣬Ȼ����һЩ������ԭ������Ҫ ע��ġ�
�򵥵�˵����������WEB���������ṩ��������ʱ��������Ҫ���ǵ���WEB�������İ�ȫ�ԡ� ���뱾�ĵ������޹أ��кܶ��ĵ��������ⷽ�����ݡ�һ���ȽϺõ�ȥ���� the Linux Documentation Project.
��������һ����������ݿ�������йء��ڰ�װһЩ������������MySQL,��Ҫ�����Ķ������ֲ��� ���ڰ�ȫ�ԵIJ��֡����ظ�һ�¹����û�����Ļ���ԭ�򣺲�Ҫ���κ��ʺ�û�����룬�ر������ݿ� ��root�ʺţ�������������root�ʺ��Dz�ͬ�ģ�����һ��Ҫ����Ȩ�޵����ã�����Ҫ�������ʺŶ����� ��ȫ���Ƶ�Ȩ�ޡ��������Եĺ��ձ飬�������ͨ����������һ�㡣
���⣬����������chroot���ݿ⡣����Կ�����һ����Mark������ ������������һ�����ݿ⵫��Щ���ݿ�Ӧ�õ�MySQL�С�
��һ����ȫ��ʩ�漰�����ݵĴ��͹��̡� ��һ���ܵ���tunnel������պͷ��������Ǹ����������⡣�ο�Through the tunnel��
���������Ҫ��һ�㣬��д��ȫ�ij��� Perl��һ��ΰ������ԣ����ڱ�д����Ĺ����о������׳���������һƪLinuxFocus���½������������ �ر�����Perl��ʱ�� ������ƪ����. ����"��д��ȫ�ij���"ϵ�е����һƪ���£�ר��̸�����й�CGI�ű������⡣���ض�����
��Ȼ,�������ȼٶ�������һЩ��ʩ֮ǰ���Ѿ�ӵ��һ���ܼ�̵�ϵͳ��û����Щ������©�����Ѿ���װ�����µ� �������Լ�����һЩ�ر��İ�ȫ���ߣ�����NIDS(Network Intrusion Detection System)��snort(from http://www.snort.org/), ����ǽ,�˿��밲ȫɨ�蹤��(nmap, nessus)�ȵȡ�
����㾭�����ܹ����ܣ������ �ڱ��һ̨������ϰ�װ��������������������һ��������WEB��������һ�����������ݿ������...�Լ������������ �Դ�����ø߿ɿ��ԡ� ���棺Ϊ��֤��ȫ������ ������Զ�����������Զ�������������İ�ȫ����ֻ����ͼȥ����Σ�գ�ÿ�����Ƕ���ø���Σ�ա�

 

����

��Ϊ"There Is More Than One Way to Do It",�����ѡ����ķ�ʽ�� ������������RDBMS���Լ���������֮��ص����ԡ�д��ƪ������Ϊ��չʾMySQL��Perl����γ�ɫ�ĺ�����
��Ȼ������ѡ��������Ե������ԣ���ϲ��MySQL����Ϊ��С������������ϵͳ�����У� �ٶȿ죬�ɿ�...��Ҳ�dz�����MySQL��Ĺ��������������ڶ��Ͷ���ߡ�����Ϊ���͵��ǣ����� �����������ظ��ԵĹ���(�ڴ�֮ǰ�Ѿ�����ҵ�����Ľ������)�������������ĸ��Ӽ򵥡�
����Perl,Ҫ˵�Ķ�˵�ˡ���Ҫ����һЩ�� ������û���������޷������ģ���������һ�����ܻ���һ������Ա��������Ĺ����� Perl����(the perl community)��������������Դ������֮һ����һ������Perl Journal����־��������SysAdmin��־��һ���֣�ÿ����ƪ���£�����Ե�http://www.samag.com/���ġ�
һЩ���⻰: LinuxFocus�Ķ�����Ҳ��û��ע�⵽�뱾��־��ص�һЩ�ˣ�Ȼ������ȴ���Կ���LinuxFocus��־�������Եİ汾�� ��û��ע�⵽һЩС�� ������Ҳ��ֻ��һ�����ˣ�ȴ����˴����Ĺ�������������վά���ߣ� ���ߣ��ȵȡ����������飬���������飬��ᷢ�ֶ������¶�����Kirill��Erdal���롣 ��������������������V��ͬ����ˣ���Щ�˸��˶�ô�˲���Ĺ�������Ҫ�����DZ�ʾף�أ���л��λ! ������������Ӧ����������л��
��Ǹ��Щ�����ĵ������޹أ�����������Щ��ֵ��һ��ġ�
�ص����µ�������������һ�ι��������������������������ġ�Ӧ����л��Щ������MySQL�� Perl���ˣ������������ṩ������ΰ��Ĺ��ߣ����Ҷ�������ѵġ���Щ��������������ҵ ��Ʒ���Ҳ����ѷɫ��������ܱ����dz�ɫ�Ļ��������Ǿ������£�������ϸ���ĵ�������� ���������ڼ�������Unixϵͳ�С������ҵ�ͬ����ɫ�ı�����������벻�ܣ�
��ƪ���¿���û�н�����ٶ��������������ʹ������б�Ҫ������Щ���������������õġ�
���Dz���������һ��ΰ���ʱ����

 

�ο�

Perl.org
cpan.org, Perl�ĵ�����

Guido��Perl�̳̣�

Perl I
Perl II
Perl III

רҵPerl�������

Perl Programming

Atif��MySQL��������

LinuxFocus��־��MySQL����: �����£�������һ��

MySQL

LinuxFocus�ϵ�һƪ���ϵ�SQL�̳�

SQL Part I
SQL Part II  

����ƪ���·�������

ÿƪ���¶��и��Եķ���ҳ�档�����ҳ����������ύ���ۣ�Ҳ���Բ鿴�������ߵ����ۣ�
 ï¿½ï¿½ï¿½ï¿½Ò³ï¿½ï¿½ 

��ҳ��LinuxFocus�༭��ά��
© Georges Tarbouriech, FDL
LinuxFocus.org

���������LinuxFocus��������������
������Ϣ:
en --> -- : Georges Tarbouriech <georges.t(at)linuxfocus.org>
en --> zh: yey <yeyxx(at)263.net>

2002-01-14, generated by lfparser version 2.23