BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > MySQL Veritabanı > Sunucu bağlantısı

Sunucu bağlantısı

mysqld (mysqld.exe - MySQL Sunucu)

MySQL Sunucu kurulumunu gerçekleştirdikten sonra, artık bilgisayarımız her açıldığında MySQL Sunucu olarak bilinen mysqld (mysqld.exe) programını normal veya bir hizmet program şeklinde otomatik olarak çalıştırır. Böylece, bilgisayarımızda bir MySQL Server kurulmuş olur.

MySQL Sunucuya bağlanarak veritabanı işlemleri yapacak olan programların çalışabilmesi için mysqld programının çalışması gerekir. Çünkü, bu program tüm veritabanı girişlerinin kontrol ve yönetimini gerçekleştirir.

MySQL Sunucu çalıştığında, client programlardan gelecek veritabanı bağlantılarını yönetmek ve işlem yapmak üzere, ağ üzerinden gelecek bağlantıları beklemeye başlar.

Çalışmakta olan bir MySQL Sunucu'ya erişmek ve veritabanı ile ilgili işlemler yapabilmek için aşağıdaki şekilde siyah kutucuklar içinde gösterilen ve MySQL Community Server kurulum paketi ile yapılan kurma işleminden sonra bin dizini altında yer alan .exe uzantılı dosyaları veya farklı programlama dilleri ile yazılan programların MySQL Sunucu işlemlerini gerçekleştirebilmesi için oluşturulmuş ve mavi kutucuklar içinde gösterilen MySQL Connector'ları kullanabilirsiniz.

Burada, MySQL Sunucu'ya erişmek ve veritabanı ile ilgili işlemler yapabilmek için MySQL Community Server kurulum paketi ile birlikte gelen dosyaları kullanmaya çalışacağız. Connector yoluyla bağlantı konusu için C ve MySQL bölümüne bakabilirsiniz

MySQL Sunucuya bağlanan programlar:

mysql

SQL komutlarını girmek ve çalıştırmak için kullanılan bir komut satırı programıdır.

mysqladmin

Veritabanlarını oluşturma ve silme, tabloları yükleme ve diske kaydetme, kütük dosyalarını yeniden açma, sürüm, işlem ve durum bilgileri alma gibi işlemleri gerçekleştiren bir programdır.

mysqlcheck

Tabloları kontrol etmeye, onarmaya, analiz etmeye ve verimli hale getirmeye yarayan bir tablo bakım programıdır.

mysqldump

MySQL veritabanını SQL, metin veya XML dosyaya aktarmaya yarayan bir programdır.

mysqlimport

LOAD DATA INFILE komutunu kullanarak metin dosyalarının içeriğini tablolara aktarmaya yarayan bir programdır.

mysqlshow

Veritabanları, tablolar, sütunlar (veri alanları) ve indeksler hakkında bilgileri göstermeye yarayan bir programdır.

mysqlslap

MySQL Sunucu için client çalışmasını taklit eden bir işlem gerçekleştirir. Birden fazla client sunucuya erişiyormuş gibi çalışır.

Şimdi, mysql komut satırını aracını kullanarak MySQL Sunucu üzerinde bazı işlemler yapmaya çalışalım:

Bunun için, öncelikle bir MySQL komut penceresi açmamız gerekir. MYSQL komut penceresini bilgisayarınızdaki Başlat-Tüm Programlar-MySQL menüsü üzerinden aşağıdaki şekilde gösterilen seçeneğe tıklayarak veya normal bir komut penceresi açıp mysql.exe dosyasını bulunduğu dizinin içinden çalıştırarak oluşturabilirsiniz:

Yukarıdaki seçeneğe tıkladığınızda, aşağıdaki komut satırı çalıştılır ve alttaki şekilde gösterilen ve sunucu erişim parolası girmenizi bekleyen MySQL komut penceresi açılır:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe" "--defaults-file=C:\Program Files\MySQL\MySQL Server 5.5\my.ini" "-uroot" "-p"

Bu pencerede MySQL Sunucu kurarken belirlediğiniz parolayı girerseniz, sunucuya bağlanırsınız ve aşağıdaki pencere karşınıza gelir:

Artık, istediğiniz SQL komutlarını girebilir ve çalıştırabilirsiniz. Bu konumda iken SHOW DATABASES; SQL komutunu girer ve ENTER tuşuna basarsanız MySQL Sunucu üzerinde yer alan veritabanları ekranda gösterilir:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

mysql>

