giriiş
MySQL, açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir. Genellikle LAMP yığınının (Linux, Apache, MySQL ve PHP'yi temsil eder) bir parçası olarak kullanılır ve bu yazının yazıldığı tarih itibarıyla dünyanın en popüler açık kaynaklı veritabanıdır. Bu kılavuz, yeni bir MySQL kullanıcısının nasıl oluşturulacağını ve çeşitli eylemleri gerçekleştirmek için gerekli izinlerin nasıl verileceğini açıklayacaktır.
Ön koşullar
Bu kılavuzu takip etmek için bir MySQL veritabanına erişiminiz olması gerekir. Bu kılavuz, veritabanının Ubuntu 20.04 çalıştıran bir sanal özel sunucuya kurulu olduğunu varsayar; ancak açıklanan ilkeler, veritabanınıza nasıl eriştiğinizden bağımsız olarak geçerlidir. Bir MySQL veritabanına erişiminiz yoksa ve kendiniz kurmak istiyorsanız, MySQL kurulumuna ilişkin kılavuzlarımızdan birini takip edebilirsiniz. Yine, sunucunuzun işletim sistemi ne olursa olsun, yeni bir MySQL kullanıcısı oluşturma ve bu kullanıcıya izin verme prosedürleri genellikle aynı olacaktır.
Yeni bir kullanıcı oluştur
Kurulumdan sonra MySQL, veritabanınızı yönetmek için kullanabileceğiniz bir kök kullanıcı hesabı oluşturur. Bu kullanıcı, MySQL sunucusunda tam yetkilere sahiptir; yani her veritabanı, tablo, kullanıcı vb. üzerinde tam kontrole sahiptir. Bu nedenle, bu hesabı yönetimsel işlevler dışında kullanmaktan kaçınmak en iyisidir. Bu adım, MySQL kök kullanıcısıyla yeni bir kullanıcı hesabı oluşturmanın ve bu hesaba yetkiler vermenin nasıl yapılacağını açıklar.
MySQL 5.7 (ve üzeri) çalıştıran Ubuntu sistemlerinde, MySQL kök kullanıcısı varsayılan olarak parola yerine auth_socket eklentisi kullanılarak doğrulanır. Bu eklenti, MySQL istemcisini çağıran işletim sistemi kullanıcı adının, komutta belirtilen MySQL kullanıcı adıyla eşleşmesini gerektirir. Bu, MySQL kök kullanıcısına erişim sağlamak için MySQL komutunu Ubuntu kök kullanıcısının ayrıcalıklarıyla çağırmak üzere komuttan önce sudo kullanmanız gerektiği anlamına gelir:
sudo mysqlMySQL kök kullanıcınız parola kimlik doğrulaması için yapılandırılmışsa, MySQL kabuğuna erişmek için farklı bir komut kullanmanız gerekecektir. Aşağıdaki komut, MySQL istemcinizi normal kullanıcı ayrıcalıklarıyla çalıştıracak ve doğru parolayla kimlik doğrulaması yaparak veritabanında yönetici ayrıcalıkları elde edeceksiniz:
mysql -u root -pMySQL komut istemine eriştiğinizde, şu ifadeyle yeni bir kullanıcı oluşturabilirsiniz: KULLANICI OLUŞTUR Oluştur. Bunlar şu genel sözdizimini izler:
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';Sonrasında KULLANICI OLUŞTUR Bir kullanıcı adı belirtin. Hemen ardından bir @ işareti ve ardından bu kullanıcının bağlanacağı ana bilgisayar adı gelir. Bu kullanıcıya yalnızca Ubuntu sunucunuzdan yerel olarak erişmeyi planlıyorsanız, localhost belirtebilirsiniz. Kullanıcı adı ve ana bilgisayar adını tırnak işaretleri içine almak her zaman gerekli değildir, ancak bu, hataları önlemeye yardımcı olabilir.
Bir kullanıcı kimlik doğrulama eklentisi seçerken birkaç seçeneğiniz vardır. Eklenti yetkilendirme_soketi Daha önce de belirtildiği gibi, bu kullanışlı olabilir çünkü kimliği doğrulanmış kullanıcıların veritabanına erişmek için parola girmesini gerektirmeden güçlü bir güvenlik sağlar. Ancak aynı zamanda, harici uygulamaların MySQL ile etkileşime girmesi gerektiğinde işleri zorlaştırabilecek uzak bağlantıları da engeller.
Alternatif olarak, kullanıcının varsayılan MySQL eklentisi olan caching_sha2_password ile kimlik doğrulaması yapmasını sağlamak için sözdiziminin WITH authentication_plugin kısmını tamamen çıkarabilirsiniz. MySQL belgeleri, güçlü güvenlik özellikleri nedeniyle parola ile oturum açmak isteyen kullanıcılar için bu eklentiyi önermektedir.
caching_sha2_password ile kimlik doğrulaması yapan bir kullanıcı oluşturmak için aşağıdaki komutu çalıştırın. Sammy Tercih ettiğiniz kullanıcı adı ve parola için güçlü bir parola seçin:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
Bazı PHP sürümlerinde caching_sha2_password komutunun başarısız olmasına neden olan bilinen bir sorun bulunmaktadır. Bu veritabanını bir PHP uygulamasıyla (örneğin phpMyAdmin) kullanmayı planlıyorsanız, eski ancak yine de güvenli olan mysql_native_password uzantısıyla kimlik doğrulaması yapan bir kullanıcı oluşturmak isteyebilirsiniz:
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Emin değilseniz, her zaman caching_sha2_plugin ile kimlik doğrulaması yapan bir kullanıcı oluşturabilir ve ardından bunu şu komutla değiştirebilirsiniz:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Yeni kullanıcınızı oluşturduktan sonra, onlara uygun yetkileri verebilirsiniz.
Kullanıcı izinlerinin verilmesi
Kullanıcıya yetki vermenin genel komutu aşağıdaki gibidir:
GRANT PRIVILEGE ON database.table TO 'username'@'host';Bu örnek sözdizimindeki PRIVILEGE değeri, kullanıcının belirtilen veritabanı ve tabloda gerçekleştirmesine izin verilen eylemleri belirtir. Tek bir ifadede, her birini virgülle ayırarak bir kullanıcıya birden fazla ayrıcalık verebilirsiniz. Ayrıca, veritabanı ve tablo adı yerine yıldız işareti (*) girerek bir kullanıcıya genel ayrıcalıklar da verebilirsiniz. SQL'de yıldız işaretleri, "tüm" veritabanlarını veya tabloları temsil etmek için kullanılan özel karakterlerdir.
Örneğin, aşağıdaki komut kullanıcıya veritabanları, tablolar ve kullanıcılar oluşturma, değiştirme ve silme konusunda genel ayrıcalıklar sağlar; ayrıca sunucudaki herhangi bir tabloya veri ekleme, güncelleme ve silme yetkisi de verir. Ayrıca, kullanıcının verileri şu şekilde sorgulamasına da olanak tanır: SEÇME Anahtar kelimeyle yabancı anahtarları ara KAYNAKLAR Oluşturun ve çalıştırın sifonu çekmek puanlarla YENİDEN YÜKLE Ancak, kullanıcılara yalnızca ihtiyaç duydukları izinleri vermelisiniz; böylece kullanıcı ayrıcalıklarınızı gerektiği gibi ayarlayabilirsiniz.
Mevcut noktaların tam listesini şu adreste görebilirsiniz: Resmi MySQL belgeleri Bul onu.
Kullanıcınıza bu ayrıcalıkları vermek için Sammy'yi MySQL kullanıcı adınızla değiştirerek bu GRANT ifadesini çalıştırın:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION;Bu ifadenin WITH GRANT OPTION seçeneğini de içerdiğini unutmayın. Bu, MySQL kullanıcınızın sistemdeki diğer kullanıcılara sahip olduğu tüm izinleri vermesine olanak tanır.
Bazı kullanıcılar MySQL kullanıcılarına TÜM AYRICALIKLARI vermek isteyebilir; bu, onlara kök kullanıcı ayrıcalıklarına benzer geniş süper kullanıcı ayrıcalıkları verir, örneğin:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Bu kadar geniş ayrıcalıklar kolayca verilmemelidir, çünkü bu MySQL kullanıcısına erişimi olan herkes sunucudaki her veritabanı üzerinde tam kontrole sahip olacaktır.
Birçok kılavuz, yeni ayrıcalıkların uygulandığından emin olmak için FLUSH PRIVILEGES komutunun CREATE USER veya GRANT ifadesinden hemen sonra çalıştırılmasını önerir:
FLUSH PRIVILEGES;Ancak, buna göre Resmi MySQL belgeleriGrant tablolarını GRANT gibi bir hesap yönetim ifadesiyle dolaylı olarak değiştirdiğinizde, veritabanı grant tablolarını hemen belleğe yükler; bu da bizim durumumuzda FLUSH PRIVILEGES komutunun gerekli olmadığı anlamına gelir. Öte yandan, çalıştırılmasının sistem üzerinde herhangi bir olumsuz etkisi olmayacaktır.
Bir lisansı iptal etmeniz gerektiğinde, yapı onu vermeyle hemen hemen aynıdır:
REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';İzinleri iptal ederken sözdiziminin bunun yerine şunu gerektirdiğini unutmayın: İLEizinleri verirken kullandığınız, İTİBARENKullanmak.
Komutu çalıştırarak HİBELERİ GÖSTER Kullanıcının mevcut izinlerini kontrol edebilirsiniz:
SHOW GRANTS FOR 'username'@'host';Veritabanlarını kullanabileceğiniz gibi DÜŞÜRMEK Silebilirsiniz DÜŞÜRMEK Bir kullanıcıyı silmek için şunu kullanın:
DROP USER 'username'@'localhost';MySQL kullanıcısını oluşturup yetkilerini verdikten sonra MySQL'den çıkabilirsiniz:
exit
Gelecekte yeni MySQL kullanıcısı olarak giriş yapmak için aşağıdakine benzer bir komut kullanacaksınız:
mysql -u sammy -p-p, MySQL istemcisinin kimlik doğrulaması için MySQL kullanıcı parolasını sormasına neden olur.
Sonuç
Bu eğitimi takip ederek, MySQL veritabanında yeni kullanıcılar eklemeyi ve onlara çeşitli izinler vermeyi öğrendiniz. Buradan, MySQL kullanıcınız için farklı izin ayarlarını keşfetmeye ve denemeye devam edebilir veya daha üst düzey MySQL ayarlarından bazıları hakkında daha fazla bilgi edinmek isteyebilirsiniz.









