MySQL Hatası 1698 Nasıl Çözülür: Ayrıntılı Kılavuz

Yayınlanan: 2024-03-28

MySQL veritabanına kök kullanıcı olarak erişmeyi denediniz mi ancak MySQL error 1698 (28000): 'root'@'localhost' kullanıcısı için erişim reddedildi hata mesajıyla mı karşılaştınız? Bu, MySQL ile çalışan kişiler için yaygın bir sorundur. Terminal, PHPMyAdmin veya MySQL istemci arayüzleri dahil olmak üzere çeşitli yollarla veritabanına erişimi engeller. Diğer işletim sistemlerinden (OS) daha yaygın olan bu hata, Ubuntu sistemi kullanıcıları için ortaya çıkar.

Bu ayrıntılı kılavuzda MySQL hatası 1698'in ana nedenlerini tartışacağız ve bu hatayı ele alıp çözmek için etkili çözümler sunacağız. Öyleyse, bu sorunu çözmeye başlayalım, ardından MySQL veritabanınıza hızlı bir şekilde yeniden erişebileceksiniz.

MySQL hatası 1698 nedir ve arkasındaki sebepler nelerdir?

MySQL hatası 1698'in arkasında, MySQL'in onu 'root' kullanıcı olarak kullanmaya çalışan birinin bunu yapmasına izin verilip verilmediğini nasıl kontrol ettiği sorunu vardır. Bazı işletim sistemlerinde MySQL 'root' kullanıcısı için normal bir şifre kullanmaz. MySQL kök hesabı bunu auth_socket veya unix_socket eklentisi aracılığıyla kontrol eder. Bu eklenti, parola yerine işletim sistemi kimlik bilgilerine dayalı olarak çalışır, kullanıcı bağlantı isteğinin bir UNIX soketi üzerinden gelip gelmediğini kontrol eder ve ardından kullanıcı adını sistemin kimlik bilgileriyle doğrular.

Temel olarak, eğer işletim sisteminizde 'root' kullanıcı olarak oturum açmadıysanız, MySQL, işletim sisteminize 'root' kullanıcı olarak erişmenize izin vermez. Bu yöntemin işleri daha güvenli ve kolay hale getireceği düşünülüyor ancak bu süreçte 1698 hatası ortaya çıkabiliyor.

Bu hata, güvenlik önlemleri ile kullanıcı beklentileri arasında bir çelişki olduğu için ortaya çıkıyor. Hatanın arkasındaki nedeni anlamak, 1698 hatasını düzeltmenin ve veritabanını hem güvenli hem de kullanımı kolay tutmanın yollarını bulmanın ilk adımıdır.

 > MySQL Hatası 1698 (28000)

MySQL hatası 1698 hakkında daha fazlasını öğrenerek, ana nedeninin geleneksel şifre kavramı değil, benzersiz bir kimlik doğrulama yöntemi olduğunu keşfediyoruz. Bu yöntem yukarıda değindiğimiz auth_socket veya unix_socket eklentisini içerir.

Aslında bu eklenti şifrelerle hiç ilgilenmiyor. Bunun yerine, bağlantının bir UNIX soketi aracılığıyla yapılıp yapılmadığını doğrular ve ardından bağlanmaya çalışan kullanıcı adının sistemde oturum açan kullanıcı adı ile eşleşip eşleşmediğini kontrol eder.

Kimlik doğrulamaya yönelik bu yaklaşım, parola tabanlı güvenlikten bir geçiştir. Eklentinin, bilgisayar sistemindeki kullanıcı bilgilerine dayanarak insanların içeri girmesine izin vermek için nasıl çalıştığını gösterir.

MySQL hatası 1698 nasıl çözülür?

Gelecekte MySQL hatası 1698'e karşı çalışacak ve etkili veritabanı etkileşimlerini sağlayacak çözümleri tartışalım.

Kullanıcıyı mysql_native_password eklentisine geçirin

' mysql_native_password ' eklentisine geçmek basit bir düzeltmedir. Bu yaklaşım, kök kullanıcı için kimlik doğrulama eklentisinin ' mysql_native_password' olarak güncellenmesi anlamına gelir . Kök kullanıcının eklenti ayarını değiştirmeli ve ardından bu değişiklikleri MySQL ayrıcalıklarını temizleyerek uygulamalısınız. Bu yöntem, erişim reddi sorununa anında çözüm olarak erişimi geri yükler.

  1. MySQL kabuğuna ayrıcalıklı bir kullanıcı olarak erişin.
  2. Kök kullanıcının kimlik doğrulama yöntemini ' mysql_native_password ' olarak değiştirmek için bu komutu kullanın:
 'Yeni_şifreniz' TARAFINDAN mysql_native_password İLE TANIMLANAN 'root'@'localhost' KULLANICISINI ALTER;