MySQL Community Server kurulum paketi ile birlikte gelen programları çalıştırmak için Windows işletim sisteminde komut satırı göstergesi kullanılır (C:\>). Komut satırında program adının yanısıra seçenekler ve programa geçirilecek diğer argümanlar girilebilir.

Seçenek tanımlama

Tek (-) veya çift çizgi (--) ile başlayan argümanlar program için tanımlanan seçenekleri gösterir.

Aşağıdaki komut mysql programının kullanım şeklini ve seçenekleri gösterir:

mysql --help

Aşağıdaki komutu girdiğinizde program bir parola girmenizi ister. Doğru parolayı girerseniz sunucuya bağlanır:

mysql --user=root -p

Seçenek olmayan argüman tanımlama

Başında çizgi olmayan argümanlar bir seçenek tanımlamaz. Program için ek bilgi sağlar.

Aşağıdaki her iki satırda yer alan komut aynı işlemi gerçekleştirir ve mysql programının dbase_deneme adlı veritabanını kullanacak şekilde sunucuya bağlanmasını sağlar:

mysql -u root -p dbase_deneme

mysql --user=root --password dbase_deneme

MySQL Sunucu kurulumdan sonra bin dizini altında yer alan programları çalıştırmak için komut satırında iken tam yol tanımlaması yaparak, bulundukları dizine geçiş yaparak veya bulundukları dizinin yol tanımlamasını PATH ortam değişkenine ekleyebilirsiniz:

Tam yol tanımlaması ile çalıştırma

C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql

Programların bulunduğu dizine geçiş yaparak çalıştırma

cd C:\Program Files\MySQL\MySQL Server 5.5\bin

mysql

PATH tanımlaması yaparak çalıştırma

Sisteminize uygun olarak PATH değişkenine "C:\Program Files\MySQL\MySQL Server 5.5\bin" ifadesini ekleyin.

mysql

Client programlar (mysql, mysqladmin, mysqldump, mysqlshow) MySQL Sunucu'ya erişmek uygun bağlantı parametreleri (argümanları) kullanmak zorundadır. Bu programları herhangi bir bağlantı parametresi kullanmaksızın çalıştırdığınızda, ön tanımlı bağlantı parametrelerini kullanırlar.

Eğer mysql programını parametresiz olarak çalıştırırsanız, Windows işletim sistemi için alacağı ön tanımlı parametreler aşağıdaki şekilde olacaktır.

Host adı : localhost

Kullanıcı adı : ODBC

Parola : -p ve --password tanımlaması yoksa, parola gönderilmez.

Veritabanı : mysql programı için seçenek içermeyen ilk argüman ön tanımlı veritabanı olarak değerlendirilir. Eğer tanımlanmazsa, ön tanımlı veritabanı seçilmez.

Seçenek Dosyaları

MySQL programları çalıştırıldıklarında içinde global seçenekler bulunan seçenek dosyalarını okur ve işlemleri okuduğu değerlere göre yapar. Böylelikle, her defasında komut satırından girme ihtiyacı duyulan değerler bu dosyalara yazılarak işlem yapılır. MySQL, sunucu için önceden tanımlanmış seçenek dosyalarını kullanma olanağı sağlar:

Windows işletim sistemi için, MySQL programları başlangıç seçnekelerini gösterilen sıraya göre aşağıdaki dosyalardan okur:

  • WINDIR\my.ini, WINDIR\my.cnf: WINDIR Windows dizinini gösterir.
  • C:\my.ini, C:\my.cnf
  • INSTALLDIR\my.ini, INSTALLDIR\my.cnf: INSTALLDIR MySQL kurulum dizinini gösterir.
  • defaults-extra-file: Eğer varsa --defaults-extra-file=path ifadesi ile tanımlanır.

MySQL Sunucu kurulduktan sonra kurulum dizini altında yer alan my.ini seçenek dosyası içeriğinin bir bölümü aşağıda yer almaktadır:

# MySQL Server Instance Configuration File

# CLIENT SECTION
# ----------------------------------------------------------------------
[client]
port=3306
[mysql]
default-character-set=latin1

