r00ts
Hectopat
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 PRIVILEGES | Tüm yetkileri verir (root seviyesine yakın). |
SELECT | Tablo verilerini okuma izni. |
INSERT | Tabloya yeni veri ekleme izni. |
UPDATE | Tablo içindeki verileri güncelleme izni. |
DELETE | Tablo içindeki verileri silme izni. |
CREATE | Yeni veritabanı veya tablo oluşturma izni. |
DROP | Veritabanı veya tabloyu silme izni. |
ALTER | Tablo yapısını değiştirme izni (örneğin sütun ekleme/silme). |
INDEX | Tabloya index ekleme veya silme izni. |
REFERENCES | Dış anahtar (foreign key) tanımlama izni. |
CREATE TEMPORARY TABLES | Geçici tablolar oluşturma izni. |
LOCK TABLES | Tabloyu işlem sırasında kilitleme izni. |
EXECUTE | Saklı prosedürleri (stored procedure) çalıştırma izni. |
SHOW VIEW | Görünümleri (view) görüntüleme izni. |
CREATE VIEW | Yeni view (görünüm) oluşturma izni. |
ALTER ROUTINE | Var olan prosedürleri düzenleme izni. |
CREATE ROUTINE | Yeni prosedür (stored routine) oluşturma izni. |
EVENT | Zamanlanmış olay (event scheduler) oluşturma izni. |
TRIGGER | Tablo tetikleyicilerini (trigger) oluşturma izni. |
GRANT OPTION | Baş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: