Tweet

Makaleler » Mysql

Geniş Mysql Güvenliği





MySQL Internet üzerindeki en popülerveritabanlarından biridir ve sıklıkla PHP ile birlikte kullanılır.Yüksek performansına oranla kolay kullanımı gibi bir çok avantajı biryana, MySQL basit fakat çok etkili bir güvenlik mekanizmasısunmaktadır.
Oguzz | 2 Haziran 2007 17:33 | Yorum(0) | devamı »

MySQL için Güvenlik Önerileri


Root kullanıcısına bir şifre tanımladığınıza emin olun, MySQL standart kurulumunda size root kullanıcısına bir şifre vermenizi söyler ama buna sizi zorlamaz.


MySQL sunucusunu root olarak çalıştırmayın.


Eğer MySQL'le sadece kendi çalıştığı sunucudan bir program bağlantı kuracaksa (çoğu web-veritabanı uygulamasında olduğu gibi), TCP/ IP servisini kapatın (--skip-networking). Aynı bilgisayardaki web sunucu MySQL'e bağlanmak için zaten çok daha hızlı olan unıx soketlerini kullanacaktır.


MySQL'in sembolik linklenmiş tabloları kullanmasına izin vermeyin (--skıp-symlink seçeneği).


Tek bir kullanıcının kurabileceği en fazla bağlantı sayısını mysqld'nin max_user_connections seçeneği ile ayarlayabilirsiniz. Böylece bir kullanıcı herhangi bir nedenle çok fazla bağlantı açtığında (programındaki bir hata veya saldırı amacıyla), MySQL zor durumda kalmayacaktır.


"process" yetkisini kullanıcılara vermeyin. Kendi halinde bir kullanıcının veritabanının o anda yaptığı sorguların neler olduğuna öğrenmeye ihtiyacı olmaması gerekir.


"file" yetkisini kullanıcılara vermeyin. Aksi takdirde MySQL kullanıcısının hakları ile sunucunuzdaki diledikleri yere yazabilir ve okuyabilirler.


MySQL sunucunuzun kullandığı DNS'in yanıltılması olasılığına karşı; erişim kısıtlamaları tanımlarken, bilgisayar ismi yerine IP numarası kullanabilirsiniz. O zaman MySQL'i --skip-name-resolve seçeneği ile çalıştırarak sadece IP numaraları ile çalışmasını ve hiç DNS kullanmamasını sağlayabilirsiniz.


Veritabanı dosyalarının bulunduğu dizine (orn. /usr/l0cal/mysql/var) sadece mysql kullanıcısının okuma/yazma hakkı olduğundan emin olun.


MySQL'i sakın --skıp-g.rant-tables seçeneği ile çalıştırmayın. Bu, MySQL'in yetkilendirme sistemini iptal ederek çalışmasına ve tüm kullanıcıların veritabanlarına tam erişime sahip olmasına yol açar.

Dia | 21 Aralik 2006 17:22 | Yorum(0) | devamı »

MySQL' de Kullanıcılar ve Yetkilendirme


MySQL'de tüm kullanıcılar ve yetkileri, "mysql" isimli bir veritabanında tutulur.


Bir kullanıcı iki parçadan oluşur : kullanici_ismi@bilgisayar_ismi (hostname). Bu ikiliyi MySQL tek bir kullanıcı olarak algılar. Yani ahmet@localhost ile ahmet@penguen aynı kullanıcılar değildir (localhost ve penguen aynı makinalar olsa dahi).


Bir kullanıcının 4 yetki seviyesi vardır. Her yetki seviyesi için mysql isimli veritabanında birer tablo bulunur.


Hiyerarşik olarak bu tablolar en genelden özele doğru tanımlama yapar.


User tablosu : Bağlanan kullanıcının sunucuya bağlanma hakkı olup olmadığını kontrol eder. Eğer erişim hakkı varsa, kullanıcı tabloda kendisi için belirtilen yetkilere sahip olur.


Db tablosu : Hangi kullanıcıların hangi veritabanlarına hangi bilgisayarlardan ulaşabileceğini belirler. Eğer kullanıcının ilgili veritabanına erişim hakkı varsa, tabloda kendisi için belirtilen yetkilere sahip olur.


Tables_priv tablosu : Aynı db tablosu gibi çalışır, ancak veritabanları yerine içindeki tablolara erişimi düzenler.


Columns_priv tablosu : Aynı db ve tables_priv tabloları gibi çalışır, ancak veritabanlarının içindeki tabloların içindeki kolonlara erişimi düzenler.


