MariaDB (MySQL) Veri tabanı Sunucusu

MySQL, dünyanın en popüler açık kaynak kodlu veri tabanı yönetim sistemidir. MySQL, kanıtlanmış performansı, güvenilirliği ve kullanım kolaylığı sayesinde Facebook, Twitter ve YouTube gibi başlıca web sitelerinin web tabanlı uygulama yazılımları tarafından da kullanılan lider veri tabanı haline gelmiştir[1]. MySQL, uzun süre ücretsiz ve açık kaynak kodlu bir proje olarak devam ettikten sonra Sun firması tarafından satın alınarak yoluna yine açık kaynak olarak devam etmiştir; fakat lisans modeli değişikliği ile profesyonel amaçlı (ticari kullanım) kullanımlarda ücret ödenmesini gerektirmiştir. MySQL’in hakları Sun firması tarafından satın alındıktan sonra MySQL çatallanarak (iki ana kola ayrılmış), MySQL’in çekirdek geliştirici ekibi tarafından MariaDB adıyla ayrı bir koldan (fork) geliştirilmeye devam etmiştir. MariaDB veri tabanı yönetim sistemi MySQL alt yapısını tamamıyla desteklemekte, programlama arayüzleri ve adaptörleri ile tam uyum içinde çalışabilmektedir[2]. Biz de bu bölümde Maria DB’ye yer vereceğiz.

Veri tabanı sunucusunu kurmak

MariaDB’yi Raspberry Pi’a kurmak için aşağıdaki paketi yükleyebilirsiniz:

MariaDB veri tabanı sunucusu kurulumu tamamlandıktan sonra sunucu servisi hemen çalışmaya başlayacaktır. Sunucu, varsayılan olarak 3306 numaralı port üzerinde çalışır. Servisin çalışıp çalışmadığını netstat ve systemctl komutları ile görebilirsiniz:

Veri tabanı sunucusunu başlatmak

systemctl aracını kullanarak diğer tüm servisleri olduğu gibi MariaDB sunucusunu da başlatıp durdurabilirsiniz. MariaDB sunucusunun mevcut durumunu görmek için status, başlatmak için start durdurmak için ise stop seçeneğinden faydalanabilirsiniz:

MariaDB sunucusu Raspberry Pi’ın açılışında otomatik olarak çalışmak üzere ayarlıdır. Otomatik olarak başlamasını istemiyorsanız systemctl aracı ile MariaDB’yi açılışta etkisizleştirebilirsiniz. Aşağıdaki komutu verdiğinizde, Raspberry Pi’ın bir sonraki yeniden başlamasında MySQL başlatılmayacaktır:

Açılışta başlamak üzere ayarlamak isterseniz enable seçeneğinden faydalanabilirsiniz.

Veri tabanı yönetici kullanıcısının varsayılan parolasını değiştirmek

MariaDB veri tabanı sunucusunun varsayılan yönetici kullanıcı hesabı root’dur ve tüm veri tabanları üzerinde sınırsız erişim yetkisi vardır. Hatta MariaDB’in kendi işleyişi için kullandığı information_schema, mysql ve performance_schema gibi veri tabanları üzerinde de sınırsız şekilde işlem yapabilir. Bu kullanıcının varsayılan parolası da root’dur.

Söz konusu olan sınırsız yetkilere sahip bir kullanıcı olduğunda, bu kullanıcı ile veri tabanı üzerinde işlem yaparken çok dikkatli olunmalıdır. Yetki sınırı olmadığı için yanlışlıkla uygulanacak bir komut zararlı olabilir. Bu nedenle yetkileri sınırlandırılmış farklı bir kullanıcı oluşturmak en güvenli yaklaşımdır. Öncelikle MariaDB’nin yöneticisi olan root kullanıcısının varsayılan parolasını değiştirmek gerekir. Bu parola değiştirilmediği takdirde Raspberry Pi’ın terminal arayüzüne erişen herhangi birisi tüm veri tabanları üzerinde sınırsız işlem yetkisine sahip olabilir. MariaDB, varsayılan olarak root kullanıcısının sadece localhost üzerinden bağlanmasına izin verir. MariaDB’in root kullanıcısının parolasını değiştirmek için MariaDB ile beraber gelen /usr/bin/mysql_secure_installation betiğini çalıştırmak yeterlidir. Betiği çalıştırmadan önce root kullanıcısına geçiş yapılmalıdır:

