10 Adımda MySQL Guvenliği Nasıl Sağlanır?

1- Tum mySQL hesapları şifreli olmalı. Aksi taktirde mysql -u forum forum_db gibi bir komutla mysql sunucuya kolayca bağlanabilir.

2- mySQL sunucusunu root kullanıcısı ile asla calıştırmayın.File yetkisine sahip herhargi bir kullanıcının root olarak bir dosya oluşturmasına sabep olabileceği icin bu cok tehlikeli bir durumdur (Orn: ~root/.bashrc). Bunu engellemek icin
acıkca --user=root komutu kullanılmadıkca mySQL in root olarak komut calıştırmasını reddedin.

mySQL,sıradan , yetkisiz kullanıcı yerine calıştırılabilir.Her şeyi daha guvenli yapabilmek icin ayrı bir mySQL isimli Unix hesabı oluşturabilirsiniz.Bu hesabı başka bir Unix kullanıcısı olarak mySQL yonetiminde mysqld başlatmak icin
kullanın,Sunucu seceneklerini belirtiğiniz my.cnf dosyasındaki [mysqld] gurubu başlığı altına bir kullanıcı USER (kullanıcı) ekleyin ornek [mysqld]
user=mysql

Bu, sizin elle belirlediğiniz kullanıcını sunuc tarafından başlatılmasına sebeb olur. Root dan başka mysqld nin Unix kullanıcısı olarak calıştırılması Kullanıcı tablosundaki root kullanıcı isminin değiştirlmesi gerektiği anlamına gelmez

3- Sembolik Linkerin tablolarda kullanılmasına izin vermeyin. (Bu secenek --skip-symbolic-links komutu ile iptal edilir) Bu ozellikle mysqld yi root olarak calıştırıyorsanız onemlidir. Cunku sunucuda yazma yetkisi olan herhangi bir kimse sistemdeki herhangi bir dosay yı silebilir

4- Unix sunucularda Yazma ve Okuma yetkileri olan kullanıcıların mysqld olarak işlem yaptığına emin olun

5- Yonetici olmayan kimselere Proccess veya Super yetkilerini vermeyin. mysqladmin processlist ve SHOW PROCESSLIST cıktısı yurutulen komutları metin olarak gosterir.Sunucu işlem listesini gorme yetkisi olan bazı kullanıcılar diğer kullanıcların verdiği komutlrın listesini gorebilir (orn : UPDATE user SET password=PASSWORD('not_secure')

mysqld, Super yetkisi olan kullanıcılar icin extra bağlantı saklar.Tum normal bağlantılar kullanımda olsa bile mySQL root kullanıcısı giriş yapabilri ve sunucu işlemlerini kontrol edebilir.Super yetkisi istemci bağlantısını kesmek,sistem değişken değerleri ve kopya sunucularını kontrol etmek icin kullanılır

6- File yetkisini yonetici olmayanlara vermeyin Bu yetkiye sahip herhangi bir kullanıcı dosya sistemindeki mysqld yetkileri ile herhangi bir yerde dosya oluşturabilir.Bir nebze guvenlik icin SELECT ... INTO OUTFILE komutu ile uretilmiş dosyalar var olan dosya uzerine yazmazlar ve herkes tarafından yazılabilir durumdalar.

7- File yetkisi herhangi bir dosyayı okumak icin kullanılabilir.Bu yetki ile veritabnındaki tabloar okunabilir.Bu durum tehlikeli bi durum orn: bir tablo icine /etc/passwd yuklemek icin LOAD DATA kullanılabilir

8- Eğer DNS e guvenmiyorsanız tablolarda Hostname yerine IP kullanın.Her halukarda wildcard iceren hostname değeri kullanarak buyuk tablo oluşturma işleminde dikkatli olun

9- Bir hesaba izin verilen bağlantı sayısını sınırlandırmak icin mysqld de max_user_connections değişkenini kullanın.GRANT cumlesi kaynak kontrolunu destekler

10- --ssl ile başlayan bağlantı dizeleri kullanın

MySQL'e ek guvenlik sağlamak icin;
MySQL de "load data local infile" data ozelliği mysql'i calıştırdığınız kullaniciya sistemdeki dosyaları okuyarak php yada benzeri seylerle engellediğiniz başka dizinlerdeki dosyalari gorme kısıtlarını kaldiriyor.Bunu engellemek icin

/etc/my.cnf dosyasına

set-variable=local-infile=0

satırını eklememiz yeterlidir