mysql veritabanı
|
|
user
|
|
db
|
|
tables_priv
|
|
columns_priv



Yetki tabloları ve mysql isimli veritabanı, normal MySQL veritabanları gibi çalışır. INSERT, UPDATE, DELETE gibi standart sql komutları ile tıpkı herhangi bir veritabanı üzerinde işlem yapıyor gibi kullanıcı tanımları yapabilirsiniz.



Kullanıcılara Verilebilen Yetkiler

Select_priv : Kayıtları okuma

Insert_priv : Kayıt ekleme

Update_priv : Kayıt değiştirme/güncelleme

Delete_priv : Kayıt silme

Create_priv : Veritabanı/tablo yaratma

Drop_priv : Veritabanı/tablo kaldırma

Reload_priv : MySQL'i yeniden başlatma

Shutdown_priv : MySQL'i kapatma

Process_priv : MySQL'de çalışan işlemleri takip etme

File_priv : Sunucudan dosya okuyup / yazma

Grant_priv : Başka kullanıcılara yetki verme

Index_priv : Indeks yaratma, değiştirme, silme

Alter_priv : Tablo ya da veritabanının yapısını değiştirme

Show_db_priv : Veritabanı listeleme

Lock_tables_priv : Tablo kitleme

Max_questions : Bir saat içinde yapılabilecek enfazla sorgu sayısı

Max_updates : Bir saat içinde yapılabilecek en fazla güncelleme sorgusu sayısı

Max_connections : Bir saat içinde yapılabilecek en fazla bağlantı sayısı



MySQL'in kullanıcı tablolarında herhangi bir değişiklik yaptığınız zaman, değişikliklerin aktif hale gelebilmesi için FLUSH PRIVILEGES komutunu MySQL sunucusuna göndermeniz gerekir.
Dia | 15 Aralik 2006 16:32 | Yorum(0) | devamı »

Indeksler


İndeksler, belirli bir değeri olan satırları daha hızlı bulmak için kullanılırlar.


İndeks olmazsa, MySQL birinci kayıttan başlayarak, ilgili kayıtları bulana kadar tablonun sonuna kadar gitmek zorunda kalır. Indeksler sayesinde rasgele tarama yapılabilir.


İstenirse, kolonun tamamı değil sadece belirli bir kısmı da indekslenebilir.


Text/Blob tipi alanların tamamı değil sadece bir kısmı indekslenebilir.


Text/Blob alanların tamamını indekslemek için fulltext isimli özel bir indeks tipi kullanılabilir.


Bir tabloda en fazla 32 kolonda indeks oluşturulabilir.


Bir indeks birden fazla kolonu kapsayacak şekilde de yapılabilir. Bir indeks en fazla 15 kolonu kapsayabilir. Çoklu indeks, içerdiği kolonları kapsayan AND işlemleri sırasında kullanılır.


MySQL'in indeksi kullanması tablonun %30'undan fazlasına erişmesini gerektirecekse, o zaman MySQL var olmasına karşın indeksi kullanmamayı tercih edecektir. Çünkü böyle bir sorguda, sıralı arama yapmak büyük olasılıkla rasgele aramadan daha hızlı olacaktır.



Indekslerin Kullanıldığı Sorgular

WHERE ifadesine uyan satırları hızlıca bulmak


Belirli bir kolonun MAX() ve MIN() değerlerini bulmak


Sıralama ve gruplama işlemleri


Join işlemleri için diğer tablolardan satırları almak


Wildcard ile başlamayan LIKE ifadelerinde

Dia | 19 Kasim 2006 15:32 | Yorum(0) | devamı »

Auto_increment


Auto_increment özelliği, yeni satırlar için biricik bir değer oluşturmak için kullanılabilir.


Yeni satır girilirken auto_increment kolonuna herhangi bir değer girilmediği takdirde, kolonda bulunan en yüksek değerin bir fazlası otomatik olarak atanacaktır.


last_insert_id() SQL fonksiyonu ile, son girilen satıra otomatik olarak atanan değerin ne olduğu alınabilir.


Bir tabloda sadece bir kolon auto_increment özelliğine sahip olabilir.

Dia | 27 Ekim 2006 13:47 | Yorum(0) | devamı »
1 / daha eski »


Online Coders
  Online (0)
  Ziyaretçi (0)

Desteklediklerimiz

Teknoloji


MENÜ » FORUM
Menü » Takip et
RSS Facebook Twitter Friendfeed
Sık Kullanılanlar Google Yahoo Live
Menü » Paylaş
E-Posta ile gönder Twitter Facebook Friendfeed
Buzz Stumbleupon Delicious Digg