MySQL’de Yeni Bir Kullanıcı Oluşturma ve İzinleri Ayarlama
MySQL, dünyanın en yaygın olarak dağıtılan ilişkisel veritabanı yönetim sistemlerinden biri olmaya devam etmektedir ve küçük kişisel projelerden kurumsal ölçekli uygulamalara kadar her şeyi güçlendirir. Bir geliştirici, sistem yöneticisi veya kendi altyapısını yöneten bir işletme sahibi olsanız da, MySQL kullanıcıları oluşturmayı ve izinlerini yapılandırmayı anlamak, güvenli ve iyi organize edilmiş bir veritabanı ortamını korumak için vazgeçilmez bir beceridir.
Zayıf kullanıcı yönetimi, veritabanı ihlallerinin önde gelen nedenlerinden biridir. Aşırı ayrıcalık verme, kimlik bilgilerini yeniden kullanma veya varsayılan hesapları etkin bırakma, tüm veri katmanınızı gereksiz riske maruz bırakabilir. Bu kılavuz, MySQL’e giriş yapmaktan izinleri doğrulamaya kadar tam süreci — açık komutlar, pratik örnekler ve her adımda güvenlik en iyi uygulamaları ile birlikte — size rehberlik eder.
MySQL Kullanıcı Yönetimi Neden Önemlidir
Komutlara dalmadan önce, bunun *neden* önemli olduğunu anlamaya değer. MySQL, en az ayrıcalık ilkesi üzerinde çalışır: her kullanıcı yalnızca gerçekten ihtiyaç duyduğu belirli veritabanlarına, tablolara ve işlemlere erişebilmelidir. Bu, tehlikeye atılan bir hesabın etki alanını en aza indirir ve denetimi çok daha kolay hale getirir.
MySQL’i yönetilen bir VPS Hosting planında veya Dedicated Server‘da çalıştırıyorsanız, MySQL örneğinize tam kök düzeyinde erişime sahipsiniz ve kullanıcı oluşturma ve izin yönetimi üzerinde tam kontrole sahipsiniz. cPanel ile VPS gibi birçok kontrol paneli ortamı, MySQL yönetimi için grafik bir arayüz sağlar ve burada açıklanan komut satırı yaklaşımını tamamlayabilir.
Ön Koşullar
Başlamadan önce, aşağıdakilere sahip olduğunuzdan emin olun:
- MySQL 5.7+ veya MySQL 8.0+ sunucunuzda yüklü ve çalışıyor
- Kök erişim veya
GRANT OPTIONayrıcalıklarına sahip bir MySQL süper kullanıcı hesabına erişim - Terminal erişimi (Linux/macOS) veya Komut İstemi / PowerShell (Windows)
Adım 1: MySQL’e Giriş Yapın
Kullanıcıları ve izinleri yönetmek için yeterli yönetim ayrıcalıklarına sahip bir kullanıcı olarak kimlik doğrulaması yapmalısınız. Çoğu durumda, bu root hesabıdır.
Terminal veya Komut İstemini Açın
- Linux / macOS: Terminal uygulamanızı açın
- Windows: Komut İstemini veya PowerShell’i açın
MySQL Sunucusuna Bağlanın
Aşağıdaki komutu çalıştırın:
mysql -u root -pKök parolasını girmeniz istenecektir. Başarılı kimlik doğrulamadan sonra, MySQL istemini göreceksiniz:
mysql>> Güvenlik ipucu: Uzak bir MySQL sunucusuna bağlanıyorsanız, ana bilgisayarı -h bayrağı ile belirtin:
> “`bash
> mysql -u root -p -h your_server_ip
> “`
Adım 2: Yeni Bir MySQL Kullanıcısı Oluşturun
MySQL kabuğunun içinde olduğunuzda, CREATE USER ifadesi ile yeni bir kullanıcı oluşturabilirsiniz.
Söz Dizimi
CREATE USER 'username'@'host' IDENTIFIED BY 'password';Parametre dökümü:
| Parametre | Açıklama |
|---|---|
username | Yeni kullanıcıya atamak istediğiniz ad |
host | Kullanıcının bağlanmasına izin verilen ana bilgisayar. Yalnızca yerel erişim için localhost kullanın veya herhangi bir ana bilgisayar için joker karakter olarak % kullanın |
password | Bu kullanıcı için güçlü, benzersiz bir parola |
Örnek: Herhangi Bir Ana Bilgisayardan Erişilebilir Bir Kullanıcı Oluşturun
CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';Örnek: Localhost ile Sınırlı Bir Kullanıcı Oluşturun
CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';> En iyi uygulama: Mümkün olan her yerde, kullanıcıları localhost veya belirli bir IP adresi ile sınırlayın, % kullanmaktan ziyade. Joker karakter ana bilgisayar erişimi, saldırı yüzeyinizi gereksiz yere artırır.
Kimlik Doğrulama Eklentileri Üzerine MySQL 8.0 Notu
MySQL 8.0, varsayılan kimlik doğrulama eklentisi olarak caching_sha2_password tanıttı ve bu, eski istemciler veya uygulamalarla uyumluluk sorunlarına neden olabilir. Gerekirse, kimlik doğrulama yöntemini açıkça ayarlayabilirsiniz:
CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';Adım 3: Kullanıcıya İzin Verin
Bir kullanıcı oluşturmak, otomatik olarak herhangi bir veritabanına erişim vermez. GRANT ifadesi kullanarak açıkça ayrıcalıklar atamanız gerekir.
Söz Dizimi
GRANT privileges ON database.table TO 'username'@'host';Parametre dökümü:
| Parametre | Açıklama |
|---|---|
privileges | İzinlerin virgülle ayrılmış listesi (örn. SELECT, INSERT, UPDATE, DELETE) veya ALL PRIVILEGES |
database.table | Hibe kapsamı. Tüm veritabanları ve tablolar için *.* kullanın, belirli bir veritabanındaki tüm tablolar için dbname.* kullanın veya tek bir tablo için dbname.tablename kullanın |
username@host | Hedef kullanıcı hesabı |
Yaygın MySQL Ayrıcalıkları
| Ayrıcalık | Açıklama |
|---|---|
SELECT | Tablolardan veri oku |
INSERT | Tablolara yeni satırlar ekle |
UPDATE | Mevcut satırları değiştir |
DELETE | Tablolardan satırları kaldır |
CREATE | Yeni veritabanları veya tabloları oluştur |
DROP | Veritabanlarını veya tabloları sil |
INDEX | Dizinler oluştur veya bırak |
ALTER | Tablo yapılarını değiştir |
ALL PRIVILEGES | Tam erişim (dikkatli kullanın) |
GRANT OPTION | Kullanıcının diğerlerine ayrıcalıklar vermesine izin ver |
Örnek: Belirli Bir Veritabanına Tam Erişim Verin
GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';Örnek: Salt Okunur Erişim Verin
GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';Örnek: Tek Bir Tabloya Belirli İzinler Verin
GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';Örnek: Genel Ayrıcalıklar Verin (Dikkatli Kullanın)
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;> Uyarı: ALL PRIVILEGES ON *.* vermek, bir kullanıcıya süper kullanıcı eşdeğeri erişim sağlar. Bunu yalnızca güvenilir yönetim hesapları için saklayın.
Adım 4: İzinleri Temizleyin
Kullanıcı izinlerinde değişiklik yaptıktan sonra, MySQL’in değişiklikleri hemen tanıması için ayrıcalık tablolarını yeniden yüklemek iyi bir uygulamadır:
FLUSH PRIVILEGES;> Not: Modern MySQL sürümlerinde (5.7.3+), FLUSH PRIVILEGES GRANT, REVOKE ve CREATE USER ifadelerinden sonra otomatik olarak tetiklenir. Ancak, mysql sistem tablolarında (INSERT veya UPDATE aracılığıyla) manuel düzenlemelerden sonra açıkça çalıştırmak gerekli olmaya devam eder.
Adım 5: Kullanıcı İzinlerini Doğrulayın
Bir kullanıcı hesabını üretime koymadan önce, ayarladığınız izinlerin doğru olduğunu her zaman doğrulayın.
Belirli Bir Kullanıcı İçin Hibeler Kontrol Edin
SHOW GRANTS FOR 'newuser'@'%';Örnek çıktı:
+--------------------------------------------------------------+
| Grants for newuser@% |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%` |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%` |
+--------------------------------------------------------------+Tüm MySQL Kullanıcılarını Listeleyin
SELECT user, host FROM mysql.user;Geçerli Kullanıcının Kendi Ayrıcalıklarını Kontrol Edin
SHOW GRANTS;Adım 6: İzinleri İptal Etme (Gerektiğinde)
İzinler zaman içinde değişir. Bir kullanıcı artık belirli erişime ihtiyaç duymadığında, REVOKE ifadesini kullanarak bunu hemen iptal edin:
Söz Dizimi
REVOKE privileges ON database.table FROM 'username'@'host';Örnek: Bir Kullanıcıdan Tüm Ayrıcalıkları İptal Edin
REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;Örnek: Belirli Bir Ayrıcalığı İptal Edin
REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';Adım 7: Bir Kullanıcıyı Silme (Gerektiğinde)
Bir kullanıcı hesabı artık gerekli değilse, gereksiz erişim vektörlerini ortadan kaldırmak için tamamen kaldırın:
DROP USER 'newuser'@'%';Bu komut, kullanıcı hesabını ve ilişkili tüm ayrıcalıkları tek bir işlemde kaldırır.
Barındırılan Ortamlarda MySQL Kullanıcı Yönetimi
MySQL’i paylaşılan veya yönetilen bir barındırma ortamında yönetiyorsanız, kontrol panelinize bağlı olarak işlem biraz farklı olabilir. cPanel, Plesk ve DirectAdmin gibi platformlar, SQL’i doğrudan yazmadan MySQL kullanıcıları oluşturmak ve izinler atamak için grafik arayüzler sağlar.
Adanmış bir sunucunun yükü olmadan tam komut satırı kontrolüne ihtiyaç duyan kullanıcılar için, VPS Hosting planları, performans, esneklik ve maliyet arasında ideal dengeyi sunar. Maksimum verim ve yalıtılmış kaynaklar gerektiren veritabanı yoğun uygulamalar çalıştırıyors
