Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Yönetim

MySQL’de Yeni Bir Kullanıcı Oluşturma ve İzinleri Ayarlama

MySQL, dünya çapında en yaygın şekilde 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 desteklemektedir. Bir geliştirici, sistem yöneticisi veya kendi altyapınızı 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ıklar vermek, kimlik bilgilerini yeniden kullanmak veya varsayılan hesapları etkin bırakmak, 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 — net komutlar, pratik örnekler ve her adımda güvenlik en iyi uygulamaları ile — size yol gösterir.

MySQL Kullanıcı Yönetimi Neden Önemlidir

Komutlara dalmadan önce, *bunun neden önemli olduğunu* anlamak değerdir. MySQL bir 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şim sahibi olmalıdır. 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 bir Dedicated Server‘da çalıştırıyorsanız, MySQL örneğinize tam root düzeyinde erişime sahipsiniz ve bu da kullanıcı oluşturma ve izin yönetimi üzerinde tam kontrol sağlar. cPanel’li VPS gibi birçok kontrol paneli ortamı, MySQL yönetimi için grafik bir arayüz de sağlar ve bu, 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ışır durumda
  • Root erişimi veya GRANT OPTION ayrı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önetici ayrıcalıklarına sahip bir kullanıcı olarak kimlik doğrulaması yapmanız gerekir. Ç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 -p

Root 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, -h bayrağı ile ana bilgisayarı belirtin:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Adım 2: Yeni bir MySQL Kullanıcısı Oluşturun

MySQL shell’inin içinde olduğunuzda, CREATE USER ifadesiyle yeni bir kullanıcı oluşturabilirsiniz.

Söz Dizimi

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

Parametre açıklaması:

ParametreAçıklama
usernameYeni kullanıcıya atamak istediğiniz ad
hostKullanı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
passwordBu kullanıcı için güçlü, benzersiz bir parola

Örnek: Herhangi Bir Ana Bilgisayardan Erişilebilen 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 olduğunca kullanıcıları localhost veya belirli bir IP adresiyle sınırlayın ve % kullanmaktan kaçının. Joker karakter ana bilgisayar erişimi saldırı yüzeyinizi gereksiz yere artırır.

MySQL 8.0 Kimlik Doğrulama Eklentileri 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 İzinler Verin

Bir kullanıcı oluşturmak, otomatik olarak herhangi bir veritabanına erişim izni vermez. GRANT ifadesini kullanarak açıkça ayrıcalıklar atamanız gerekir.

Sözdizimi

GRANT privileges ON database.table TO 'username'@'host';

Parametre açıklaması:

ParametreAçıklama
privilegesİzinlerin virgülle ayrılmış listesi (örn. SELECT, INSERT, UPDATE, DELETE) veya ALL PRIVILEGES
database.tableVerme 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@hostHedef kullanıcı hesabı

Yaygın MySQL Ayrıcalıkları

AyrıcalıkAçıklama
SELECTTablolardan veri oku
INSERTTablolara yeni satırlar ekle
UPDATEMevcut satırları değiştir
DELETETablolardan satırları kaldır
CREATEYeni veritabanları veya tabloları oluştur
DROPVeritabanları veya tabloları sil
INDEXİndeksler oluştur veya sil
ALTERTablo yapılarını değiştir
ALL PRIVILEGESTam erişim (dikkatli kullanın)
GRANT OPTIONKullanıcının başkalarına ayrıcalık vermesine izin ver

Örnek: Belirli Bir Veritabanına Tam Erişim Ver

GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';

Örnek: Salt Okunur Erişim Ver

GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';

Örnek: Tek Bir Tabloda Belirli Ayrıcalıklar Ver

GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';