3. Değişiklikleri uygulamak için ayrıcalıkları temizleyin:

 FLUSH AYRICALIKLARI;

4. MySQL kabuğundan çıkın ve kök kullanıcı olarak tekrar oturum açmayı deneyin.

MySQL kullanıcı tablosuna sistem kullanıcısını ekleyin

MySQL kullanıcı tablosuna bir sistem kullanıcısı eklemek ve ` auth_socket` eklentisini etkinleştirmek güvenliği artırır. Bu yöntem, işletim sistemi düzeyinde kimlik doğrulamayı kullanarak, geleneksel parola kimlik doğrulamasından daha güvenli bir şekilde veritabanı erişimine izin verir. Bu yaklaşım, kök hesabın doğrudan veritabanı işlemleri için kullanılmasıyla ilişkili riski en aza indirir.

  1. MySQL sunucusunda kök kullanıcı veya yeterli ayrıcalıklara sahip başka bir kullanıcı olarak oturum açın.
  2. Yeni bir kullanıcı oluşturun ve kimlik doğrulamayı ` auth_socket` olarak ayarlayın :
 auth_socket İLE TANIMLANAN 'your_system_user'@'localhost' KULLANICISINI OLUŞTURUN;

3. Yeni kullanıcıya gerekli ayrıcalıkları verin:

 *.* ÜZERİNDEKİ TÜM AYRICALIKLARI 'your_system_user'@'localhost' İÇİN HİBE SEÇENEĞİ İLE VERİN;

4. Değişiklikleri uygulamak için ayrıcalıkları temizleyin:

 FLUSH AYRICALIKLARI;

5. Kimlik doğrulama için işletim sistemi kimlik bilgilerini kullanarak yeni sistem kullanıcısıyla MySQL'de oturum açın.

Unix_socket kimlik doğrulamasını devre dışı bırak

Hızlı bir geçici çözüm istiyorsanız, UNIX soket kimlik doğrulamasını devre dışı bırakmak, daha az güvenli olsa da anında bir çözüm sağlayabilir. Bu yöntem, kök kullanıcının kimlik doğrulama yönteminden UNIX soket eklentisini kaldırarak, kök kullanıcının standart şifre protokollerini kullanarak oturum açmasına olanak tanır. Bu, erişim sorununu çözse de, ilgili potansiyel güvenlik değiş tokuşlarını da göz önünde bulundurmalısınız.

  1. MySQL konsolunu açın.
  2. UNIX soket kimlik doğrulamasını devre dışı bırakmak için kök kullanıcıyı güncelleyin:
 GÜNCELLEME mysql.user SET eklentisi='' WHERE User='root';

3. Değişiklikleri kaydetmek için ayrıcalıkları temizleyin:

 FLUSH AYRICALIKLARI;

Artık kök kullanıcı, UNIX soket yöntemini atlayarak bir parola kullanarak kimlik doğrulaması yapabilir.

Çözüm

MySQL hatası 1698, veritabanınıza erişmeye çalışırken yolunuza çıkan bir blok gibidir. İster bu hatayla ilk kez karşılaşıyor olun ister gelecekte meydana gelmesini önlemek istiyor olun, bu hatanın ayrıntılarını anlamak çok önemlidir. MySQL 1698 hatasını çözmek için, özellikle Ubuntu sistemlerinde gözlemlenenler gibi işletim sistemi düzeyindeki güvenlik uygulamalarıyla kesiştiğinde, MySQL'in kimlik doğrulama mimarisini kapsamlı bir şekilde anlamanız gerekir.

Kök kullanıcıya erişimi reddeden MYSQL hatası 1698, MySQL içindeki kimlik doğrulama mekanizmalarının dikkatli bir şekilde yapılandırılmasını gerektirir.

Kimlik doğrulama eklentisini ' mysql_native_password ' olarak değiştirmekten, sistem kullanıcılarını ' auth_socket ' eklentisi ile MySQL'in kullanıcı tablosuna entegre etmeye veya UNIX_socket kimlik doğrulamasını tamamen devre dışı bırakmaya kadar uzanan kapsamlı çözüm yöntemlerini tartıştık . Her çözüm, farklı güvenlik duruşlarına ve yönetim tercihlerine uyacak şekilde tasarlanmış, hatayı atlamak için benzersiz bir yaklaşım sunar. Seçeceğiniz veri tabanı yönetim sisteminizi kullanırken sahip olmak istediğiniz güvenlik düzeyine bağlı olacaktır.