original in en Georges Tarbouriech
en to tr Ceyhun Elmas
Georges uzun zamand�r Unix kullan�yor. Uzman ortamlarda �cretsiz yaz�l�mlar�n yay�lmas�na katk�da bulunan �r�nleri seviyor. .
MySQL ve Perl uzun zamand�r benzer ortamlarda kullan�l�yor. Moda her nekadar de�i�iyor olsa bile han�z yayg�n bi�imde kullan�l�yorlar.
Bu yaz� bu iki �r�n�n tek bir b�t�n olarak nas�l �al��t���n� internet ya da intranet �zerine anlat�yor.
Sa�lanan �rnekler Unix sistemler i�in yaz�ld� , �cretsiz ya da de�il, di�er yayg�n sistemlere uygulanabilir olsa bile.
Bu yaz� nedir : bu �ift ile neler yap�labilece�ine dair bir k���k inceleme, kullan�m kolayl�klar�n�, h�z ve uyumluluk ve g�venlik taraflar�n� g�sterme...
Bu yaz� ne de�ildir : ne MySQL ne de Perl kayna��d�r. Ya da ne MySQL ne de Perl incelemesidir.
.
Bundan dolay�, MaySQL ile Perl ortak �al��mas�n� g�rece�iz, "bunu yapabilmenin pek �ok yolunun var oldu�unu " unutmadan ...
MySQL bir �li�kisel Veritaban� Y�netim Sistemidir (RDBMS) ve http://www.mysql.com taraf�ndan sa�lan�r. GNU GPL alt�nda bir uyarlamad�r, ne �zerine kulland���n�zdan ba��ms�zd�r.
Lisans konular�n� MySQL'in g�rsely�resinden inceleyebilirsiniz. Sunucu ya da istemci olarak pek �ok sisitemde �al���r.
Bir ka� di�er RDBMS de �cretsiz olarak bulunuyor ve bu yaz� i�in MySQL se�ildi�inden beri herhangi bir k�yaslamaya girmiyoruz.
B�y�k "ticari" silahlarla da k�yaslamayaca��z, Informix, Oracle, Sybase...
MySQL'in Internet �zerinde en yayg�n kullan�lan DBM oldu�unu s�ylemek yeterli olacakt�r.
Bu yaz� i�in 3.23.36 (tekrar,
iste�e g�re) s�r�m�n� kullan�yoruz. Bu yaz� s�ras�nda , var olan dura�an s�r�m 3.23.46 ve deneysel olan� ve uzun zamand�r beklenen s�r�m� 4.0.
Bunlar derlenmek �zere kaynak kod olarak ya da paket olarak indirilebilir.
MySQL'in Perl ile birle�iminde, baz� fazladan bile�enlere gereksinimniz var :Perl
DBI mod�lleri. En az�ndan , DBI'y� indirebilirsiniz, Msql-Mysql-mod�lleri, Data-Dumper
ve Data-ShowTable.
Bunlar�n y�klenmesinden �ok kolay ve a��k oldu�u i�in bahsetmeyece�iz ve bilmeniz gereken her�eyi paketler
sa�l�yor.
Perl Kolay ��kar�mlar ve Raporlama Dili i�in bir ortamd�r. Ba��nda, dokuman uyarlama i�in tasarland� (parsing, extracting...) fakat
kolayl�kla �ok daha fazlas�n� yapar �ekle geldi. Perl ile hemen hemen her�eyi yapabilirsiniz. Y�netsel i�lemlerden ger�ek uygulamalarla cgi betiklerine
ve elbette veritaban� aray�zlerine kadar ...
Perl �cretsiz ya da de�il pek �ok (e�er t�m�n�n de�ilse de) Unix da��t�m�n�n bir par�as�d�r. Var olan dura�an s�r�m� 5.6.1 dir ve
deneysel olan� 5.7.2 �u anda yaz�l�yor. Yaz� i�in eski olan� iyi , 5.005_03.
Burada makinan�za Perl y�klemek zorunda de�ilsiniz, ( bu nas�l m�mk�n olabilir ?)http://www.perl.com adresinden indirebilirsiniz.
Perl her�eyi yapabilmeniz i�in tonlarca mod�l sa�lar. Bunlar� g�rsel y�renin CPAN k�sm�ndan sa�layabilirisiniz : alt�nmadeni !
Son olarak , her iki ara�la �al��mak i�in , s�rpriz : bir g�rsely�re sunucusuna gereksiniminiz var !
Apache �cretsiz ya da de�il pek �ok Unix da��t�m�n�n bir par�as� olarak herzamanki gibi do�ru se�enek olarak g�r�n�yor .
Burada buna sahip de�ilseniz , http://www.apache.org adresinden temin edebilirsiniz.
B�y�k olas�l�kla LinuxFocus'un �oklu dil deste�i sa�lad���na dikkat etmi�sinizdir.
Bunun anlam�,edit�r oldu�unuzda yeni yaz�lar�n ve �evirilerin durumunu y�netme gere�i duyars�n�z.
Ba�ka bir deyi�le, kim neyi nezaman yapacak ... Bu anda , 5 dilde 200 makale sa�lan�yor.
Bu da 1000 makale eder (ne kadar zekiyim ?) ve hala art�yor. Bunlar ar�ivlenmeli , bi�imlenmeli, �zetlenmeli ...
Bunlar� nas�l y�netmeyi d���n�r�s�n�z ? Elbette Perl ile ...
Ba� edit�r�m�z Guido Socher, �al��malar�m�z kolayla�t�ran pek �ok Perl program� yazm��t�r.
Ayn� zamanda 3 b�l�ml�k Perl yaz�s� ve bir kitap incelemesi bulunmaktad�r.
Yaz�n�n sonundaki referans k�sm�na bak�n�z...
Javi, �spanya edit�r�, Perl ile �eviri durumlar�n� g�steren bir program yazm��t�r.
Atif, y�ld�z yazarlar�m�zdan birisidir, Perl k�rall���ndan gelmektedir, bu nedenle ana dili Perl'dir.
Sonu�ta , MySQL ile de birle�erek g�rsel y�re ara�lar�n� geli�tiriyor.
Yaz�n�n sonundaki referans k�sm�na bak�n�z...
T�m bunlar size e�er Perl cennetine bakmak isterseniz Linuxfocus'u okuman�z� s�yl�yor.
Frans�zca edit�r� oldu�umdan beri ve epeyce tembel, kendi Linuxfocus veritaban�m� olu�turdum,
ne ile mi :
MySQL ve Perl !
Burada MySQL'in d�zg�n �ekilde y�klendi�ini varsay�yoruz,
kullan�c�lar olu�turulmu� ve �ifreler verilmi�. Y�kleme bu yaz�n�n konusu de�il ve MySQL ile ilgili
�ok geni� bir kaynak bulunuyor ve size her�eyi s�yl�yor bu kaynaklar ...
MySQL sunucusuna mysql.server beti�i ile ba�lay�n, bunun �al��mas�ndan beri safe_mysqld
daemon ve ve siz bu daemon'a se�enekleri es ge�ebilirisiniz.
Sunucuya eri�im :
mysql -h host -u user -p
E�er sunucu yerel makinan�zda ko�uyorsa -h host kullan�m�na gereksiniminiz kalmaz.CREATE DATABASE lf;
yaz�n . Bu bizim �rne�imiz (lf LinuxFocus i�in k�saltmad�r) ve burada kendi veritaban�n�za diledi�iniz ismi verebilirisiniz. Sonra, sa�lanan kullan�c�lara baz� yetkiler verebilirisiniz, bunu do�ru bi�imde yapt���n�z varsay�yoruz (y�netici olarak ba�lanma hakk�na sahipsiniz). E�er kullan�c� olarak veritaban�n� y�netmek istiyorsan�z baz� ayr�cal�klar verebilirisniz :GRANT ALL ON lf.* TO username;
Veritaban�n� se�in ve �unu yazarak olu�turun :USE lf
Gereksinimleriniz do�rultusunda tablonuzu olu�turun. �rne�imizde trissue isminde olu�turuyoruz. :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));
Kontrol edelim, b�yle olmal�:
USE lf
SHOW TABLES;
DESCRIBE trissue;
LOAD DATA LOCAL INFILE "maindb.txt" INTO TABLE trissue;
E�er metin do�ruysa tablo �imdi doludur. Kontrol etmek i�in :SELECT * FROM trissue;
Bu uzun bir liste g�stermeli.�imdi, verinin istedi�iniz herhangi bir bi�imdeki listesini alabilirisiniz.
Perl bize otomatik s�ralamalarda yard�m edecek, g�rsel y�re inceleyicisinde sonu�lar�n g�r�nt�lenmesinde
oldu�u gibi ... Burada bir kez daha MySQL ve Perl birlikteli�i i�in Perl mod�llerinin do�ru y�klendi�ini
varsay�yoruz.
�imdi cgi betikleri gibi �al��acak olan Perl betikleri yazaca��z.
Bunlar bize Perl ve HTMl kar���m� veritaban� listelerini ve g�r�nt�lemeleri sa�layacak.
Basit bir �rnek betik kullanaca��z, ayn� yazar taraf�ndan yaz�lm�� t�m yaz�lar� listeliyor.
Yaz� numaralar�n�, kategorileri , konular� �evirmenlerin isimlerini farkl� diller i�in
(yaln�zca tam desteklenen dillerde), yay�nlanm�� say�lar� listeleyece�iz.
Bu beti�i model olarak kullanabilirisiniz, fakat bu �rne�in �ok g�venli olmad���n� dikkate al�n.
Daha geli�mi� s�r�m�lerini =>here<= aderesinden indirebilirisiniz..
#!/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;
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;
A��kca, e�er internet �zerinde bir veritaban� servisi sa�lamak isterseniz g�venli�i en �nemli konu olarak d���nmelisiniz.
Elbette, ad�m ad�m g�venli g�rsel y�re ya da veritaban� sunucusu anlatmayaca��z.
Bununla birlikte temel konulara de�inece�iz.
K�saca, internet �zerinde bir servisiniz oldu�unda , ilk �ey g�rsel y�re sunucusunun g�venli�idir.
Bu konu bu yaz�n�n �tesindedir. Bu konuyla ilgili daha geni� bilgi edinmek istrersenizthe Linux Documentation Project adresinden i�e ba�lamal�s�n�z.
Bir sonraki ad�m veritaban� sunucusudur. MySQL gibi bir ara� y�kledi�inizde manuallerin g�venlik k�s�mlar�n�
okumay� unutmay�n. En temel konu �ifrelerdir : (�zellikle root gibi) kullan�c�lar� �ifresiz b�rakmay�n
(makinan�n root �ifresinden farkl� olmal�). Di�er �nemli nokta ise yetkilerdir :
herkese her�eyi vermeyin. Bu �ok kolayd�r ... ve bu nedenle pek �ok insan bunu unutur !
Biraz daha ileri giderek, neden veritaban�n� chrooting yapm�yorsunuz ? Mark'�n yaz�s�na bak�n "Chrooting all services"
bu say�da . Farkl� vertabanlar�ndan bahsediyor fakat MySQL'i uygulayabilirken ne diyor ...
Di�er g�venlik konusu veri dola��md�r. Bir t�nelden verinin yollan�p al�nmas� k�t� bir fikir de�ildir.
Daha fazla bilgi i�in Through the tunnel yaz�s�na g�zatabilirsiniz.
Son olarak , g�venlik programlama a�k�lardan birisidir. Perl b�y�k bir dildir,
, ancak hatalarla dolu programlama yapmak olduk�a kolayd�r. Di�er LinuxFocus yaz�s�
size ne yapmak istedi�nizi ��retecek, �zellikle Perl ile. Bak�n�z : . G�venlik Programlama serisinin son yaz�s� ce �zellikle
cgi bettiklerini kaps�yor.Kesinlikle "okumal�s�n�z" !
Elbette, bu varsay�mlar bilinen a��klard�r ve son yamalarla ve pek �ok g�venlik program�yla NIDS gibi
(Network Intrusion Detection System) snort gibi (from http://www.snort.org), firewall, port ve
g�venlik taray�c�lar� (nmap, nessus), gibi ara�larla azalt�labilir.
E�er sat�n alabilecek g�c�n�z varsa, sa�lana her servis i�in ayr� sunucular kullanabilirisniz
: bir web sunucu, bir veritaban� sunucusu... ve y�ksek eri�ilebilirlik i�in yans�lama.
Ve daha pek �o�u! Bununla bitmiyor, g�venlik s�n�rlar� zorland���ndan beri.
Yaln�zca riski azaltmaya �al���yorsunuz... ve her ge�en g�n bunu sa�lamak daha zor oluyor , bizden uyarmas� ...
Burada birden fazla yol bulunmaktad�r, kendi yolunuzu se�ebilirsiniz. Pek �ok RDBMS bulunuyor ve pek �ok dil bunlarla ileti�im kurabiliyor.
Bu yaz�n�n arkas�ndaki fikir MySQL ve Perl'in birlikte ne kadar g�zel �al��t�klar�n� g�stermek.
Elbette se�im �nemli bir konu: MySQL 'i seviyorum ��nk� boyutu epeyce k���k, pek �ok i�letim sisteminde �al���yor,
h�zl�, uyumlu ... MySQL'i olu�turak tak�ma �ok �ey bor�luyum. MySQL team, katk�da bulunan say�s�z ki�iyi unutmadan.
Ve en �ok neyi seviyorum : tekerle�i yeniden ke�fetmediler . Baz� �eylerin basitli�ini korudular.
Perl ile ilgili herkes �unu sorar : ne ekleyebilirim ?
�nan�n�yorum ki e�er a� y�neticisi, geli�tirici ya da her ne iseniz onsuz �al��lamazs�n�z.
Perl herkese a��k mute�em bir kaynak. Degisi var, ismi Perl Journal,
SysAdmin dergisileri i�inde yer al�yor, her iki say�da E�er kay�t olmak isterseniz : http://www.samag.com.
B�y�k i�lerden konu�tu�umuzdan beri, burada pek �ok konu geliyor.
Bizim LinuxFocus okuyucular�m�z b�y�k olas�l�kla dergiyle ilgili az say�da insan�n ilgilendi�inin fark�nda de�il.
Bununla birlikte, yaz�lar� pek �ok farkl� dilde okuyabilirsiniz. Hi� dikkat ettiniz mi tak�mlar�n baz�lar� neredyse durmaks�z�n
�al���yor, yaln�zca bir ka� ki�i mi bu b�y�k i�i yap�yor ? Onlar g�rsely�re y�neticileri, �evirmenler ...
Rus tak�m�na, T�rk tak�m�na g�z at�n, Kirill ya da Erdal taraf�ndan �evrilmi� pek �ok yaz� g�receksiniz.
Geli�me a�amas�ndaki projelere g�z at�n Portekiz ya da Arap�a gibi : ayn� sonu� !
Bu b�y�k i�i yapan herkesi tebrik ediyorum . Hepsine te�ekk�r ediyorum: �zg�r yaz�l�m d�nyas� sizlere �ok �ey bor�lu.
Konu d���na ��kt���m i�in �z�r dilerim, fakat bunun s�ylenmesi gerekti�ine inan�yorum.
Konuya d�nelim,bir ka� s�zc�kle �cretsiz yaz�l�m konusuyla bitirelim. MySQL ve Perl'deki insanlar
�ok fazla te�ekk�r� hakediyor.B�y�k �l��de �cretsiz muhte�em �r�nler sa�l�yorlar.
Bununla birlikte bu ara�lar en az ticari ara�lar kadar iyi.
Dokumanlar� g�ncellendi, her Unix sistemi i�in �ok g�zel kaynaklar bulunuyor.
Bir benzerini bulabilir misiniz ? Korkar�m hay�r !
Bu yaz� b�y�k olas�l�kla �ok fazla �ey ��retmeyecek,bununla birlikte s�ylenenleri denerseniz
, �ok da k�t� bir yaz� olmayacak.
Muhte�em bir zaman ya�am�yor muyuz ?
Perl.org
cpan.org, the perl archive
Guido'nun Perl yaz�lar� :
Perl I
Perl II
Perl III
Professional Perl Programming book review :
Perl Programming
Atif's
contribution to MySQL.
LinuxFocus MySQL incelemesi : hen�z eski yaz�, g�ncellenmi�i :
MySQL
Eski LinuxFocus SQL iki par�a yaz� :
SQL Part I
SQL Part II