Root > Documents > IT Teknolojileri > MySQL:Installation And Using
Cyber-Warrior.Org \ Doküman \ IT Teknolojileri > MySQL:Installation And Using
Madde
  Yazar : Uninst@ll
  Date : 01.02.2006 12:06:55
 
# MySQL:Installation And Using
 

MySQL ve PostgreSQL Gelecek Linux ile birlikte gelen, ücretsiz ve oldukça kullanisli iki veritabanidir. Yahoo ve Nasa tarafindan da kullanilan MySQL, Linux, Apache ve PHP dörtlüsü web uygulama gelistirmede tüm dünyada sikça kullanilir. Bu yazida MySQL’e genel bir giris yapilacak, kurulumu ve kullanimi anlatilacaktir.

color=#003366www.mysql.com web sayfasindan hem .tar.gz, hem de RPM biçiminde alinabilecek olan bu veritabani GL 1.1’in 2. CD’sinde gelmektedir. MySQL’den en yüksek verimi almak için, asagidaki paketleri sisteme kurmalisiniz.

  • mysql: MySQL temel dosyalari ve kütüphaneleri (sart)
  • mysql-devel: MySQL gelistirme için baslik dosyalari
  • php-mysql: Php ve MySQL baglantisi için gereken yordamlar (MySQL/PHP programlama yapilacaksa sart)
  • mysql-server: MySQL sunucu (sart)
  • mod_auth_mysql: Apache’nin mod_auth özelligi ile MySQL baglantisi yapmasi için gerekli dosyalar

Bu paketlerin sistemde kurulu olup olmadiklarini ögrenmek için, asagidaki komut ise yarayacaktir:

# export LANG=en
# rpm -qa | grep mysql
mysql-3.23.24-1
mysql-devel-3.23.24-1
php-mysql-4.0.3pl1-1
mysql-server-3.23.24-1
mod_auth_mysql-2.20-1

Eger paketler kurulu degil ise, CD’yi sürücüye takin ve asagidaki islemleri yapin:

# mount /dev/cdrom 
# cd /mnt/cdrom/Gelecek/RPMS
# rpm -i *mysql* --nodeps

Yukaridaki komutlar CD sürücüyü /mnt/cdrom dizinine baglayacak ve /mnt/cdrom/Gelecek/RPMS dizini altinda, içinde tüm mysql satiri geçen programlari sisteme kuracaktir.

MySQL’in çalistirilmasi

Gelecek Linux’ta, diger tüm dagitimlarda oldugu gibi sunuculari baslatmak, durdurmak, durumlarini ögrenmek ve yeniden çalistirmak için /etc/init.d betikleri kullanilir. MySQL’i kurunca bu veritabanini baslatabilmek için, asagidaki komutu (root kullanicisi haklariyla) bir terminalden yazin.

# /etc/init.d/mysqld start
MySQL baslatiliyor:                                      [TAMAM]

MySQL çalismaya baslayacaktir. ’start’ yerine ’stop’ komutunun verilmesi halinde ise veritabani durur.

MySQL parolasinin düzenlenmesi

MySQL ilk çalistirildigi zaman bunu kullanacak olan sistem yöneticisinin (root), parolasini hemen degistirmesi gereklidir.

Asagidaki komutu inceleyin.

# mysqladmin -u root password "yeni parola"

Yukaridaki komutu (tirnaklar kullanmadan) yazarsaniz MySQL veritabanini kullanacak olan root’un parolasini "yeni parola" olarak atamis olursunuz. MySQL veritabani Linux’taki kullanici hesaplarinin tutuldugu /etc/passwd ve /etc/shadow dosyalarina bakmaz. Bu veritabana erisim yapmak isteyen her kullanici açikça MySQL’e belirtilmelidir.

Simdi root kullanicisi olarak asagidaki komut yardimiyla MySQL veritabanina giris yapabilirsiniz:

# mysql -u root -p mysql
Enter password:
Welcome to the MySQL monitor.  Commands end with ; 
or \\g. Your MySQL connection id is 11 to server 
version: 3.23.24-beta-log

mysql>

Yukarida belirttigimiz komut satiri parametrelerinden -u, kendisinden sonra gelen kullaniciyla (root) MySQL’e baglanti yapilacagini söyler. -p parametresi ise, bu komutu yazdiktan sonra bizden bir komut istemcisi üzerinden parolayi ister. Parolayi -p’den hemen sonra da yazabilirsiniz, ancak parolayi verirken arada bosluk birakmamaniz gerekiyor:

# mysql -u root -pparolam mysql

Yukaridaki MySQL baglanti komutunun en sonunda yeralan "mysql" ise, bu sunucudaki hangi veritabanina baglanti kurulacagini söyleyecektir. Öntanimli olarak, yerel makinanizda mysql adinda bir veritabani önceden tanimlidir. Simdi tam olarak çalisan bir MySQL sunucuya sahipsiniz.

MySQL ayarlari

MySQL dagitiminin .tar.gz biçimiyle birlikte 4 farkli MySQL yapilandirma dosyasi gelir. Bunlar my-huge.conf (1 Gb ve daha fazla bellekli sistemler için), my-large.conf (512 Mb’a kadar bellege sahip olan sistemler için), my-medium.conf (32 Mb - 128 Mb arasi bellege sahip olan sistemler için) ve my-small.conf (64 Mb bellege sahip sistemler için).