sudo su komutu ile root kullanıcısına (#) geçiş yaptıktan sonra komut satırına mysql_secure_installation yazarak betiği çalıştırdık. Yukarıdaki ekran çıktısından da görebileceğiniz gibi, betik güvenli bir yapılandırma için toplam 6 soru sormuştur.

  1. Betiği çalıştırmaya devam etmek için varsayılan root parolası olarak root yazıp enter tuşuna basın.
    1. Root parolasını değiştirmek için Enter tuşuna basın veya Y yazıp Enter tuşuna basın ve yeni parolayı 2 kez girin.
    1. Anonim MariaDB kullanıcısını silmek için Enter tuşuna basın veya Y yazıp Enter tuşuna basın.
    1. Root kullanıcısının uzaktan (localhost dışından) MySQL veri tabanı sunucusuna bağlanmasını engellemek için Enter tuşuna basın veya Y yazıp Enter tuşuna basın.
    1. MariaDB’nin, kullanıcıların denemeler yapabilmesi için oluşturduğu test isimli veri tabanını silmek için Enter’a tuşuna basın veya Y yazıp Enter tuşuna basın.
    1. Değiştirilen erişim izinlerinin geçerli olması için Enter tuşuna basın veya Y yazıpı Enter tuşuna basın.

Veri tabanı sunucusuna bağlanmak

MariaDB’ye bağlanarak veri tabanı sorguları çalıştırmak için birçok yol vardır. Terminal üzerinden çalışanlar için ilk tercih edilen yol mariadb istemcisini kullanmaktır. mariadb istemcisinin veri tabanını web üzerinden yönetmek için phpMyAdmin adındaki PHP script’i oldukça yaygın ve kullanışlıdır. Bu script’in kurulumu ve kullanımı ilerleyen kısımlarda anlatılacaktır. Bunun dışında grafik kullanıcı arabirimi üzerinde çalışan MySQL Workbench, MySQL-Front, HeidiSQL ve Sequel Pro gibi birçok ücretsiz program vardır.

Kurulumunu yaptığımız ve yönetici kullanıcısın parolasını değiştirdiğimiz MariaDB veri tabanı sunucumuza bağlanmak için aşağıdaki gibi öncelikle root kullanıcısına geçiş yapın ve daha sonra mariadb istemcisi ile sunucuya bağlanın. Mariadb root kullanıcısının girişini yalnızca root kabuk (shell) oturumu üzerinden kabul eder. Bağlantı için :

Bağlantı gerçekleştiğinde sizi MariaDB komut satırı karşılayacak ve komut girmenizi bekleyecektir. Bu komut satırında standart SQL sorgu komutları yanında MariaDB’nin yönetimine özel birçok komut desteklenir. MariaDB istemcisinin (mariadb) komut satırına yazılan her SQL komutu ; karakteri ile sonlandırılmalıdır. SQL sorgu komutlarının dışındaki komutlar için ; karakterini yazmaya gerek yoktur. İlk olarak mevcut veri tabanlarını listeletmek için SHOW DATABASES komutunu yazabilirsiniz.

mariadb istemcisine ait yukarıdaki ekran çıktısı incelendiğinde şu bilgilerin yer aldığı görülebilir;

  • [(none)] ile henüz üzerinde çalışılacak aktif bir veri tabanı olmadığı gözükür
  • Veritabanında hâlihazırda information_schema, mysql ve performance_schema veri tabanlarının var olduğu görülür.
  • Çalıştırılan SQL sorgusunun sonucu olarak 3 satırdan (3 rows in set) oluşan bir sonuç kümesinin döndüğü görülür.
  • sec (seconds) ile Çalıştırılan SQL sorgusunun 1 mili saniyeden kısa sürede tamamlandığı anlaşılır.

Dilerseniz mariadb istemcisinin en çok kullanılan komutlarından olan use komutunu inceleyelim. Use komutu üzerinde işlem yapılacak olan veri tabanının seçilmesini sağlar. Mysql isimli veri tabanını seçip içerisindeki tabloları listelemek için aşağıdaki 2 komutu çalıştırabilirsiniz:

Mysql isimli veri tabanı içindeki tablolardan birisi olan user tablosu, root kullanıcısının da içinde yer aldığı kullanıcıların erişim izinlerinin tutulduğu çok önemli bir tablodur. MySQL kendi yapılandırma bilgisi olarak kabul edilebilecek verileri de bu şekilde kendi veri tabanlarında tutar. Bu tablonun yapısını, yani içerisindeki alanları listelemek için DESCRIBE komutundan yararlanabilirsiniz. Tablodaki kayıtları listelemek için ise aşağıdaki gibi bir SELECT sorgusu çalıştırabilirsiniz.

Son satırdaki komut user tablosunda yer alan tüm alanlar (*) yerine sadece Host, User ve Password alanlarının listelenmesini sağlar. mariadb istemcisinden çıkmak için ise exit komutunu yazabilirsiniz.

Uzaktaki bir MySQL sunucusuna bağlanmak için mariadb istemcisinin –h (–host) seçeneğini aşağıdaki gibi kullanabilirsiniz.

Veri tabanı sunucusuna localhost dışından bağlanmak

MariaDB sunucusu 3306. TCP port’unu varsayılan olarak 127.0.0.1 (localhost) üzerinde dinler. Sunucuya ağ üzerindeki diğer makinelerden bağlanmak istiyorsanız bu adresi 50-server.cnf dosyasındaki bind-address seçeneğini kullanarak değiştirmeniz gerekir.

Raspberry Pi birden fazla IP adresine sahipse veya IP yapılandırmasını DHCP yoluyla alıyorsa bind-address değerini 0.0.0.0 olarak verebilirsiniz. Bu durumda MariaDB üzerinde çalıştığı Raspberry Pi’ın sahip olduğu tüm IP adreslerinin 3306. port’unu dinleyecektir. MariaDB’nin dinlemesini istediğiniz belli bir IP adresi varsa onu tam olarak bind-address seçeneğine yazmalısınız.

Varsayılan olarak, root kullanıcısı sadece localhost üzerinden bağlantıya izin verilmiştir. Root kullanıcısı ile uzak bilgisayardan bağlantıya izin vermek için önceki başlıkta anlatıldığı gibi tüm uzak bilgisayarlara izin vermek için % karakterini kullanabilirsiniz. Aşağıdaki örnek root kullanıcısına raspberry parolası ile ağdaki tüm makinelerden bağlanabilmeye izin verir:

Veri tabanı sunucusunda yeni bir kullanıcı tanımlamak

Daha önce bahsedildiği gibi root MariaDB sunucusu için en yetkili kullanıcıdır ve tüm tablolar üzerinde tam yetkiye sahiptir. MariaDB veri tabanını kullanan uygulamalar ile çalışırken uygulamanıza özel kullanıcı oluşturmak isteyebilirsiniz. Bunun için MySQL konsoluna root kullanıcısı ile giriş yaptıktan sonra GRANT komutu ile yeni bir kullanıcı tanımlayabilirsiniz. GRANT komutunun genel yazımı aşağıdaki gibidir:

Yukarıdaki yazım şeklinde yer alan ve kullanıcının dolduracağı alanlar hakkında bilgi vermek gerekirse;

  • <izinler> ile belirtilen kısımda kullanılabilecek bazı tanımlamalar[3] şunlardır: ALL, CREATE, DELETE, INSERT, UPDATE, DROP… Bir kullanıcıya tüm yetkileri vermek isterseniz ALL tanımını kullanabilirsiniz.
  • <veri tabanı> ile kullanıcıya üzerinde yetki vermek istediğiniz veri tabanının adını belirteceğiniz alandır. Tüm veri tabanlarına yetki vermek için * karakterini kullanabilirsiniz.
  • <tablo> ile belli bir veri tabanı üzerindeki belli bir tablo ya da tablolara izin vermek için kullanabilirsiniz.
  • <kullanıcı adı> ile yeni eklemek istediğiniz kullanıcının adını belirtebilirsiniz.
  • <istemci ip> ile yeni eklenen kullanıcın bağlantı kurabileceği istemci bilgisayarın IP adresi tanımlanır. % karakteri ile tüm bilgisayarlardan bağlanması sağlanabilir.
  • <kullanıcının parolası> ile yeni eklenen kullanıcıya bir parola tanımlanır.

Aşağıdaki örnekte ilk olarak mariadb istemcisi kullanılarak (mariadb –u root –p) MySQL sunucusunda yönetici oturumu açılmıştır. Ardından CREATE DATABASE komutu ile rpi adında bir veri tabanı oluşturulmuş ve bu veri tabanı içindeki tüm tablolara (*) her türlü erişim yetkisi olan pi adında (parolası raspberry) bir kullanıcı eklenmiştir. Bu kullanıcı MariaDB sunucusuna herhangi bir bilgisayardan (%) bağlanabilecektir. Kullanıcı eklendikten sonra FLUSH PRIVILEGES komutu çalıştırılarak kullanıcı erişim izinlerinin sunucu genelinde geçerli olması sağlanmıştır.

UYARI: Güvenlik sınırlamaları nedeniyle MariaDB sunucusu üzerinde root oturumu açmadan önce sudo komutu ile yetki vermek ya da öncesinde shell ortamında root kullanıcısı oturumu açmak gerekir.

Veri tabanı kullanıcısının parolasını değiştirmek

Bir MariaDB kullanıcısının parolasını değiştirmek için; yetkili bir kullanıcı aracılığıyla (örneğin MariaDB yöneticisi root) MariaDB komut satırında oturum açtıktan sonra aşağıdaki komutu kullanabilirsiniz:

Yukarıdaki SQL işlemlerinde; öncelikle USE komutu ile aktif veri tabanı mysql olarak seçilmiş. Ardından mysq veri tabanının user tablosunda yer alan pi kullanıcısına ait password alanı ‘tankado’ parolası ile güncellenmiştir.

Veri tabanı sunucusunu yapılandırmak

MariaDB sahip olduğu varsayılan ayarları ile genellikle ek bir yapılandırmaya ihtiyaç duymadan başarılı şekilde çalışabilir. Yine de bazı özel durumlar için yapılandırma ayarlarının neler olduğun uve nasılasıl gerçekleştirileceğini bilmek faydalı olacaktır. MariaDB’nin ana yapılandırma dosyası /etc/mysql/mariadb.cnf’dir. Bu dosya, hem MariaDB’ye özel yapılandırma ayarları hem de geriye dönük MySQL desteği için yapılandırma bilgisinin merkezidir.

mariadb.cnf’un içeriğine göz atarsanız sırasıyla /etc/mysql/conf.d/ ve /etc/mysql/mariadb.conf.d/ dizinlerindeki yapılandırma dosyalarını birleştirici (includedir) bir göreve sahip olduğunu görebilirsiniz. Eğer bu dizinlerdeki yapılandırma dosyalarında aynı yapılandırma ayarı birden fazla kez kullanılırsa en son kullanıldığı yerdeki değeri geçerli olur. Yani, en son çağırılan /etc/mysql/mariadb.conf.d/ dizinindeki yapılandırma geçerli olacaktır.

MariaDB’yi yapılandırmak başlamak için /etc/mysql/mariadb.conf.d/50-server.cnf dosyası düzenlenebilir. Dosya nano editörü ile açıldığında aşağıdaki temel yapılandırma anahtarları görülebilir:

Yukarıdaki yapılandırma seçeneklerinin ve kullanılabilecek diğer seçeneklerin[4] görevleri aşağıda açıklanmıştır. Yapılandırmanın geçerli olması için ihtiyacınıza uygun değişiklikleri yapıp kaydettikten sonra MariaDB’yi aşağıdaki gibi yeniden başlatmanız yeterlidir.

Eğer yapılandırma bilgilerinde bir eksiklik veya hata var ise servis başlayamayacak ve aşağıdaki gibi bir mesaj görüntülenecektir:

my.cnf dosyasında yapılan yapılandırma ayarlarının doğruluğunu mysqld programına help ve verbose seçeneklerini vererek kontrol ettirebilirsiniz. Bu seçenek ile geçersiz yapılandırmalar veya yanlış yazılmış değerler ekrana listelenir.

MariaDB’nin bazı önemli yapılandırma seçenekleri şunlardır:

  • user: MariaDB veri tabanı sunucusuna ait servis (daemon) bu kullanıcının yetkileri ile çalışacaktır. MariaDB’nin mevcut kurulumu bu kullanıcı ile (mysql) ile çalışacak şekilde gerçekleşmiştir. İlgili kullanıcıyı /etc/passwd dosyasından görebilirsiniz.
  • port: MariaDB veri tabanı sunucusunun hangi TCP port’u üzerinden çalışacağını belirler. Port numarasını değiştirdiğinizde mysql gibi istemci araçlarına MariaDB ‘nin çalıştığı port numarasını seçenek olarak geçmelisiniz (-P ve ya –port seçeneği). Bu numara sistemde kullanılmayan herhangi bir port ile değiştirilebilir.
  • datadir: MariaDB veri tabanlarını bu dizinde saklar. Her veri tabanı için bu dizinde veri tabanı adı ile alt dizinler oluşturulmuştur. Bu dizinleri ilgili veri tabanının komple yedeğini almak için kullanmak oldukça yaygındır. Yedek almadan önce mariadb servisinin durdurulması tavsiye edilir.
  • bind-address: MariaDB sunucusunun dinleyeceği IP adresidir. Istemciler sunucuya bağlanırken burada tanımlı olan adresi kullanır. Raspberry Pi’ın sahip olduğu birden fazla IP adresi var ise; MariDB’nin tüm IP adreslerinden iletişim kurulabilir olması için bu alanda * veya 0.0.0.0 değerlerinden birisini kullanabilirsiniz. Bu durumda varsayılan diğer olan localhost (127.0.0.1)’den farklı olarak tüm IP adresleri kullanılarak MariaDB’ye bağlanılabilecektir. Burada birden fazla IP tanımlamak isterseniz bind-address seçeneğini her bir adres için ayrı ayrı tanımlayabilirsiniz.
  • Örn:
    bind-address = 192.168.0.254
    bind-address = 10.0.0.254
  • key_buffer_size: Veri tabanı indeksleri için kullanılacak tamponun boyutudur. Bu tampon RAM bellekte ayrılır. İndeks tanımladığınız alanın veri türü ve kayıt sayısına bağlı olarak bu alanın miktarını artırabilirsiniz.
  • max_allowed_packet: MariaDB veriler ile işlem yaparken verileri paketler halinde ele alır. Özellikle BLOB gibi fazla miktarda veri taşıyan alanlar veya uzun metinler söz konusu olduğunda, bu ayar ile ilgili hata görüntülenebilir. Bu durumda değeri artırmalısınız.
  • thread_stack: SQL sorgu işlemlerini yürüten alt işlemler için yığın boyutu tanımlamayı sağlar. Bu yığın, özellikle iç içe karmaşık SQL cümlelerinin kullanıldığı durumlarda cümlelerin sırasının takip edilmesi ve iç cümlelerden dönen veri kümelerinin depolanması gerekli alana karşılık gelir. Çoğu durumda 192KB’lık boyut yeterli gelmektedir.
  • thread_cache_size: Sunucunun yeniden kullanmak için kaç thread’i önbelleğe alacağını ayarlar.
  • query_cache_limit: Burada tanımlanan boyut kadar bellek alanı SQL sonuçlarının ön belleklenmesi için kullanılır. Bu ön bellek aynı sorgu yeniden çalıştırıldığında sonucun oldukça hızlı bir şekilde döndürülmesini için kullanılır.
  • general_log: MariaDB’nin çalışma sistemi ile ilgili günlük tutulup tutulmayacağını tanımlar. Günlük tutulması isteniyorsa değeri 1 olarak verilebilir.
  • general_log_file: MySQL’in çalışma sistemi ile ilgili durumların raporlanacağı dosyanın yolu tanımlanır. Örn: /var/log/mysql/mysql.log
  • log_error: Sunucu ve SQL hatalarının raporlanacağı dosyanın yolunu tanımlar. Bu günlük dosyasının ön tanımlı konumu/var/log/mysql/error.log’dur.
  • slow-query-log: Tablolar veya indeksler kötü tasarlandığında veya SQL cümleleri özensiz yazıldığında çalıştırılan sorgular uzun sürebilir. Uzun süren sorguların MariaDB tarafından otomatik olarak kayıt altına alınması, hatadan haberdar olmak için çok faydalı bir yöntemdir. Yavaş çalışan sorguların kayıt altına alınmasını istiyorsanız bu seçeneğin değerini 1 olarak ayarlayabilirsiniz. Bu seçeneğin ön tanımlı değeri 0’dır. Bu ayarı geliştirme veya hata ayıklama süreçlerinde devreye almanız sistemin başarımı açısından dikkat edilmesi gereken bir konudur. Özellik devrede olduğunda bir miktar CPU gücü ve SQL sorgularının sayı ve uzunluğuna bağlı olarak disk alanı tüketir.
  • slow-query-log-file: Yavaş çalışan SQL sorgularının kaydedileceği dosyayı tanımlamak için kullanabilirsiniz. Örn: /var/log/mysql/mysql-slow.log
  • long-query-time: Saniye cinsinden değerler kabul eden bu seçenek ile kaç saniyeden uzun süren SQL sorgularının kayıt altına alınacağını belirleyebilirsiniz. Örneğin 1 saniyeden uzun süren SQL sorgularının log dosyasına kaydedilmesi için 1 değerini verebilirsiniz.

Veritabanlarını yedeklemek ve geri yüklemek

MariaDB sisteme yüklenirken sunucu yazılımı yanında birçok kullanışlı araç da yüklenir. mysqldump da bunlardan biridir. mysqldump ile dilediğiniz bir veri tabanının (vt) SQL biçimli yedeğini alabilirsiniz (bu iş için phpMyAdmin’de kullanılabilir). Sonuçta oluşan yedek, salt SQL komutları ile veriden oluşan bir dosyadır ve veribanını yeniden inşa etmek için kullanılabilir. Aşağıdaki komut ile veri tabanının yedeği yedek.sql adlı dosyaya kaydedilmiştir.

Komutu çalıştırdığınızda –p seçeneğinin gereği olarak root isimli veri tabanı kullanıcısının parolasının girilmesi istenir ve veri tabanının büyüklüğüne göre değişen bir sürede SQL yedeği oluşturulur. Dilerseniz yukarıdaki veri tabanının sıkıştırılmış bir yedeğini de aşağıdaki gibi oluşturabilirsiniz.

SQL dosyası metin biçimli bir dosya olduğu için sıkıştırma oranı oldukça yüksektir. Düz metin biçimi yaklaşık 9MB olan yedek dosyası gzip ile sıkıştırıldığında 1MB’a düşmüştür. Bu özellik yüksek hacimli veri tabanları yedeklenirken disk alanından kazanmak için çok faydalıdır.

Sıkışmış yedek dosyasını ihtiyaç olduğunda kullanmak için öncelikle genişletmek gerekir. Bunun için gunzip aracını aşağıdaki gibi çalıştırabilirsiniz.

Veri tabanı sunucusunun günlük (log) kayıtlarını incelemek

MariaDB hata ayıklama amacıyla, genel olarak 3 tür günlük tutar. Bunlar:

  • Error log (hata günlüğü).
  • General query log (genel sorgu günlüğü).
  • Slow query log (yavaş sorgu günlüğü).

log_error seçeneği ile yapılandırılan hata günlük dosyası olan /var/log/mysql/error.log, MariaDB sunucu hatalarının raporlandığı dosyadır ve varsayılan olarak aktif gelir. Yani, MariaDB, kurulumundan itibaren sistemsel olarak yaşadığı sorunları buraya raporlar. Bu dosyada sunucunun başlatılması, durdurulması ve çalışması sırasında oluşan hatalar raporlanır. Dosyaya cat veya nano araçlarını kullanarak göz atabilirsiniz:

general_log_file seçeneği ile yapılandırılan /var/log/mysql/mysql.loggünlük dosyası MariaDB’ye kurulan bağlantıları ve çalıştırılan tüm SQL’lerin bir kaydını tutar. Veri tabanı sunucusunu kullanan uygulamaların hangi SQL’leri çalıştırdıklarını veya hangi kullanıcıların bağlandıklarını görmek açısından faydalıdır. general-log seçeneği etkinleştirildiğinde kısa süre de büyük ebatlı bir log dosyası oluşabilir. Bu durumu dikkate alarak, ayarı gerektiğinde etkinleştirmenizi tavsiye ederim. mysql.log,cat veya nano aracılığı ile incelenebileceği gibi tail aracı ile canlı olarak da incelenebilir. tail aracının aşağıdaki kullanımında, mysql.log dosyasına yeni bir günlük eklendiğinde anında ekranda görünmesi sağlanır:

slow-query-log-file seçeneği ile yapılandırılan /var/log/mysql/slow.log dosyası daha önce de belirtildiği gibi yavaş çalışan SQL cümlelerinin bir kaydını tutar. Bu özellik uygulama geliştiricilerinin çok işine yarar. Bazen yanlış bir SQL veya hatalı yapılandırılmış bir veri tabanı tablosu, SQL cümlelerinin çok yavaş çalıştırılmasına neden olur. Bu özellikle bir veri tabanı söz konusu olduğunda, Raspberry Pi gibi sınırlı CPU ve RAM’e sahip olan sistemlerde kaynakların dramatik şekilde azalmasına ve sistemin normal çalışamamasına neden olur. Karışık bir uygulama geliştiren bir geliştiricinin ise canlı veriler üzerinde koşturduğu SQL’lerden hangilerinin öngörülenden fazla işlemci zamanı aldığını bulması zor olabilir. Tavsiyem bir uygulama geliştirirken testler sırasında bu ayarın etkinleştirilerek MySQL yük durumunun izlenmesidir. slow.log dosyasını tail aracı ile aşağıdaki gibi izleyebilirsiniz:

Veri tabanı yönetimi için phpMyAdmin’i kullanmak

phpMyAdmin (PMA) yerel MariaDB/MySQL veri tabanlarını web üzerinden yönetmek için kullanışlı bir araçtır. PMA ile veri tabanlarını bir web arabirimi üzerinden sorgulayabilir, kayıt ekleyebilir, güncelleyebilir, yönetebilir ve kolayca yedekleyebilirsiniz. PMA’in yüklenebilmesi için Raspberry Pi’a Apache, PHP ve MariaDB kurulumlarının yapılmış olması gereklidir.

PhpMyAdmin Web Arabirimi

 PMA paketini yüklemek için Raspberry Pi’ı güncelledikten sonra aşağıdaki komutu kullanın:

Kurulum başladıktan sonra PMA hangi web sunucusunun yüklü olduğunu soracak. İlgili seçeneği işaretleyerek Ok düğmesini onaylayın (space [boşluk] tuşu ile seçip tab tuşu ile Ok düğmesine gidin ve enter tuşu ile onaylayın)

PMA için yüklü web sunucusunun seçilmesi

PMA konfigürasyonunun yüklenmesi

PMA yeni sürümleri ile birlikte kendi yapılandırmasını tuttuğu bir veri tabanına ihtiyaç duyuyor. Yukarıdaki ekran görüntüsünde bu veri tabanını oluşturmak için dbconfig-common aracını kullanıp kullanmak istemediğinizi soruluyor. Bu soruyu Yes (Evet) ile cevaplayabilirsiniz, diğer durumda PMA’in yapılandırmasını elle yapmak gerekir.

MySQL yönetici parolasının girilmesi

PMA’in kendi veri tabanı ve kullanıcısını oluşturabilmesi için MySQL yöneticisinin (root) parolasını girin. Bu parola MySQL kurulumu sırasında size sorulan paroladır. PMA bu parola ile kendi veri tabanını MySQL sunucusu içinde oluşturacak. Kurulum tamamlandıktan sonra web tarayıcınızın adres çubuğuna Raspberry Pi’ın adresi ile birlikte phpmyadmin yazın (örn.:http://192.168.0.110/phpmyadmin/):


PMA giriş ekranı

PMA web giriş ekranında geçerli bir kullanıcı adı/parola yazarak veri tabanlarınızı yönetmeye başlayabilirsiniz.


[1] Kaynak: https://www.oracle.com/tr/mysql/index.html

[2] MySQL ve MariaDB uyumluluğu: https://mariadb.com/kb/en/library/mariadb-vs-mysql-compatibility/

[3] MySQL kullanıcı izinleri: https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

[4] MySQL yapılandırma seçenekleri: https://dev.mysql.com/doc/refman/5.7/en/mysqld-option-tables.html

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.