Rehber MySQL Root Dışı Kullanıcı Oluşturma ve Yetkilendirme

r00ts

Hectopat
Katılım
11 Mart 2022
Mesajlar
334
Makaleler
1
Çözümler
3
Yer
Frankfurt
Daha fazla  
Cinsiyet
Erkek
MySQL Root Dışı Kullanıcı Oluşturma ve Yetkilendirme (Ek Rehber)





Ek Rehber: Root hesabını doğrudan kullanmak yerine her veritabanı için ayrı kullanıcı oluşturmak, hem güvenlik hem de yönetim açısından en doğru yöntemdir. Bu ek rehberde, MySQL üzerinde farklı kullanıcılar için yetkilendirme örnekleri yer almaktadır.


Bu bölüm, @TosunPASA ’nın önerisiyle hazırlanmıştır. Güvenli bağlantı ve iyi uygulama alışkanlıkları kazandırmak için eklendi. 😇




Neden Root Yerine Ayrı Kullanıcı?


Root hesabı tüm veritabanları üzerinde tam yetkiye sahiptir. Eğer bir web uygulaması root hesabıyla bağlanıyorsa, olası bir güvenlik açığında tüm sistem tehlikeye girebilir. Her veritabanı için sınırlı yetkili kullanıcılar tanımlamak, hem riski azaltır hem de yönetimi kolaylaştırır.





Yeni Veritabanı Oluşturma


SQL:
CREATE DATABASE DB1;
CREATE DATABASE DB2;





Kullanıcı Oluşturma


SQL:
CREATE USER 'Ali1'@'%' IDENTIFIED BY 'guclu_sifre1';
CREATE USER 'Ali2'@'%' IDENTIFIED BY 'guclu_sifre2';


@'%' ifadesi, tüm IP adreslerinden erişim izni verir.
Eğer sadece belirli bir IP'ye izin vermek istiyorsanız örnek:
SQL:
CREATE USER 'Ali1'@'192.168.1.50' IDENTIFIED BY 'guclu_sifre1';




Yetkileri Belirleme

Yetki AdıAçıklama / Ne işe yarar?
ALL PRIVILEGESTüm yetkileri verir (root seviyesine yakın).
SELECTTablo verilerini okuma izni.
INSERTTabloya yeni veri ekleme izni.
UPDATETablo içindeki verileri güncelleme izni.
DELETETablo içindeki verileri silme izni.
CREATEYeni veritabanı veya tablo oluşturma izni.
DROPVeritabanı veya tabloyu silme izni.
ALTERTablo yapısını değiştirme izni (örneğin sütun ekleme/silme).
INDEXTabloya index ekleme veya silme izni.
REFERENCESDış anahtar (foreign key) tanımlama izni.
CREATE TEMPORARY TABLESGeçici tablolar oluşturma izni.
LOCK TABLESTabloyu işlem sırasında kilitleme izni.
EXECUTESaklı prosedürleri (stored procedure) çalıştırma izni.
SHOW VIEWGörünümleri (view) görüntüleme izni.
CREATE VIEWYeni view (görünüm) oluşturma izni.
ALTER ROUTINEVar olan prosedürleri düzenleme izni.
CREATE ROUTINEYeni prosedür (stored routine) oluşturma izni.
EVENTZamanlanmış olay (event scheduler) oluşturma izni.
TRIGGERTablo tetikleyicilerini (trigger) oluşturma izni.
GRANT OPTIONBaşka kullanıcılara yetki verme izni. (Dikkatli kullanılmalı!)




Ali1, yalnızca DB1 veritabanındaki tabloları okuyabilsin:
SQL:
GRANT SELECT ON DB1.* TO 'Ali1'@'%';


Ali2, DB1 veritabanında tablo oluşturma, düzenleme ve veri değiştirme yetkilerine sahip olsun:
SQL:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT ON DB1.* TO 'Ali2'@'%';





Yetki Değişikliklerini Uygulamak


SQL:
FLUSH PRIVILEGES;





Kullanıcının Yetkilerini Görüntülemek


SQL:
SHOW GRANTS FOR 'Ali1'@'%';
SHOW GRANTS FOR 'Ali2'@'%';





Güvenlik Tavsiyeleri


  • Her veritabanı için farklı kullanıcı adı ve şifre belirle.
  • Uygulamalarda root erişimi kullanma, sadece yönetimsel işlemler için sakla.
  • Güçlü parolalar oluşturmak için şu komutu kullanabilirsin:
    Bash:
    openssl rand -base64 16



Sonuç

Bu yöntemle her veritabanına özel, sınırlandırılmış yetkilere sahip kullanıcılar oluşturmuş olursun.
Hem güvenlik açısından hem de proje yönetiminde büyük kolaylık sağlar.
 
Son düzenleme:
Beni kışkırtıyorsun resmen. 😁
Şimdi de MySQL'in default ayarlarını değiştirme konusu isteyeceğim. 😍

Örneğin: Varsayılan zaman dilimi - varsayılan tablo karakter seçimi (birbirine benzeyen sonuçlar verenler arasındaki kısaca farklar utf8-gen-ci, Latin5, turkish_ci vs.)

Konsoldan/phpmyadmin/Free Software ile dump/export almak, cron ile dump aldırmak... Cron listesi 🙃

Ben bunları AI'ler ortaya çıktıktan sonra unutmaya başladım. AI ile bu bilgileri sorarken millet MySQL'in versyonunu söylemesi kendileri açısından faydalı olur.

Geliştirilmesi durmuş ve ücretsiz olan MySQL Front uygulamasını arada kullanıyorum. Özellikle farklı verileri mevcut dB alanları ile eşleştirme açısından oldukça güzel.

Emeğine sağlık.
 
Beni kışkırtıyorsun resmen. 😁
Şimdi de MySQL'in default ayarlarını değiştirme konusu isteyeceğim. 😍

Örneğin: Varsayılan zaman dilimi - varsayılan tablo karakter seçimi (birbirine benzeyen sonuçlar verenler arasındaki kısaca farklar utf8-gen-ci, Latin5, turkish_ci vs.)

Konsoldan/phpmyadmin/Free software ile dump/export almak, cron ile dump aldırmak... Cron listesi 🙃

Ben bunları AI'ler ortaya çıktıktan sonra unutmaya başladım. AI ile bu bilgileri sorarken millet MySQL'in versyonunu söylemesi kendileri açısından faydalı olur.

Geliştirilmesi durmuş ve ücretsiz olan MySQL front uygulamasını arada kullanıyorum. Özellikle farklı verileri mevcut dB alanları ile eşleştirme açısından oldukça güzel.

Emeğine sağlık.

Tekrardan, ek rehber olarak paylaşıldı 😊 hayırlı geceler.
 

Technopat Haberler

Yeni konular

Geri
Yukarı