MySQL Üzerinde Kullanıcı Hesabı Oluşturma

MySQL üzerinde birden fazla kullanıcı çalışıyorsa, her biri için ayrı kullanıcı hesapları tanımlamak ve gerekli yetkileri atamak gerekir. Bu yöntem, erişim kontrolünü düzenli hale getirirken veritabanı güvenliğini de güçlendirir.

Yeni Kullanıcı Oluşturma

Yeni bir kullanıcı eklemek için öncelikle root hesabıyla MySQL’e giriş yapılmalıdır. Root hesabı, sistemdeki en yüksek ayrıcalıklara sahip yönetici kullanıcısıdır.

mysql -u root -p

Komutu çalıştırdığınızda sistem sizden root şifresini ister. Şifre doğru girildiğinde MySQL komut satırı açılır ve kullanıcı oluşturma adımlarına geçilebilir.

Yeni kullanıcı eklemek için aşağıdaki SQL komutunu kullanabiliriz.

CREATE USER 'kullanici_adi'@'localhost' IDENTIFIED BY 'guclu_sifre';

Buradaki kullanici_adi, oluşturmak istediğimiz hesabın adını ifade eder.
localhost, kullanıcının yalnızca sunucuya yerel erişim üzerinden bağlanabileceğini belirtir.
guclu_sifre ise kullanıcı için belirlenen güvenli paroladır.

Eğer bu kullanıcıya uzaktan erişim izni tanımlamak istiyorsak, aşağıdaki komutu çalıştırabiliriz:

CREATE USER 'kullanici_adi'@'%' IDENTIFIED BY 'guclu_sifre';

MySQL ortamında kullanıcı oluşturma ve yetkilendirme adımları, MariaDB sistemlerinde de aynı şekilde uygulanır.

Mysql Kullanıcısına Yetki Vermek

Yeni kullanıcı oluşturulduktan sonra bu kullanıcıya hangi veritabanına erişeceğini ve hangi işlemleri yapabileceğini belirtmek gerekir.

Örneğin belirli bir veritabanına tam erişim yetkisi vermek için.

Sadece okuma (SELECT) yetkisi vermek istiyorsak.

Yetkilendirme işlemlerinin etkin olması için şu komut mutlaka çalıştırılmalıdır.

AyrıcalıkEylem
ALL PRIVILEGESKullanıcıya veritabanı üzerinde tam erişim yetkisi verir.
INSERTTablolara yeni satırlar ekleyelim.
DELETETablolardaki satırları silelim.
CREATEYeni tablolar veya veritabanları oluşturalım.
DROPTabloları ya da veritabanlarını tamamen kaldıralım.
SELECTTablolardaki verileri görüntüleyelim.
UPDATETablolarda yer alan satırları güncelleyelim.
GRANT OPTIONKullanıcıya diğer kullanıcılara da yetki verme izni tanımlayalım (genellikle root hesabı için ayrılır).

MySQL’de Kullanıcı İzinlerini Listeleme

MySQL kullanıcılarının hangi izinlere sahip olduğunu görmek için şu komutu çalıştırabiliriz:

SHOW GRANTS FOR 'kullanici_adi'@'localhost';

Bu sorgu, belirtilen kullanıcının tüm yetkilerini ayrıntılı olarak gösterir. Elde edilen liste sayesinde kullanıcıya tanımlanmış erişim haklarını ve işlem yetkilerini net biçimde görebiliriz.

Yetkileri Geri Alma veya Kullanıcıyı Silme

Bir kullanıcının belirli bir veritabanı üzerindeki yetkilerini iptal etmek için şu SQL komutu kullanılabilir:

REVOKE ALL PRIVILEGES ON veritabani_adi.* FROM 'kullanici_adi'@'localhost';

Bu komut, kullanıcının belirtilen veritabanı üzerindeki tüm erişim haklarını kaldırır. Kullanıcı sistemde kalır, ancak o veritabanına erişimi tamamen engellenir.

Kullanıcıyı tamamen kaldırmak için aşağıdaki komutu uygulayabiliriz:

DROP USER 'kullanici_adi'@'localhost';

Bu işlem, kullanıcı hesabını sistemden tamamen siler. Artık bu kullanıcıyla bağlantı kurulamaz ve tanımlı tüm izinler otomatik olarak kaldırılır.

Eğer SQLite gibi başka bir platformdan MySQL’e geçiş yaptıysanız, kullanıcıların yetkilerini yeniden düzenlemek sistem güvenliği için oldukça önemlidir.

Sıkça Sorulan Sorular

MySQL kullanıcı yetkilerini nasıl sıfırlayabilirim?

Yetkileri sıfırlamak için aşağıdaki komutu kullanabilirsiniz.

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'kullanici_adi'@'localhost';

Bu komut, kullanıcının tüm erişim izinlerini kaldırır ve MySQL’de yeniden tanımlama yapmanızı sağlar.

Yeni kullanıcı uzak bağlantı yapamıyor, neden?

MySQL yapılandırma dosyasında bind-address parametresi muhtemelen 127.0.0.1 olarak ayarlıdır. Bu değeri 0.0.0.0 olarak değiştirip MySQL servisini yeniden başlatarak tüm IP adreslerinden bağlantıya izin verebilirsiniz.

Bir kullanıcıyı hem yerel hem uzaktan erişim için tanımlayabilir miyim?

Bunun için aynı kullanıcı adıyla iki farklı hesap oluşturabilirsiniz:
biri localhost, diğeri % üzerinden tanımlanmalıdır. Böylece kullanıcı hem yerelden hem de uzaktan bağlanabilir.

FLUSH PRIVILEGES komutunu neden çalıştırmam gerekiyor?

Bu komut, yapılan yetki değişikliklerinin MySQL tarafından hemen uygulanmasını sağlar.
Aksi halde değişiklikler, MySQL servisi yeniden başlatılana kadar geçerli olmayabilir.

Kullanıcı oluştururken hata alıyorum, ne yapmalıyım?

Access denied hatası genellikle root yetkisi olmadan işlem yapmaya çalışıldığında görülür.
Root hesabı ile oturum açtığınızdan ve CREATE USER izninizin tanımlı olduğundan emin olunmalı.

Yorum yapın