Bu dosyalarin bir tanesini /etc altina "my.cnf" adiyla yerlestirmekle MySQL’e açilis aninda çesitli parametreler vermek mümkündür. Ancak bu dosyanin içinin bos olmasi halinde bile MySQL sorunsuz olarak çalisacaktir.

Biz burada my-medium.cnf dosyasini örnek alarak bir /etc/my.cnf yapilandirma dosyasi hazirlayalim.
# Örnek /etc/my.cnf yapilandirma dosyasi

# Key-buffer parametresi, ne kadar bellegin index 
# verileri için tutulacagini gösterir. Buradaki rakamin 
# (16 Mb) yüksek tutulmasi MySQL’in performansini 
# hissedilir derecede artirir.
key-buffer=16M

# table_cache, MySQL’in ayni anda açik tablo sayisini verir. 
# Eger büyük # bir veritabani sistem kullaniyorsaniz, bu 
# rakami artirmalisiniz.
table_cache=128

# MySQL içinde "ORDER BY" ve "GROUP BY" parametrelerini çok 
# kullanmaniz halinde sort_buffer degerini yükseltin.
sort_buffer=512K

# myisam_sort_buffer_size parametresi, bir indeks 
# yaratilirken ya da bir tablo düzenlenirken kullanilacak 
# tampon bölgesi büyüklügünü tanimlar.
myisam_sort_buffer_size=8M
Hazirlanan bu dosyayi /etc altinda kopyalayin. Eger /etc/my.cnf dosyasi zaten varsa, bunu silin.
# /etc/my.cnf
# cp my.cnf /etc/my.cnf 
Bu asamalardan sonra MySQL baslatildigi zaman /etc/my.cnf dosyasini okuyacaktir.

MySQL’e yeni sistem kullanicisi eklenmesi

Yukaridaki ayarlardan sonra MySQL veritabani root kullanicisi altinda rahatlikla kontrol edilebilir. MySQL veritabani, bir kullanicinin veritabani bilgilerine tüm haklarla erismesine, digerinin sadece okumasina, bir baskasinin da sadece yazmasina izin verebilir. Bazi genis sistemlerde root disinda da kullanicilar tanimlanir ve her kullanici veritabaninin farkli bölgelerini denetleyebilir.

Simdi veritabanina yeni bir kullanici ekleyelim. Bunu yapmak için asagidaki örnegi inceleyin:
# mysql -u root -p mysql
Enter password:

mysql> GRANT ALL PRIVILEGES ON *.* TO akgun@localhost 
IDENTIFIED BY ’akgunparola’ WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Yukaridaki komutu yazip exit ile sistemden çiktiginiz zaman akgun kullanicisi, MySQL veritabanina tam yetkiler verilen bir kullanici haline gelir. Herhangi bir kullanici ile sisteme telnet ile girip, asagidaki komutu çalistirdiktan sonra MySQL’e yeni veritabani ekleyebilir, silebilir, baska yetkili kullanici tanimlayabilirsiniz.

# mysql -u akgun -p mysql

MySQL’e normal bir kullanici eklenmesi

Yukarida "GRANT ALL" ile baslayan MySQL satiri yardimiyla bir kullaniciya tam yetki vermistik. Simdi ise bir tabloda bulunan verileri güncelleyebilecek, yeni veri ekleyebilecek bir kullanici tanimlayalim. Yapmaniz gereken tek islem, sadece yukarida "GRANT ALL" satiri yerine "GRANT SELECT, INSERT, DELETE, UPDATE" getirmek.

Örnek bir veritabani yaratilmasi

Asagidaki komut MySQL’de kullanicilar veritabanini açacaktir.

mysql> CREATE DATABASE kullanicilar;
Query OK, 1 row affected (0.00 sec)

Yeni veritabanina baglanti kurmak için mysql’den çikmak ve asagidaki komutu çalistirmak yeterlidir:
$ mysql -u root -p kullanicilar
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \\g.
Your MySQL connection id is 18 to server version: 3.23.

Type ’help;’ or ’\\h’ for help. Type ’\\c’ to clear 
the buffer

mysql>
Simdi veritabanimiza bir kaç bilgi aktaralim. Bunun için yapacaginiz islem çok basit. Önce veritabaninda tutacaginiz tabloyu (table) tasarlayin. Ardindan bunlari MySQL’e girin.
# mysql -u root -p kullanicilar
mysql> CREATE TABLE parolalar  (
    ->         kullaniciadi    varchar(15)     not null,
    ->         crypt           varchar(128)    not null,
    ->         gercekadi       varchar(50)     not null,
    ->         kabugu          varchar(10)     not null
    ->                         );
Query OK, 0 rows affected (0.01 sec)
Simdi kullanicilar veritabani içinde parolalar tablosunu yukaridaki gibi olusturmus olduk. Bunu görebilmek için asagidaki komutu kullanin.
mysql>insert into parolalar values (’ilhan’,md5(’ilhanparola’), 
’Murat Ilhan’, ’/bin/bash’);
Query OK, 1 row affected (0.00 sec)

mysql> select * from parolalar;
+--------------+------------------+-------------+-----------+
| kullaniciadi | crypt            | gercekadi   | kabugu    |
+--------------+------------------+-------------+-----------+
| ilhan        | 10de2b0e8c2cbd52a| Murat Ilhan | /bin/bash |
+--------------+------------------+-------------+-----------+
1 row in set (0.00 sec)

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©