dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/mysql-1698-access-denied-root-localhost
MySQL
MySQL 5.7–8.4 LTSKimlik Doğrulama & Eklentiler
6 dk okuma
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

MySQL Error 1698 — Parola Doğru Değil, Hiç Sorulmuyor?

1698 hatasının nedeni auth_socket eklentisi, sudo mysql ile erişim, parola ile geçiş ve 1045'ten farkı.

İnceleyen:Principal Database Reliability Architect
Test Edilen Sürümler: MySQL 8.4 LTS, 8.0.40 & 5.7.44 (Debian / Ubuntu / Docker 29.7)

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 30 Ekim 2026
Test Edilen SürümlerMySQL 8.4 LTS & 8.0.40 (Ubuntu 24.04 LTS, Debian Bookworm) | Tarihsel: 5.7
Gerekli Yetkiİşletim sistemi sudo/root erişimi (sudo mysql çalıştırmak için)
Risk Seviyesi
Mediumroot kullanıcısına 'root'@'%' açmak veya --skip-grant-tables bayrağını açık bırakmak kritik güvenlik açığı yaratır
Beklenen Çıktıauth_socket plugin tespiti, caching_sha2_password veya sudo mysql geçişinin bilinçli yapılandırılması
Geri Dönüş (Rollback) Planı:ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '...' ve uygulama için ayrı kullanıcı açma
MySQL 8.4 Docs: Pluggable Socket Authentication (auth_socket)
İlk 60 Saniye Teşhis Protokolü:

Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.

▸Belirti

plaintext
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

SQLSTATE kodu: 28000.

Bu hata, Debian ve Ubuntu sistemlerinde taze bir MySQL kurulumunun ardından neredeyse kaçınılmaz bir ritüeldir: Terminalde mysql -u root -p yazarsınız, kurulumda belirlediğiniz veya boş bıraktığınız parolayı girersiniz ve anında ERROR 1698 ile karşılaşırsınız.

Sebep bir yetki eksikliği veya parolanın yanlış olması değildir: Kimlik doğrulama eklentisidir (Authentication Plugin).

ÖNEMLİ
`auth_socket` Mimarisi: Parolanız Hiç Kontrol Edilmiyor! Debian/Ubuntu Linux dağıtımlarında paketlenen MySQL, varsayılan olarak root@localhost hesabını `auth_socket` eklentisiyle kurar. Bu eklenti parolaları tamamen devre dışı bırakır; bunun yerine istemciyi çağıran Linux işletim sistemi kullanıcısına (UID) bakar. Yani işletim sisteminde root (veya sudo) değilseniz, doğru parolayı yazsanız bile MySQL sizi içeri almaz!

▸Error 1698 ile Error 1045 Arasındaki Fark

  • •Error 1045 (`Access denied for user ... Using password: YES`): Kimlik doğrulama mekanizması parolayı kontrol etti ve reddetti. Parola yanlıştır veya host eşleşmemiştir (H-03).
  • •Error 1698: Kimlik doğrulama mekanizması parolayı hiç değerlendirmedi. Parola sıfırlama adımları (--skip-grant-tables vb.) uygulamak tamamen zaman kaybıdır.

▸Nedenini Doğrulayan Adım

İşletim sistemi yetkisiyle içeri girin (çünkü auth_socket bunu bekler):

bash
sudo mysql

İçeri girdikten sonra root hesabının kimlik doğrulama eklentisini sorgulayın:

sql
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';

plugin sütununda auth_socket görüyorsanız teşhis doğrulanmıştır.


▸Adım Adım Kalıcı Çözüm

İhtiyacınıza göre iki ana mimari yaklaşımdan birini seçin:

Yaklaşım 1: Parolalı Girişe Geçiş (Geliştirme Ortamları İçin)

Eğer yerel geliştirme makinenizde phpMyAdmin, DBeaver, DataGrip veya Node.js/Python betikleriyle root olarak bağlanmak istiyorsanız:

sql
-- sudo mysql ile girdikten sonra: ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'GucluParola123!'; FLUSH PRIVILEGES;
UYARI
Eski blog yazılarında önerilen IDENTIFIED WITH mysql_native_password komutunu kullanmayın. Bu eklenti MySQL 8.0.34'te deprecated edilmiş, MySQL 9.0'da tamamen kaldırılmıştır. Yeni sistemlerde her zaman `caching_sha2_password` kullanın.

Yaklaşım 2: auth_socket Modelini Korumak (Üretim Sunucuları İçin)

Üretim ortamlarında root hesabını auth_socket ile bırakmak güçlü bir güvenlik tercihidir:

  • •Veritabanı root parolası çalınamaz (çünkü parola yoktur).
  • •Veritabanına yalnızca sunucuya SSH ile bağlanıp sudo yetkisi olan yetkili sistem yöneticileri erişebilir.
  • •Doğru Uygulama: Uygulamalarınız için asla root kullanmayın; uygulamanıza özel ayrı bir kullanıcı oluşturun:
sql
CREATE USER 'app_user'@'10.0.2.%' IDENTIFIED WITH caching_sha2_password BY 'UygulamaSifresi456!'; GRANT SELECT, INSERT, UPDATE, DELETE ON app.* TO 'app_user'@'10.0.2.%';

▸İlgili Hata Rehberleri & Hub Bağlantıları

Diğer Veritabanı Hata Teşhisleri

Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.

Tüm Hatalar (50)