MySQL: Kurulumu ve kullanımı
MySQL ve PostgreSQL Gelecek Linux ile birlikte gelen, ücretsiz ve oldukça
kullanışlı iki veritabanıdır. Yahoo ve Nasa tarafından da kullanılan MySQL,
Linux, Apache ve PHP dörtlüsü web uygulama geliştirmede tüm dünyada sıkça
kullanılır. Bu yazıda MySQL"e genel bir giriş yapılacak, kurulumu ve
kullanımı anlatılacaktır.
İçindekiler
MySQL"in çalıştırılması
MySQL parolasının düzenlenmesi
MySQL ayarları
MySQL"e yeni sistem kullanıcısı eklenmesi
MySQL"e normal bir kullanıcı eklenmesi
Örnek bir veritabanı yaratılması
Son olarak
www.mysql.com web sayfasından
hem .tar.gz, hem de RPM biçiminde alınabilecek
olan bu veritabanı GL 1.1"in 2. CD"sinde gelmektedir. MySQL"den
en yüksek verimi almak için, aşağıdaki paketleri sisteme kurmalısınız.
mysql: MySQL temel dosyaları ve kütüphaneleri (şart)
mysql-devel: MySQL geliştirme için başlık dosyaları
php-mysql: Php ve MySQL bağlantısı için gereken yordamlar (MySQL/PHP
programlama yapılacaksa şart)
mysql-server: MySQL sunucu (şart)
mod_auth_mysql: Apache"nin mod_auth özelliği ile MySQL bağlantısı yapması
için gerekli dosyalar
Bu paketlerin sistemde kurulu olup olmadıklarını öğrenmek için, aşağıdaki
komut işe yarayacaktır:
# 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
|
Eğer paketler kurulu değil ise, CD"yi sürücüye takın ve aşağıdaki işlemleri
yapın:
# mount /dev/cdrom # cd /mnt/cdrom/Gelecek/RPMS # rpm -i *mysql* --nodeps
|
Yukarıdaki komutlar CD sürücüyü /mnt/cdrom dizinine bağlayacak ve
/mnt/cdrom/Gelecek/RPMS dizini altında, içinde tüm mysql satırı geçen
programları sisteme kuracaktır.
MySQL"in çalıştırılması
Gelecek Linux"ta, diğer tüm dağıtımlarda olduğu gibi sunucuları başlatmak,
durdurmak, durumlarını öğrenmek ve yeniden çalıştırmak için /etc/init.d
betikleri kullanılır. MySQL"i kurunca bu veritabanını başlatabilmek için,
aşağıdaki komutu (root kullanıcısı haklarıyla) bir terminalden yazın.
# /etc/init.d/mysqld start MySQL başlatılıyor: [TAMAM]
|
MySQL çalışmaya başlayacaktır. "start" yerine "stop" komutunun verilmesi
halinde ise veritabanı durur.
MySQL parolasının düzenlenmesi
MySQL ilk çalıştırıldığı zaman bunu kullanacak olan sistem yöneticisinin
(root), parolasını hemen değiştirmesi gereklidir.
Aşağıdaki komutu inceleyin.
# mysqladmin -u root password "yeni parola"
|
Yukarıdaki komutu (tırnaklar kullanmadan) yazarsanız MySQL veritabanını
kullanacak olan root"un parolasını "yeni parola" olarak atamış olursunuz. MySQL
veritabanı Linux"taki kullanıcı hesaplarının tutulduğu /etc/passwd ve
/etc/shadow dosyalarına bakmaz. Bu veritabana erişim yapmak isteyen her
kullanıcı açıkça MySQL"e belirtilmelidir.
Şimdi root kullanıcısı olarak aşağıdaki komut yardımıyla MySQL veritabanına
giriş 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>
|
Yukarıda belirttiğimiz komut satırı parametrelerinden -u, kendisinden sonra
gelen kullanıcıyla (root) MySQL"e bağlantı yapılacağını söyler. -p parametresi
ise, bu komutu yazdıktan sonra bizden bir komut istemcisi üzerinden
parolayı ister. Parolayı -p"den hemen sonra da yazabilirsiniz, ancak parolayı
verirken arada boşluk bırakmamanız gerekiyor:
# mysql -u root -pparolam mysql
|
Yukarıdaki MySQL bağlantı komutunun en sonunda yeralan "mysql" ise, bu
sunucudaki hangi veritabanına bağlantı kurulacağını söyleyecektir. Öntanımlı
olarak, yerel makinanızda mysql adında bir veritabanı önceden tanımlıdır.
Şimdi tam olarak çalışan bir MySQL sunucuya sahipsiniz.
MySQL ayarları
MySQL dağıtımının .tar.gz biçimiyle birlikte 4 farklı MySQL yapılandırma
dosyası gelir. Bunlar my-huge.conf (1 Gb ve daha fazla bellekli sistemler
için), my-large.conf (512 Mb"a kadar belleğe sahip olan sistemler için),
my-medium.conf (32 Mb - 128 Mb arası belleğe sahip olan sistemler için)
ve my-small.conf (64 Mb belleğe sahip sistemler için).
Bu dosyaların bir tanesini /etc altına "my.cnf" adıyla yerleştirmekle MySQL"e
açılış anında çeşitli parametreler vermek mümkündür. Ancak bu dosyanın
içinin boş olması halinde bile MySQL sorunsuz olarak çalışacaktır.
Biz burada my-medium.cnf dosyasını örnek alarak bir /etc/my.cnf yapılandırma
dosyası hazırlayalım.
# Örnek /etc/my.cnf yapılandırma dosyası
# Key-buffer parametresi, ne kadar belleğin index # verileri için tutulacağını gösterir. Buradaki rakamın # (16 Mb) yüksek tutulması MySQL"in performansını # hissedilir derecede artırır. key-buffer=16M
# table_cache, MySQL"in aynı anda açık tablo sayısını verir. # Eğer büyük # bir veritabanı sistem kullanıyorsanız, bu # rakamı artırmalısınız. table_cache=128
# MySQL içinde "ORDER BY" ve "GROUP BY" parametrelerini çok # kullanmanız halinde sort_buffer değerini yükseltin. sort_buffer=512K
# myisam_sort_buffer_size parametresi, bir indeks # yaratılırken ya da bir tablo düzenlenirken kullanılacak # tampon bölgesi büyüklüğünü tanımlar. myisam_sort_buffer_size=8M
|
Hazırlanan bu dosyayı /etc altında kopyalayın. Eğer /etc/my.cnf dosyası
zaten varsa, bunu silin.
# /etc/my.cnf # cp my.cnf /etc/my.cnf
|
Bu aşamalardan sonra MySQL başlatıldığı zaman /etc/my.cnf dosyasını okuyacaktır.
MySQL"e yeni sistem kullanıcısı eklenmesi
Yukarıdaki ayarlardan sonra MySQL veritabanı root kullanıcısı altında rahatlıkla
kontrol edilebilir. MySQL veritabanı, bir kullanıcının veritabanı bilgilerine
tüm haklarla erişmesine, diğerinin sadece okumasına, bir başkasının da
sadece yazmasına izin verebilir. Bazı geniş sistemlerde root dışında da
kullanıcılar tanımlanır ve her kullanıcı veritabanının farklı bölgelerini
denetleyebilir.
Şimdi veritabanına yeni bir kullanıcı ekleyelim. Bunu yapmak için aşağıdaki
örneği 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
|
Yukarıdaki komutu yazıp exit ile sistemden çıktığınız zaman akgun kullanıcısı,
MySQL veritabanına tam yetkiler verilen bir kullanıcı haline gelir. Herhangi
bir kullanıcı ile sisteme telnet ile girip, aşağıdaki komutu çalıştırdıktan
sonra MySQL"e yeni veritabanı ekleyebilir, silebilir, başka yetkili kullanıcı
tanımlayabilirsiniz.
# mysql -u akgun -p mysql
|
MySQL"e normal bir kullanıcı eklenmesi
Yukarıda "GRANT ALL" ile başlayan MySQL satırı yardımıyla bir kullanıcıya
tam yetki vermiştik. Şimdi ise bir tabloda bulunan verileri güncelleyebilecek,
yeni veri ekleyebilecek bir kullanıcı tanımlayalım. Yapmanız gereken tek
işlem, sadece yukarıda "GRANT ALL" satırı yerine "GRANT SELECT, INSERT,
DELETE, UPDATE" getirmek.
Örnek bir veritabanı yaratılması
Aşağıdaki komut MySQL"de kullanicilar veritabanını açacaktır.
mysql> CREATE DATABASE kullanicilar; Query OK, 1 row affected (0.00 sec)
|
Yeni veritabanına bağlantı kurmak için mysql"den çıkmak ve aşağıdaki
komutu çalıştırmak 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>
|
Şimdi veritabanımıza bir kaç bilgi aktaralım. Bunun için yapacağınız işlem
çok basit. Önce veritabanında tutacağınız tabloyu (table) tasarlayın. Ardından
bunları 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)
|
Şimdi kullanicilar veritabanı içinde parolalar tablosunu yukarıdaki gibi
oluşturmuş olduk. Bunu görebilmek için aşağıdaki komutu kullanın.
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)
|
Son olarak
MySQL veritabanı burada aktarmaya çalışılan bilgilerin çok ötesindedir ve
çok geniş kullanım alanları vardır. Daha geniş kullanım bilgisi için
www.mysql.com ve MySQL/PHP bağlantısı
için www.php.org.tr adreslerine göz atın.
|