Video: MySQL: Understanding Security 2024
MySQL kurulduğunda, otomatik olarak mysql adlı bir veritabanı oluşturur. Verilerinizi korumak için kullanılan tüm bilgiler hesap adları, ana makine adları, parolalar ve ayrıcalıklar da dahil olmak üzere bu veritabanında saklanır.
Ayrıcalıklar sütunlarda saklanır. Her bir sütun adının biçimi, ayrıcalığı _priv olup, ayrıcalığı belirli bir hesap ayrıcalığıdır. Örneğin, ALTER ayrıcalıklarını içeren sütun, alter_priv olarak adlandırılır. Her ayrıcalık sütunundaki değer Y veya N, yani evet veya hayır demektir.
Yani, örneğin, kullanıcı tablosunda, bir hesap için bir satır ve alter_priv için bir sütun olurdu. Alter_priv için hesap alanı Y içeriyorsa, hesap ALTER deyimini yürütmek için kullanılabilir. Alter_priv N içeriyorsa, hesabın ALTER deyimini yürürlüğe koyma ayrıcalığı bulunmamaktadır.
mysql veritabanı ayrıcalıkları saklayan aşağıdaki tabloları içerir:
-
user table: Bu tablo, tüm veritabanları ve tablolar için geçerli olan ayrıcalıkları saklar. Her geçerli hesap için sütunların kullanıcı adını, ana makine adını ve şifresini içeren bir satır içerir. MySQL sunucusu, bu tabloda mevcut olmayan bir hesaba ait bir bağlantıyı reddeder.
-
db tablo: Bu tablo, belirli bir veritabanına uygulanan ayrıcalıkları saklar. Bir hesap adı ve bir ana makine adına ayrıcalık veren veritabanı için bir satır içerir. Verilecek ayrıcalıkların hesabı kullanıcı tablosunda bulunmalıdır. Kullanıcı tablosunda verilen ayrıcalıklar, bu tablodaki ayrıcalıkları geçersiz kılar.
Örneğin, kullanıcı tablosunda INSERT ayrıcalıkları veren hesap tasarımcısı için bir satır varsa tasarımcı tüm veritabanlarına ekleyebilir. Db tablosundaki bir satır PetCatalog veritabanındaki tasarımcı hesabı için INSERT için N değerini gösteriyorsa, kullanıcı tablosu onu geçersiz kılar ve tasarımcı PetCatalog veritabanına ekleyebilir.
-
konak tablo: Bu tablo, ana makineye bağlı olarak bir veritabanına erişimi denetler. Ana bilgisayar tablosu, db tablosuyla çalışır. Db tablosundaki bir satır, ana makine için boş bir alana sahipse, MySQL, ana makinenin tablosunda, db'nin orada bir satır olup olmadığını kontrol eder. Bu şekilde, bazı sunuculardan bir db'ye erişim izni verebilirsiniz ancak diğerlerinden erişemezsiniz.
Örneğin, iki veritabanınız olduğunu varsayalım: db1 ve db2. Db1 veritabanının hassas bilgileri vardır, bu nedenle yalnızca belirli kişilerin görmesini istersiniz. Db2 veritabanı, herkesin görmesini istediğiniz bilgileri içerir. Db tablosunda boş bir ana makine alanı olan db1 için bir satırınız varsa, ana makine tablosunda db1 için iki sıra olabilir.
Bir satır, belirli bir ana bilgisayardan bağlanan kullanıcılara tüm ayrıcalıkları verebilirken, başka bir satır, başka bir ana bilgisayardan bağlanan kullanıcılar için ayrıcalıkları reddedebilir.
-
tables_priv tablo: Bu tablo, belirli tablolar için geçerli ayrıcalıkları saklar.
-
columns_priv tablo: Bu tablo, belirli sütunlara uygulanan ayrıcalıkları saklar.
Gerekli ayrıcalıklara sahip bir hesap kullanıyorsanız mysql'deki tabloları doğrudan görebilir ve değiştirebilirsiniz. SELECT, INSERT ve UPDATE gibi SQL sorgularını kullanabilirsiniz. İşvereniniz, bir müşteriniz veya bir web barındırma şirketi aracılığıyla MySQL'e erişiyorsanız, muhtemelen gerekli ayrıcalıklara sahip bir hesabınız olmayacaktır.