Archangelll
New member
- Katılım
- 21 Tem 2005
- Mesajlar
- 276
- Reaction score
- 0
- Puanları
- 0
Bilindigi gibi bilgisayar dunyasinda kullanilinan bir cok veritabani programi ve
sunucusu mevcuttur. Bunlarin cogu kullanisli olmasina ragmen cok pahali paket
programlaridir. MySQL in en buyuk ozelligi bedava olmasidir fakat ticari amacla
kullanildigi takdirde kucuk bir ucret odemek suretiyle ticari amaclada
kullanilabilir. MySQL'in diger en buyuk ozelligi ise veritabani pazarindaki en
buyuk rakiplerinden daha iyi, hizli ve kullanisli olamasidir. MySQL halen daha
gelistirilmekte olmasina ragmen mevcut haliyle zengin ve cok kullanilan
fonksiyonlar sunmaktadir. MySQL in yapilis nedeni, yaratildigi yerde
kendilerine cok buyuk bir veritabanini isleyebilecek bir SQL sunucularina
ihtiyaclari olmasiydi. Kendileri 1996 dan beri MySQL'i 10,000 tablo iceren 40
veritabanli bir ortamda kullanmaktadirlar ki bunlarin yaklasik 500 tanesi 7
milyon sutun icermektedir.
Bu dokumanda anlatilacak konular sirasi ile :
MySQL'in belli basli ozellikleri
MySQL'in elde edilmesi
MySQL'in kurulumu
MySQL'in belli basli ozellikleri
+ Sistemde birden fazla CPU var ise bunlari kullanma.
+ Degisik isletim sistemlerinde calismasi.
+ Degisik sutun tipleri. Isaretli/Isaretsiz 1, 2, 3, 4 ve 8 byte uzunlugunda
tamsayilar.
+ Ayni sorgulama icinde degisik veritabanlarindaki tablolari birlestirme.
+ Windows95 icin ODBC (Open-DataBase-Connectivity). Yani Microsoft Access'i
kullanarak MySQL server'a baglanabilirsiniz.
+ Buyuk veritabanlarini isleyebilme ozelligi.
+ C ve C++ dillerinde yazilmis olmasi.
+ Butun veriler ISO-8859-1 Latin 1 formatinda kayit ediliyor.
MySQL'in elde edilmesi
MySQL degisik isletim sistemleri icin mevcut olup http://www.tcx.se adresine
baglanilip elde edilebilecek siteler sirasiyla ulkelerine gore listelenmistir.
Bundan sonraki bolumde anlatilacak olan kurulum Linux (PC tabanli Unix isletim
sistem) sistemine uyarlanmis olacaktir.
MySQL'in kurulumu
MySQL in kurulumu iki cesit olup asagida anlatilacak olan binary dagitim setinin
kurulumu olacaktir. Binary ve source kurulumlari arasindaki tek fark source
larin kendi makinenizde derlenmesi olmasidir. Eger sisteminize uygun binary
dagitim seti var ise binary setini veya source setini kullanmak arasinda hic bir
fark yoktur. Asagida sirasi ile binary dagitim setini actiginizda belirecek
olan dizinlerin ve bunlarin hangi dosyalari icerdigi gosterilmektedir.
Dizin
Dizin Icerigi
bin
Istemci programlari ve mysqld sunucusu
data
Log dosyalari ve veritabanlari
scripts
mysql_install_db
share
Hata mesaj dosyalari
sql-bench
Test dosyalari
MySQL in binary dagitim seti unix ortaminda sikistirilmis bir sekilde
sunulmaktadir. Bu sikisitirilmis halini acabilmeniz icin siteminizde GNU gunzip
ve tar gibi programlarin mevcut olmasi gerekmektedir. Bunlardan gunzip programi
uncompress edip tar ise unpack etmektedir. Eger sisteminizde bunlar mevcut ise
basamak basamak asagidakileri uygulamaya baslayin eger sisteminizde bunlar
mevcut degil ise bunlari elde ediniz.
1)Ilk once sisteminizde MySQL'i kuracaginiz dizini belirleyiniz. Linux uzerinde
genelde programlar /usr/local dizini altinda bulunmaktadir. Biz kurulumu
yaparken yine standartlara uyarak binary dagitim setini /usr/local dizini altina
kopyaladik. Sizde eger Linux kullaniyorsaniz bu standarta uymaniz iyi olur.
2)/usr/local dizini altina kopyaladiktan sonra asagida belirtildigi gibi
yukarida bahsettigimiz gunzip ve tar programlarini kullanarak binary dagitim
setini acin.
prompt> gunzip < mysql-SURUM-ISLETIMSISTEMI.tar.gz | tar xvf -
Bu komut girildiken sonra "mysql-SURUM-ISLETIMSISTEMI" seklinde /usr/local
altinda bir dizin olusacaktir.
3)Dizini olusturduktan sonra bu dizin icin bir sembolik baglanti yaratabiliriz.
Sembolik baglantiyi mysql olarak secersek eger /usr/local altinda binary dagitim
setinin acilmis halinin bulundugu dizine girmek istedigimizde
prompt>cd mysql-SURUM-ISLETIMSISTEMI
yazmak zorunda kalacagiz ama mysql adi altinda bir sembolik baglanti
olusturursak
prompt>cd mysql
yazmamiz yeterli olacak. Bunuda asagida belirtilen sekilde yapabiliriz.
prompt>ln -s mysql-SURUM-ISLETIMSISTEMI mysql
4)Sembolik baglanti yaratildiktan sonra
prompt>cd mysql
komutu girilerek binary dagitim setinin acilmis halinin bulundugu dizine
girilir. Burda yukarida belirttigimiz dizinler mevcuttur. Burda en onemli olan
dizinler bin ve scripts dizinleridir. Sistemin herhangi bir yerinden bin dizini
altindaki programlara ulasmaniz icin sisteminizde PATH kismina bu dizini
eklemelisiniz. scripts dizini altinda bulunan mysql_install_db programi
sunucuya erisim haklarinin baslatilmasi icin kullanilmaktadir.
5)Perl DBI/DBD arabirim destegini istiyorsaniz /usr/local/mysql dizini altinda
bulunan perl dizinine
prompt>cd perl
girin ve burdan yine bu dizin altinda bulunan DBI dizinine
prompt>cd DBI
yazarak girin. Bu destegi kullanabilmeniz icin sisteminizde Perl 5.004_03 veya
daha yeni bir surumu bulunmasi mecburidir.Burda yapacaginiz tek sey asagida
komutlari girerek bu dizin altindaki herseyi derlemektir.
prompt>perl Makefile.PL
prompt>make
prompt>make install
5. islemden sonra sisteminize mysql kurulmustur. Kurulumunuzun dogru ve calisip
calismadigini ogrenmek icin yapmaniz gerekenler sirasi ilen :
(Bunlari yapmadan evvel yukarida belirttigimiz gibin mysql dizini altinda
bulunan bin dizinini PATH inize eklemelisini.)
1)mysqld sunucu programini calistirip baslangic erisim tablosunu (kullanicilarin
ne haklarla veritabanina erisebileceklerini gosteren tablo) kurun. Bunuda
scripts dizini altinda bulunan mysql_install_db programi ilen elde
edebilirsiniz.
prompt>scripts/mysql_install_db
Eger bunu kurmazsaniz
mysqld: Can't find file: 'host.frm'
gibi bir hata ilen karsilasabilirsiniz ve bir onemli nokta daha bu programi
calistirirken root kullanicisi olarak calismalisiniz.
2)Sunucunun calisip calismadigini mysqladmin programi ile kontrol edin.
Asagidaki komut basit bir test olup sunucunun calisip calismadigini
belirtmektedir.
prompt>bin/mysqladmin version
Bu komutun sonucunda sistemden sisteme gore degisik sonuclar cikabilir ama genel
olarak aynidir. Ornek olarak asagida sonucu verilmistir.
mysqladmin Ver 6.3 Distrib 3.22.9-beta, for pc-linux-gnu on i686
TCX Datakonsult AB, by Monty
Server version 3.22.9-beta
Protocol version 10
Connection Localhost via UNIX socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Running threads: 1 Questions: 20 Reloads: 2 Open tables: 3
mysqladmin programi ilen daha neler yapabileceginiz ogrenmek istiyorsaniz
prompt>mysqladmin --help
komutu girilerek bilgi alinabilir.
3)Sunucu kapatip kapatamadiginiza bakin.
prompt>bin/mysqladmin -u root shutdown
4)Sunucuyu tekrardan calistirmaya bakin.
prompt>bin/mysqld &
5)Sunucunun calisip calismadigina basit bir kac ornekle devam edinki sunucunuzun
calismasindan emin olun.
prompt>bin/mysqlshow
Sonuc :
Databases
mysql
prompt>bin/mysqlshow mysql
Sonuc :
Database: mysql
Tables
Db
Host
User
prompt>bin/mysql -e "select host,db,user from db" mysql
Sonuc :
Host
Db
User
%
%
Test
Test_%
Eger yukaridaki sonuclari ekraninizda goruyorsaniz MySQl sunucunuz mukemmel bir
sekilde calismaktadir.
Sunucumuzda hic bir problem yok ise yapmamiz gereken en onemli nokta MySQL
sunucusunda tanimli olan root kullanicisina sifre vermektir. MySQL sunucusunda
tanimli olan root kullanicisi sunucudaki en yetkili kullanicidir. Yanliz bu
root kullanicisini Linux sistemindeki root kullanicisi ile karistirmayalim.
MySQL sunucusunun kendine ozgu kullanici ve buna bagli sifre listesi vardir.
Yani sunucuda eger kullanici yaratmak istiyorsaniz kullanici yaratirken bu
kullaniciya bir sifre ve erisim haklarini vermelisiniz. root kullanicisi MySQL
sunucusunda herseyi yapmaya yetkisi vardir. Yukarida dedigimiz gibi root
kullanicisina sifre vermeliyiz, bunuda asagidaki sekilde yapiyoruz.
prompt>mysql -u root mysql
mysql>UPDATE user SET Password=PASSWORD('yeni_sifre')
WHERE user='root';
Sunucunun yeni degerleri okumasi icin tekrar yuklenmesi lazim.
prompt>mysqladmin -u root reload
Biraz oncede belirtmistikki root kullanicisi MySQL sunucusunda tanimli olan en
yetkili kullanicidir. Fakat veritabanini root kullanicisinin haricinde
kullanacak kisiler olacaktir ve bunlarin bellirli veritabanlarina veya
veritabanindaki tabloya erisim haklari olacak veya olmayacaktir. Yine bu erisim
haklari root tarafindan kisiye yaratilan kullanicinin erisim haklarina bagli
olarak degisir. Asagida ornek olarak MySQL sunucusunda bir kullanicinin nasil
yaratildigi kisaca aciklanmistir.
1) Ilk olarak kullanici yaratmak icin MySQL sunucusuna root olarak
baglanilmalidir.
prompt> mysql --user=root mysql
2) Baglanti basarili oldu ise sira MySQL de sifresi MySqL98, kullanici adi
personel ve tum haklara sahip olan bir kullanici yaratmaya geldi.
mysql> INSERT INTO user VALUES('%','personel',PASSWORD('MySqL98'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
3) Simdi MySQL in degerleri yeniden okuyabilmesi icin MySQL den cikilip yeni
degerleri okumasi saglanir.
mysql> quit
prompt> mysqladmin --user=root reload
Sistemde simdi root kullanicisinin haricinde bir personel kullanicisi olusmustur
ve bu kullanici root kullanicisi gibi her hakka sahip. Siz sisteminizde
kullanici yaratirken verdiginiz haklara dikkat ediniz. Erisim haklari ek olarak
sunulmustur.
sunucusu mevcuttur. Bunlarin cogu kullanisli olmasina ragmen cok pahali paket
programlaridir. MySQL in en buyuk ozelligi bedava olmasidir fakat ticari amacla
kullanildigi takdirde kucuk bir ucret odemek suretiyle ticari amaclada
kullanilabilir. MySQL'in diger en buyuk ozelligi ise veritabani pazarindaki en
buyuk rakiplerinden daha iyi, hizli ve kullanisli olamasidir. MySQL halen daha
gelistirilmekte olmasina ragmen mevcut haliyle zengin ve cok kullanilan
fonksiyonlar sunmaktadir. MySQL in yapilis nedeni, yaratildigi yerde
kendilerine cok buyuk bir veritabanini isleyebilecek bir SQL sunucularina
ihtiyaclari olmasiydi. Kendileri 1996 dan beri MySQL'i 10,000 tablo iceren 40
veritabanli bir ortamda kullanmaktadirlar ki bunlarin yaklasik 500 tanesi 7
milyon sutun icermektedir.
Bu dokumanda anlatilacak konular sirasi ile :
MySQL'in belli basli ozellikleri
MySQL'in elde edilmesi
MySQL'in kurulumu
MySQL'in belli basli ozellikleri
+ Sistemde birden fazla CPU var ise bunlari kullanma.
+ Degisik isletim sistemlerinde calismasi.
+ Degisik sutun tipleri. Isaretli/Isaretsiz 1, 2, 3, 4 ve 8 byte uzunlugunda
tamsayilar.
+ Ayni sorgulama icinde degisik veritabanlarindaki tablolari birlestirme.
+ Windows95 icin ODBC (Open-DataBase-Connectivity). Yani Microsoft Access'i
kullanarak MySQL server'a baglanabilirsiniz.
+ Buyuk veritabanlarini isleyebilme ozelligi.
+ C ve C++ dillerinde yazilmis olmasi.
+ Butun veriler ISO-8859-1 Latin 1 formatinda kayit ediliyor.
MySQL'in elde edilmesi
MySQL degisik isletim sistemleri icin mevcut olup http://www.tcx.se adresine
baglanilip elde edilebilecek siteler sirasiyla ulkelerine gore listelenmistir.
Bundan sonraki bolumde anlatilacak olan kurulum Linux (PC tabanli Unix isletim
sistem) sistemine uyarlanmis olacaktir.
MySQL'in kurulumu
MySQL in kurulumu iki cesit olup asagida anlatilacak olan binary dagitim setinin
kurulumu olacaktir. Binary ve source kurulumlari arasindaki tek fark source
larin kendi makinenizde derlenmesi olmasidir. Eger sisteminize uygun binary
dagitim seti var ise binary setini veya source setini kullanmak arasinda hic bir
fark yoktur. Asagida sirasi ile binary dagitim setini actiginizda belirecek
olan dizinlerin ve bunlarin hangi dosyalari icerdigi gosterilmektedir.
Dizin
Dizin Icerigi
bin
Istemci programlari ve mysqld sunucusu
data
Log dosyalari ve veritabanlari
scripts
mysql_install_db
share
Hata mesaj dosyalari
sql-bench
Test dosyalari
MySQL in binary dagitim seti unix ortaminda sikistirilmis bir sekilde
sunulmaktadir. Bu sikisitirilmis halini acabilmeniz icin siteminizde GNU gunzip
ve tar gibi programlarin mevcut olmasi gerekmektedir. Bunlardan gunzip programi
uncompress edip tar ise unpack etmektedir. Eger sisteminizde bunlar mevcut ise
basamak basamak asagidakileri uygulamaya baslayin eger sisteminizde bunlar
mevcut degil ise bunlari elde ediniz.
1)Ilk once sisteminizde MySQL'i kuracaginiz dizini belirleyiniz. Linux uzerinde
genelde programlar /usr/local dizini altinda bulunmaktadir. Biz kurulumu
yaparken yine standartlara uyarak binary dagitim setini /usr/local dizini altina
kopyaladik. Sizde eger Linux kullaniyorsaniz bu standarta uymaniz iyi olur.
2)/usr/local dizini altina kopyaladiktan sonra asagida belirtildigi gibi
yukarida bahsettigimiz gunzip ve tar programlarini kullanarak binary dagitim
setini acin.
prompt> gunzip < mysql-SURUM-ISLETIMSISTEMI.tar.gz | tar xvf -
Bu komut girildiken sonra "mysql-SURUM-ISLETIMSISTEMI" seklinde /usr/local
altinda bir dizin olusacaktir.
3)Dizini olusturduktan sonra bu dizin icin bir sembolik baglanti yaratabiliriz.
Sembolik baglantiyi mysql olarak secersek eger /usr/local altinda binary dagitim
setinin acilmis halinin bulundugu dizine girmek istedigimizde
prompt>cd mysql-SURUM-ISLETIMSISTEMI
yazmak zorunda kalacagiz ama mysql adi altinda bir sembolik baglanti
olusturursak
prompt>cd mysql
yazmamiz yeterli olacak. Bunuda asagida belirtilen sekilde yapabiliriz.
prompt>ln -s mysql-SURUM-ISLETIMSISTEMI mysql
4)Sembolik baglanti yaratildiktan sonra
prompt>cd mysql
komutu girilerek binary dagitim setinin acilmis halinin bulundugu dizine
girilir. Burda yukarida belirttigimiz dizinler mevcuttur. Burda en onemli olan
dizinler bin ve scripts dizinleridir. Sistemin herhangi bir yerinden bin dizini
altindaki programlara ulasmaniz icin sisteminizde PATH kismina bu dizini
eklemelisiniz. scripts dizini altinda bulunan mysql_install_db programi
sunucuya erisim haklarinin baslatilmasi icin kullanilmaktadir.
5)Perl DBI/DBD arabirim destegini istiyorsaniz /usr/local/mysql dizini altinda
bulunan perl dizinine
prompt>cd perl
girin ve burdan yine bu dizin altinda bulunan DBI dizinine
prompt>cd DBI
yazarak girin. Bu destegi kullanabilmeniz icin sisteminizde Perl 5.004_03 veya
daha yeni bir surumu bulunmasi mecburidir.Burda yapacaginiz tek sey asagida
komutlari girerek bu dizin altindaki herseyi derlemektir.
prompt>perl Makefile.PL
prompt>make
prompt>make install
5. islemden sonra sisteminize mysql kurulmustur. Kurulumunuzun dogru ve calisip
calismadigini ogrenmek icin yapmaniz gerekenler sirasi ilen :
(Bunlari yapmadan evvel yukarida belirttigimiz gibin mysql dizini altinda
bulunan bin dizinini PATH inize eklemelisini.)
1)mysqld sunucu programini calistirip baslangic erisim tablosunu (kullanicilarin
ne haklarla veritabanina erisebileceklerini gosteren tablo) kurun. Bunuda
scripts dizini altinda bulunan mysql_install_db programi ilen elde
edebilirsiniz.
prompt>scripts/mysql_install_db
Eger bunu kurmazsaniz
mysqld: Can't find file: 'host.frm'
gibi bir hata ilen karsilasabilirsiniz ve bir onemli nokta daha bu programi
calistirirken root kullanicisi olarak calismalisiniz.
2)Sunucunun calisip calismadigini mysqladmin programi ile kontrol edin.
Asagidaki komut basit bir test olup sunucunun calisip calismadigini
belirtmektedir.
prompt>bin/mysqladmin version
Bu komutun sonucunda sistemden sisteme gore degisik sonuclar cikabilir ama genel
olarak aynidir. Ornek olarak asagida sonucu verilmistir.
mysqladmin Ver 6.3 Distrib 3.22.9-beta, for pc-linux-gnu on i686
TCX Datakonsult AB, by Monty
Server version 3.22.9-beta
Protocol version 10
Connection Localhost via UNIX socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec
Running threads: 1 Questions: 20 Reloads: 2 Open tables: 3
mysqladmin programi ilen daha neler yapabileceginiz ogrenmek istiyorsaniz
prompt>mysqladmin --help
komutu girilerek bilgi alinabilir.
3)Sunucu kapatip kapatamadiginiza bakin.
prompt>bin/mysqladmin -u root shutdown
4)Sunucuyu tekrardan calistirmaya bakin.
prompt>bin/mysqld &
5)Sunucunun calisip calismadigina basit bir kac ornekle devam edinki sunucunuzun
calismasindan emin olun.
prompt>bin/mysqlshow
Sonuc :
Databases
mysql
prompt>bin/mysqlshow mysql
Sonuc :
Database: mysql
Tables
Db
Host
User
prompt>bin/mysql -e "select host,db,user from db" mysql
Sonuc :
Host
Db
User
%
%
Test
Test_%
Eger yukaridaki sonuclari ekraninizda goruyorsaniz MySQl sunucunuz mukemmel bir
sekilde calismaktadir.
Sunucumuzda hic bir problem yok ise yapmamiz gereken en onemli nokta MySQL
sunucusunda tanimli olan root kullanicisina sifre vermektir. MySQL sunucusunda
tanimli olan root kullanicisi sunucudaki en yetkili kullanicidir. Yanliz bu
root kullanicisini Linux sistemindeki root kullanicisi ile karistirmayalim.
MySQL sunucusunun kendine ozgu kullanici ve buna bagli sifre listesi vardir.
Yani sunucuda eger kullanici yaratmak istiyorsaniz kullanici yaratirken bu
kullaniciya bir sifre ve erisim haklarini vermelisiniz. root kullanicisi MySQL
sunucusunda herseyi yapmaya yetkisi vardir. Yukarida dedigimiz gibi root
kullanicisina sifre vermeliyiz, bunuda asagidaki sekilde yapiyoruz.
prompt>mysql -u root mysql
mysql>UPDATE user SET Password=PASSWORD('yeni_sifre')
WHERE user='root';
Sunucunun yeni degerleri okumasi icin tekrar yuklenmesi lazim.
prompt>mysqladmin -u root reload
Biraz oncede belirtmistikki root kullanicisi MySQL sunucusunda tanimli olan en
yetkili kullanicidir. Fakat veritabanini root kullanicisinin haricinde
kullanacak kisiler olacaktir ve bunlarin bellirli veritabanlarina veya
veritabanindaki tabloya erisim haklari olacak veya olmayacaktir. Yine bu erisim
haklari root tarafindan kisiye yaratilan kullanicinin erisim haklarina bagli
olarak degisir. Asagida ornek olarak MySQL sunucusunda bir kullanicinin nasil
yaratildigi kisaca aciklanmistir.
1) Ilk olarak kullanici yaratmak icin MySQL sunucusuna root olarak
baglanilmalidir.
prompt> mysql --user=root mysql
2) Baglanti basarili oldu ise sira MySQL de sifresi MySqL98, kullanici adi
personel ve tum haklara sahip olan bir kullanici yaratmaya geldi.
mysql> INSERT INTO user VALUES('%','personel',PASSWORD('MySqL98'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
3) Simdi MySQL in degerleri yeniden okuyabilmesi icin MySQL den cikilip yeni
degerleri okumasi saglanir.
mysql> quit
prompt> mysqladmin --user=root reload
Sistemde simdi root kullanicisinin haricinde bir personel kullanicisi olusmustur
ve bu kullanici root kullanicisi gibi her hakka sahip. Siz sisteminizde
kullanici yaratirken verdiginiz haklara dikkat ediniz. Erisim haklari ek olarak
sunulmustur.