MySQL'de Yeni Kullanıcı Oluşturma ve İzin Verme


MySQL, verileri saklayan, düzenleyen ve kullanıcıların bu verilere erişmesine olanak tanıyan popüler ve yaygın olarak kullanılan bir veritabanı yönetim sistemidir. Kullanıcılara tablolara ve veritabanlarına belirli izinler veren çok çeşitli seçeneklerle birlikte gelir.

Bu kılavuzda, MySQL veritabanında nasıl yeni kullanıcı oluşturulacağını ve izinlerin nasıl verileceğini öğreneceksiniz.

MySQL'de Yeni Kullanıcı Nasıl Oluşturulur

Yeni bir kullanıcı oluşturmak için öncelikle MySQL kabuğuna giriş yapın.

sudo mysql -u root -p

Sudo şifresini ve ardından MySQL veritabanını ayarlarken sağlanan şifreyi girin ve ENTER'a basın. Daha sonra bu uyarıyı alacaksınız.

Yeni bir kullanıcı oluşturmak için aşağıda gösterilen sözdizimini kullanın:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Örneğin, veritabanında 'tecmint' adında yeni bir kullanıcı oluşturmak için şu komutu çağırın:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Akılda Tutulması Gereken Birkaç Nokta

Yerel olarak, yani MySQL'i kurduğunuz sisteme bir kullanıcı eklerken, kullanıcının IP adresi değil, ana bilgisayarı localhost olarak belirtilir. 'localhost' anahtar kelimesi 'bu bilgisayar' anlamına gelir ve MySQL bunu benzersiz şekilde ele alır. Temel olarak localhost, MySQL istemcisi tarafından yerel olarak kurulu MySQL veritabanı sunucusuna bağlantı kurmak için kullanılır.

Şu ana kadar tecmint kullanıcısının veritabanlarıyla etkileşim kurma izni yoktur. Aslına bakılırsa kullanıcı MySQL kabuğuna bile erişemiyor.

Kullanıcıya tablolar da dahil olmak üzere tüm veritabanlarına tam erişim vermek için çalıştırın.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

Yukarıdaki komutta yıldız işaretleri sırasıyla kullanıcının erişebileceği veritabanını ve tabloyu gösterir. Kullanıcıya veritabanındaki tüm hakları verir: okuma, yazma, düzenleme ve yürütme, tüm işlemleri gerçekleştirme dahil diğer veritabanları ve tablolardaki görevler de.

Şu ana kadar kullanıcıya veritabanına tam erişim izni verdik. Bu, MySQL kavramlarını açıklamak için kullanışlı olsa da, veritabanlarınız için güvenlik riski oluşturabileceğinden genellikle önerilmez. Bir bilgisayar korsanının kullanıcının şifresini ele geçirmesi durumunda neler olabileceğini bir düşünün. Daha da ilerleyeceğiz ve bir sonraki bölümde belirli izinlerin nasıl atanacağını tartışacağız.

Kullanıcıya izin atamayı tamamladığınızda, değişikliklerin etkili olması için tüm ayrıcalıkları gösterildiği gibi yeniden yükleyin.

MariaDB [none]> FLUSH PRIVILEGES

Farklı Kullanıcı İzinleri Nasıl Verilir?

Kullanıcılara verebileceğiniz olası izinlerin bir dökümü aşağıda verilmiştir:

  • TÜM AYRICALIKLAR – Daha önce de görüldüğü gibi, bu, MySQL kullanıcısına belirli bir veritabanına tam erişim hakkı verir.
  • CREATE – Kullanıcıların yeni veritabanları veya tablolar oluşturmasına olanak tanır.
  • DROP – Kullanıcıların veritabanlarını veya kullanıcıları silmesine olanak tanır.
  • INSERT – Kullanıcıların tablolara satır eklemesine olanak tanır.
  • SİL – Kullanıcıların tablolardan satırları silmesine olanak tanır.
  • SEÇ – 'SEÇ' izniyle kullanıcılar bir tablonun içeriğini okuyabilir.
  • GÜNCELLEME – Kullanıcıların bir tablodaki satırları güncellemesine olanak tanır.
  • HİBE SEÇENEĞİ – Kullanıcılar diğer kullanıcılara ayrıcalıklar verebilir veya ayrıcalıkları kaldırabilir.

Belirli bir kullanıcıya izin vermek için şu sözdizimini kullanın:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Ek olarak, bir veritabanındaki tüm tablolara, gösterildiği gibi tek bir yıldız işareti simgesiyle izinler atayabilirsiniz:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

Örneğin, testdb veritabanındaki tüm tablolarda 'tecmint' kullanıcısına SELECT izinleri atamak için komutu çalıştırın.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Daha sonra değişikliklerin etkili olması için ayrıcalıkları temizleyin.

MariaDB [none]> FLUSH PRIVILEGES;

Ek olarak, gösterildiği gibi virgülle ayırarak aynı anda birden fazla izin atayabilirsiniz.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

MySQL İzinleri Nasıl İptal Edilir

Bir kullanıcının izinlerini iptal etmek için şu sözdizimini kullanın:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Örneğin, 'tecmint' kullanıcısının INSERT izinlerini iptal etmek için komutu çalıştırın.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

Bir kullanıcının mevcut izinlerine göz atmak için şunu çalıştırın:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Aşağıdaki çıktıdan, INSERT izninin 'tecmint' kullanıcısından silindiğini, yalnızca SELECT ve UPDATE'in kaldığını görebiliriz testdb veritabanındaki haklara sahiptir.

Yeni kullanıcıyı kullanarak MySQL kabuğunda oturum açmayı test etmek için önce oturumu kapatın.

MariaDB [none]> quit;

Daha sonra tekrar giriş yapın.

sudo mysql -u tecmint -p

Kullanıcının şifresini girin ve kabuğa erişmek için ENTER'a basın.

Bir kullanıcıyı bırakmak için, tıpkı bir veritabanını silerken yaptığınız gibi DROP komutunu kullanın.

MariaDB [none]> DROP USER 'username'@'localhost';

Ayrıca MySQL ile ilgili aşağıdaki makaleleri de okumak isteyebilirsiniz:

  • MySQL'de Yaygın Hataları Gidermek İçin Yararlı İpuçları
  • Mytop – Linux'ta MySQL/MariaDB Performansını İzlemek için Yararlı Bir Araç
  • Linux'ta Varsayılan MySQL/MariaDB Bağlantı Noktası Nasıl Değiştirilir
  • Linux'ta MySQL veya MariaDB Kök Parolasını Sıfırlama
Çözüm

Umarım şimdiye kadar MySQL veritabanı sunucularınızda kullanıcılar oluşturabilir ve izinleri rahatça atayabilir veya iptal edebilirsiniz.