# SERVER SECTION
# ----------------------------------------------------------------------
[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
#Path to the database root
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
# The default character set that will be used when a new schema or table is
# created and no character set is defined
character-set-server=latin1
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
.
.
.
#*** MyISAM Specific options
.
.
.
#*** INNODB Specific options ***
.
.
.

mysql (mysql.exe) Komut Satırı Programı

mysql, Windows komut satırından kullanılabilen ve girilen SQL komut sonuçlarını ASCII olarak ekrana yazan bir programdır.

Sunucu'ya giriş yaptıktan sonra herhangi bir SQL komutu yazarak çalıştırabilirsiniz. SQL komutlarının sonunda noktalı virgül (;), \g veya \G işareti kullanmanız ve ENTER tuşuna basmanız gerekir.

quit komutunu veya Ctrl-C tuş bileşimini kullanarak mysql programından çıkış yapıp komut satırı penceresini komple kapatabilirsiniz.

mysql Komutları

mysql programı yazdığınız her komutu uygulanmak üzere MySQL Sunucu'ya gönderir. Bunun yanında, mysql progamının içinde yer alan özel komutlar da yer almaktadır. Bu komutları listelemek için mysql> komut göstergesinde iken help veya \h yazmanız yeterlidir.

help, \h, ?, \? : Yardım ekranını gösterir.

charset, \C : Farklı bir karakter setini kullanmayı sağlar. Ön tanımlı karakter setini değiştirmek için SET NAMES komutunu kullanır.

charset charset_adı

clear, \c : Yazılanları silmeye yarar.

connect, \r : Sunucuya tekrar bağlanır. db ve host değerleri isteğe bağlı olarak tanmlanır.

connect [db_adı host_adı]

delimiter, \d : SQL komutları arasında ayırma işlemi yapan karakter dizisini değiştirir. Ön tanımlı karakter dizisi noktalı virgül (;) karakteridir. Ayırma karakter dizisi tek başına veya tırnak işaretleri (' ', " " veya ` `) arasında tanımlanabilir.

delimiter karakter_dizisi

edit, \e : Girilmekte olan SQL komutunu düzenler. Sadece Unix sistemlerde çalışır.

ego, \G : MySQL Sunucu'ya komut gönderir ve sonuçları dikey olarak yazar.

exit, quit, \q : mysql programından çıkar.

go, \g : MySQL Sunucu'ya komut gönderir.

nopager, \n : Girilmekte olan SQL komutunu düzenler. Sadece Unix sistemlerde çalışır.

notee, \t : Çıkış dosyasına yazmaz.

nowarning, \w : Her SQL komutundan sonra uyarı göstermemeyi sağlar.

pager, \P : Çıktı için sayfalamayı kullanma olanağı sağlar. Bu özellik sadece interaftik mod içinde çalışır. Sadece Unix sistemlerde çalışır.

print, \p : Girilen SQL komutunu çalıştırmadan yazar.

prompt, \R : mysql komut göstergesini verilen karakter dizisine çevirir. Eğer argümansız olarak tanımlarsanız, ön tanımlı değer olan mysql> ifadesini kullanır.

prompt [str]

rehash, \# : Veritabanı, tablo ve sütun adlarını tamamlamayı sağlayan değeri yeniden oluşturur.

source, \. : Bir SQL script dosyasını çalıştırır. Dosya adını argüman olarak alır. Windows işletim sisteminde, yol tanımlaması içinde / veya \\ işareti kullanılır.

source dosya_adı

status, \s : Sunucudan durum bilgisini alır.

system, \! : Sistem komutlarını çalıştırır.. Sadece Unix sistemlerde çalışır.

system komut

tee, \T : Girilen SQL komutlarının ve ekran çıktılarının bir dosyaya aktarılmasını sağlar. Sadece interaktif mod için geçerlidir. notee komutu ile bu özellik devre dışı bırakılır.

tee [dosya_adı]

use, \u : Bir veritabanının aktif olarak tanımlanmasını ve kullanılmasını sağlar.

use veritabanı_adı

warnings, \W : Her SQL komutundan sonra uyarı göstermeyi sağlar.

SQL Komutlarını Metin Dosyasından Çalıştırma

SQL komutlarını bir metin dosyasına koyarak, mysql programının dosya içindeki komutları okuyarak işlem yapmasını sağlayabilirsiniz:

C:\> mysql veritabanı_adı < metin_dosyası

Eğer metin dosyasının en başına USE veritabanı_adı ifadesini yerleştirirseniz, komut satırında veritabanı adını kullanmanıza gerek kalmaz.

C:\> mysql < metin_dosyası

Eğer mysql programı çalışıyorsa, metin dosyasında yer alan SQL komutlarını çalıştırmak için source veya \. komutunu kullanabilirsiniz:

mysql> source metin_dosyası

mysqladmin - MySQL Sunucu Yönetim Programı

mysqladmin programı yönetimsel işlemleri gerçekleştirmek için kullanılır. Aşağıdaki yapı ile çağrılır:

C:\> mysqladmin [seçenekler] komut [komut-arg] komut [komut-arg] ...

mysqladmin programı ile kullanılan bazı komutlardan sonra argümanlar yer alabilir.

mysqladmin programı ile sunucu konfigürasyonunu ve mevcut durumu kontrol etmek, veritabanları oluşturmak ve silmek, parola değiştirmek, sunucu tarafından açılan dosyaların sayısını elde etmek ve benzeri işlemleri yapabilirsiniz.

mysqlcheck - Tablo Bakım Programı

mysqlcheck programı tabloların bakımını yapmaya yarar. Tabloları kontrol eder, onarır, optimize eder ve analiz eder. Bakım işlemi yapılırken tablo kilitlendiğinden erişim sağlanamaz. Yüksek boyutlu tablolarda, mysqlcheck programının işlemi uzun zaman alabilir.

mysqlcheck programı myisamchk fonksiyonuna benzer. mysqlcheck programı MySQL Sunucu çalışırken kullanılması gerekirken, myisamchk fonksiyonunun sunucu çalışmıyorken kullanılması gerekir. mysqlcheck programını çalıştırmak için sunucunun durdurulmasına gerek yoktur.

mysqlcheck programı gerçekleştirmek istediğiniz işleme bağlı olarak CHECK TABLE, REPAIR TABLE, ANALYZE TABLE ve OPTIMIZE TABLE komutlarından en uygun olanını kullanır ve işlem yapılmak üzere sunucuya gönderir.

MyISAM depolama motoru tüm bakım işlemlerini desteklediğinden, mysqlcheck programı MyISAM tablolar üzerinde tüm bakım uygulamalarını gerçekleştirebilir. Depolama motorunun desteklemediği bir işlem yapılmak istendiğinde bir hata mesajı ekrana yazılır.

Bazı durumlarda tablo bakımı esnasında veri kaybı gerçekleşebileceğinden, işlemi gerçekleştirmeden önce backup işlemi yapmak tercih edilmelidir.

mysqlcheck programını çalıştırmak için 3 genel yöntem kullanılmaktadır:

C:\> mysqlcheck [seçenekler] veritabanı_adı [tablo_adı ...]
C:\> mysqlcheck [seçenekler] --databases veritabanı_adı ...
C:\> mysqlcheck [seçenekler] --all-databases

veritabanı_adı ifadesinden sonra herhangi bir tablo adı tanımlamaz veya --databases ve --all-databases seçeneklerinden birini tanımlarsanız tüm veritabanlarına işlem yapılır.

mysqlcheck programının (.exe dosyası) bir kopyasını alır ve bu kopya dosyanın adını mysqlrepair, mysqlanalyze veya mysqloptimize olarak değiştirirseniz ön tanımlı olarak --check işlemi yapan programın ön tanımlı işlemi dosya adına bağlı olarak --repair, --analyze veya --optimize olarak değişir.

mysqldump - Veritabanı Backup Programı

mysqldump, orjinal schema nesnelerini, tablo verilerini veya her iksini birden yeniden oluşturmak için çalıştırılan SQL komutlarını üreten mantıksal backup işlemleri gerçekleştiren bir programdır. Program, bir veya daha fazla MySQL veritabanını backup işlemi için depolar veya başka bir SQL Sunucu'ya transfer eder. Aynı zamanda, CSV, diğer metin formatlarında veya XML formatında çıktı elde eder.

mysqldump programı ile elde edilen çıktı yeniden yüklemeden önce görüntülenebilir veya üzerinde işlem yapılabilir. Veritabanlarını kopyalamak veya düşük çaplı işlemler için kullanılabilir. Ancak, yüksek ölçüde veri içeren veritabanlarında, verilerin yedeklenmesi ve yeniden yüklenmesi çok zaman alabililr.

Büyük çaplı yedekleme ve yeniden yükleme işlemi fiziksel yedekleme daha uygun bir tercih olabilir. Bu durumda, veri dosyaları daha hızlı kopya edilir ve yeniden yüklenebilir.

Eğer kullandığınız tablolar MyISAM ise, daha iyi perfromans sağlamak için mysqlhotcopy programını kullanmayı tercih edin.

mysqldump programı bir tablodan verileri okurken veya depolarken satır satır veya tümüyle alır. Tablodaki verileri tümüyle almak büyük tablolarda bellek sorunu yaratabilir. Tablolara satır satır işlem yapmak için, --quick seçeneğini (veya --quick seçneğini devereye sokan --opt seçeneğini) kullanın. --opt seçeneği ön tanımlı değerdir. Bellek tamponlama özelliğini kullanmak için --skip-quick seçneğini kullanın.

mysqldump programını çalıştırmak için 3 genel yöntem kullanılmaktadır:

C:\> mysqldump [seçenekler] veritabanı_adı [tablo_adı ...]
C:\> mysqldump [seçenekler] --databases veritabanı_adı ...
C:\> mysqldump [seçenekler] --all-databases

veritabanı_adı ifadesinden sonra herhangi bir tablo adı tanımlamaz veya --databases ve --all-databases seçeneklerinden birini tanımlarsanız tüm veritabanları yedeklenir.

Bir veritabanının tamamını yedeklemek için:

C:\> mysqldump veritabanı_adı > yedek_dosya.sql

Yedeklenen dosyayı tekrar sunucuya yüklemek için:

C:\> mysql veritabanı_adı < yedek_dosya.sql

veya

C:\> mysql -e "source /yol tanımlaması/yedek_dosya.sql" veritabanı_adı

Bir MySQL Sunucu'dan diğerine veri kopyalamak için:

C:\> mysqldump --opt veritabanı_adı | mysql --host=uzak_host -C veritabanı_adı

Birden fazla veritabanını tek komutla yedeklemek için:

C:\> mysqldump --databases veritabanı_adı1 [veritabanı_adı2 ...] > tum_veri.sql

Tüm veritabanlarını yedeklemek için:

C:\> mysqldump --all-databases > tum_veri.sql

InnoDB tablolar için, mysqldump programı online yedekleme olanağı sağlar:

C:\> mysqldump --all-databases --single-transaction > tum_veri.sql

Bu tür yedekleme başlangıçta tüm tablolar için, FLUSH TABLES WITH READ LOCK komutunu kullanarak, global bir okuma kilitlemesi gerektirir.

mysqlimport - Veri Çekme Programı

mysqlimport programı LOAD DATA INFILE komutu için bir komut satırı arayüzü sağlar. Bu programla kullanılan seçeneklerin çoğu LOAD DATA INFILE komutunda yer almaktadır.

C:\> mysqlimport [seçenekler] veritabanı_adı metindosyası1 [metindosyası2 ...]

Komut satırında yer alan dosya adları uzantıları dikkate alınmadan sadece dosya adı kullanılarak dosya içeriğinin aktarılacağı tablo adı belirlenir. personel.txt veya personel olarak tanımlanan dosya adları personel olarak işlem görür ve personel adlı bir tabloya veriler aktarılır.

mysqlshow - Veritabanı, Tablo ve Sütun (Veri alanı) Gösterme Programı

mysqlshow programı mevcut veritabanlarını ve tablolarını veya bir tablonun sütunlarını veya indekslerini görüntülemey sağlar. Aslında, SHOW komutunun farklı şekillerde kullanılması için bir komut satırı arayüzü sağlar.

C:\> mysqlshow [seçenekler] [veritabanı_Adı [tablo_adı [sütun_adı]]]

Eğer veritabanı adı verilmezse, veritabanlarının bir listesi gösterilir. Eğer tablo adı verilmezse, veritabanında bulunan tüm tablolar gösterilir. Eğer sütun adı verilmezse, tabloda bulunan tüm sütunlar gösterilir.

Elde edilen çıktı sadece erişim hakkına sahip olduğunuz verileri gösterir.

mysqlslap - Client Çalışması Taklit Programı

mysqlslap, MySQL Sunucu için client çalışmasını taklit eden bir işlem gerçekleştiren durum belirleyici bir programdır. Birden fazla client sunucuya erişiyormuş gibi çalışır.

C:\> mysqlslap [seçenekler]

mysqlslap programı 3 safhada çalışır:

1. Schema, tablo ve isteğe bağlı olarak deneme amacıyla kullanılmak üzere yüklenmiş programlar veya veriler oluşturma. Bu safha tek bağlantı kullanır.

2. Yükleme denemesi gerçekleştirir. Bu safha birden fazla bağlantı kullanır.

3. Bağlantıyı kesme ve eğer tanımlanmışsa tabloların silinmesi işlemlerinden oluşan temizleme işlemi. Bu safha tek bağlantı kullanır.

Tablo oluşturma, değer atama ve 25 kullanıcının sorgulama yapmasını ve her birinin 100 seçme işlemi gerçekleştirmesini sağlayan bir işlem:

C:\> mysqlslap --delimiter=";" \
--create="CREATE TABLE tablo01 (sutun01 int);INSERT INTO tablo01 VALUES (17)" \
--query="SELECT * FROM a" --concurrency=25 --iterations=100