MySQL'de, bir kullanıcıya hangi izinlerin verildiği nasıl kontrol edilir? Kullanıcılara verilen izinler, genel düzey izinleri, veritabanı düzeyi izinleri, yüzey düzeyi izinleri, sütun düzeyi izinleri ve alt yordam düzeyi izinleri olarak bölünebilir. Göstermek için deneyleri kullanalım:
1. Küresel düzey
Global izinler, belirli bir sunucudaki tüm veritabanları için geçerlidir. Bu izinler mysql.user tablosunda saklanır. TÜMÜNÜ AÇIK *. * VER ve TÜMÜNÜ AÇIK *. * Sadece genel izinleri verir ve iptal eder.
2. Veritabanı düzeyi
Veritabanı izinleri, belirli bir veritabanındaki tüm hedefler için geçerlidir. Bu izinler mysql.db ve mysql.host tablolarında saklanır. Db_name. * ÜZERİNDEKİ TÜMÜNÜ VERİN ve db_name ÜZERİNDEKİ TÜMÜNÜ KALDIRIN. * Yalnızca veritabanı izinlerini verin ve iptal edin.
3. Yüzey seviyesi
Tablo izinleri, belirli bir tablodaki tüm sütunlara uygulanır. Bu izinler mysql.tables_priv tablosunda saklanır. Db_name.tbl_name ÜZERİNDE TÜMÜNÜ VERİN ve TÜMÜNÜ TÜMÜNÜ KALDIRIN db_name.tbl_name yalnızca tablo izinlerini verir ve iptal eder.
4. Sütun seviyesi
Sütun izinleri, belirli bir tablodaki tek bir sütun için geçerlidir. Bu izinler mysql.columns_priv tablosunda saklanır. REVOKE kullanırken, yetkili sütun ile aynı sütunu belirtmelisiniz.
5. Alt rutin seviyesi
RUTİN OLUŞTURMA, RUTİN DEĞİŞTİRME, YÜRÜT ve GRANT izinleri, depolanan alt rutinler için geçerlidir. Bu izinler genel düzey ve veritabanı düzeyine verilebilir. Ayrıca, CREATE ROUTINE'e ek olarak, bu izinler bir alt rutin seviyesi olarak verilebilir ve mysql.procs_priv tablosunda saklanabilir.
Bir test hesabı testi oluşturun ve genel düzeyde izinler verin. Aşağıdaki gibi:
mysql > global validate_password_policy = 0 olarak ayarlayın; mysql > seçim verin, test tarafından tanımlanan @ '%' test etmek için *. * ekleyin; mysql > floş ayrıcalıkları;Test etmek için verilen izinleri sorgulamak için aşağıdaki iki yolu kullanın. Aşağıdaki gibi:
mysql > test için hibeleri gösterin; mysql > mysql.user'dan * seçin, burada user = 'test' \ G;Bir test hesabı testi oluşturun ve veritabanı düzeyinde izinler verin. Aşağıdaki gibi:
mysql > bırak kullanıcı testi; mysql > jpcpdb'de seçme, ekleme, güncelleme, silme izni verin. * '%' test @ 123 'ile tanımlanan @'% '; mysql > mysql.user'den * seçin, burada user = 'test' \ G; - Yetki olmadığını görebilirsiniz. mysql > test için hibeleri gösterin; mysql > mysql.db'den * seçin, burada user = 'test' \ G;Bir test hesabı testi oluşturun ve tablo düzeyinde izinler verin. Aşağıdaki gibi:
mysql > bırak kullanıcı testi; mysql > floş ayrıcalıkları; mysql > jpcpdb.user üzerinde ,'test @ 123 'tarafından tanımlanan @'% 'testine ver; mysql > test için hibeleri gösterin; mysql > mysql.tables_priv \ G'den * seçin;Bir test hesabı testi oluşturun ve sütun düzeyinde izinler verin. Aşağıdaki gibi:
mysql > bırak kullanıcı testi; mysql > floş ayrıcalıkları; mysql > jpcpdb.user üzerinde'test @ 123 'ile tanımlanan @'% 'test etmek için select (id, ad) verin; mysql > floş ayrıcalıkları; mysql > mysql.columns_priv'den * seçin; mysql > test için hibeleri gösterin;Alt rutin düzeyinde izinler vermek için bir test hesabı testi oluşturun. Aşağıdaki gibi:
mysql > PRC_TEST VARSA BIRAKMA PROSEDÜRÜ; mysql > DELIMITER // mysql > PROSEDÜR OLUŞTURMA PRC_TEST () - > BAŞLA - > Kullanıcıdan * SEÇ; - > SON // mysql > DELIMITER; mysql > '%' test @ 123 'ile tanımlanan'% 'test etmek için jpcpdb.PRC_TEST prosedüründe yürütme izni verin; mysql > floş ayrıcalıkları; mysql > test için hibeleri gösterin; mysql > mysql.procs_priv'den * seçin; burada Kullanıcı = 'test';Kullanıcıya verilen izinleri görüntülemeniz gerekiyorsa, bu beş düzeyden verilen izinleri görüntülemeniz gerekir. Yukarıdan aşağıya veya küçükten yukarıya, her seviyeye verilen izinleri tek tek kontrol edin.
Daha fazla devop ve DBA içeriği daha sonra paylaşılacak ve ilgilenen arkadaşlar buna dikkat edebilir ~