Örnek: Genel Ayrıcalıklar Ver (Nadiren 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önetici hesapları için saklayın.

Adım 4: Ayrıcalıkları Temizle

Kullanıcı izinlerinde değişiklik yaptıktan sonra, MySQL’in değişikliklerinizi 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 ifadeleri GRANT, REVOKE ve CREATE USER komutlarından sonra otomatik olarak tetiklenir. Ancak, mysql sistem tablolarında manuel düzenlemelerden sonra (INSERT veya UPDATE aracılığıyla) açıkça çalıştırmak hala gereklidir.

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 onaylayın.

Belirli Bir Kullanıcı İçin İzinleri 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;

Mevcut 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ının artık belirli erişime ihtiyacı olmadığında, REVOKE ifadesini kullanarak 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 Etme

REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;

Örnek: Belirli Bir Ayrıcalığı İptal Etme

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

Paylaşımlı veya yönetilen bir barındırma ortamında MySQL yönetiyorsanız, işlem kontrol panelinize bağlı olarak biraz farklılık gösterebilir. cPanel, Plesk ve DirectAdmin gibi platformlar, SQL 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 açısından ideal dengeyi sunar. Maksimum verim ve izole kaynaklar gerektiren veri tabanı yoğun uygulamalar çalıştırıyorsanız, garantili performans için Dedicated Server seçeneğine yükseltmeyi düşünün.

Daha küçük projeler veya geliştirme ortamları için, Shared Web Hosting planları tipik olarak phpMyAdmin erişimi içerir ve bu da MySQL kullanıcı ve veritabanı yönetimi için tarayıcı tabanlı bir arayüz sağlar.

Ayrıca, uygulamanız hassas kullanıcı verileri işliyorsa, veritabanı sunucunuzu geçerli bir SSL Certificate ile eşleştirmek, uygulamanız ile veritabanı sunucusu arasında iletilen verilerin şifreli kalmasını ve kesintiye uğramaktan korunmasını sağlar.

MySQL Kullanıcı Yönetimi için Güvenlik En İyi Uygulamaları

Teknik adımları takip etmek işin sadece yarısıdır. Her yöneticinin uygulaması gereken kritik güvenlik uygulamaları şunlardır:

  1. Uygulama bağlantıları için asla root hesabını kullanmayın. Her uygulama için özel, en az ayrıcalıklı kullanıcılar oluşturun.
  2. Her MySQL kullanıcısı için güçlü, benzersiz parolalar kullanın. Bir parola yöneticisi veya gizli dizi kasası düşünün.
  3. Host erişimini kısıtlayın localhost veya belirli IP adreslerine mümkün olduğunca.
  4. Kullanıcı hesaplarını düzenli olarak denetleyin. Artık etkin olmayan veya gerekli olmayan hesapları kaldırın.
  5. Joker karakter izinlerinden kaçının (*.*) idari görevler için kesinlikle gerekli olmadıkça.
  6. Üretim sunucularında MySQL’in denetim günlüğü eklentisini etkinleştirin tüm kullanıcı etkinliğini izlemek için.
  7. Parolaları düzenli olarak döndürün, özellikle personel değişiklikleri veya şüpheli uzlaşmalardan sonra.
  8. Ağ üzerinden bağlanırken MySQL bağlantıları için SSL/TLS kullanın, hatta özel bir LAN içinde bile.

Hızlı Referans: Temel MySQL Kullanıcı Yönetimi Komutları

GörevKomut
MySQL’e giriş yapmysql -u root -p
Yeni kullanıcı oluşturCREATE USER 'user'@'host' IDENTIFIED BY 'pass';
Veritabanında tüm ayrıcalıkları verGRANT ALL PRIVILEGES ON db.* TO 'user'@'host';
Salt okunur erişim verGRANT SELECT ON db.* TO 'user'@'host';
Ayrıcalıkları yenileFLUSH PRIVILEGES;
Kullanıcı yetkilerini gösterSHOW GRANTS FOR 'user'@'host';
Tüm kullanıcıları listeleSELECT user, host FROM mysql.user;
Ayrıcalıkları iptal etREVOKE privileges ON db.* FROM 'user'@'host';
Kullanıcıyı silDROP USER 'user'@'host';

Sonuç

Uygun MySQL kullanıcı yönetimi, veritabanı güvenliği ve operasyonel hijyenin temel taşıdır. Özel kullanıcı hesapları oluşturarak, her hesabın gerçekten ihtiyaç duyduğu izinleri atayarak ve kullanıcı listenizi düzenli olarak denetleyerek, yetkisiz erişim, veri sızıntısı ve ayrıcalık yükseltme riskini önemli ölçüde azaltırsınız.

Bu kılavuzda ele alınan komutlar — CREATE USER, GRANT, REVOKE, FLUSH PRIVILEGES, SHOW GRANTS ve DROP USER — her veritabanı yöneticisinin ihtiyaç duyduğu temel araç setini oluşturur. İster tek bir geliştirme veritabanını yönetiyor ister düzinelerce üretim örneğini denetliyor olun, bu uygulamaları tutarlı bir şekilde uygulamak MySQL ortamınızı güvenli, bakımı yapılabilir ve uyumlu tutacaktır.

Bu en iyi uygulamaları uygulamak için gereken tam kontrolü sağlayan bir barındırma ortamı için AlexHost’un çözüm yelpazesini keşfedin — basit projeler için Paylaşımlı Web Barındırma‘dan çıplak metal yönetiminin karmaşıklığı olmadan güç ve esnekliğe ihtiyaç duyan takımlar için tam yönetilen VPS Kontrol Panelleri‘ne kadar.