HATA 1698 (28000): Kullanıcı 'root'@'localhost' için erişim reddedildi;
Yeni bir sunucu kuruyorum ve bu sorunla karşılaşmaya devam ediyorum.
MySQL veritabanına root kullanıcısı ile giriş yapmaya çalıştığımda hata alıyorum:
ERROR 1698 (28000): Kullanıcı 'root'@'localhost' için erişim reddedildi;
Terminal (SSH), PHPMyAdmin veya Navicat gibi bir MySQL İstemcisi aracılığıyla bağlanmam fark etmiyor. Hepsi başarısız oluyor.
mysql.user tablosuna baktım ve aşağıdakileri elde ettim:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Gördüğünüz gibi, root erişimine sahip olmalıdır.
Bir süredir bu sorunu gidermeye çalıştığım için Sunucu oldukça basit...
Apache, MySQL ve PHP ile Ubuntu 16.04.1 LTS çalıştırıyor, böylece web sitelerini barındırabilir ve iRedMail 0.9.5-1, böylece posta barındırabilir.
iRedMail'i yüklemeden önce MySQL veritabanına giriş yapmak sorunsuz çalışıyor. Ayrıca, sadece iRedMail'i yüklemeyi denedim, ancak daha sonra root da çalışmıyor ...
Birisi bana MySQL giriş sorunumu nasıl çözeceğimi veya mevcut bir MySQL kurulumunun üzerine iRedMail'i nasıl kuracağımı söyleyebilirse. Ve evet Kurulum İpuçları'i denedim ve yapılandırma dosyalarında bu değişkenleri bulamıyorum.
Ubuntu gibi bazı sistemlerde mysql varsayılan olarak UNIX auth_socket plugin kullanmaktadır.
Temel olarak şu anlama gelir: Bunu kullanan db_kullanıcıları, sistem kullanıcısı credentias tarafından "auth" olacaktır. `root' kullanıcınızın bu şekilde ayarlanıp ayarlanmadığını aşağıdakileri yaparak görebilirsiniz:
Sorguda görebileceğiniz gibi,
root
kullanıcısıauth_socket
eklentisini kullanıyorBunu çözmenin iki yolu vardır:
mysql_native_password
eklentisini kullanacak şekilde ayarlayabilirsinizile yeni bir
db_kullanıcısı` oluşturabilirsiniz (önerilir)Seçenek 1: __
Seçenek 2:__ (YOUR_SYSTEM_USER yerine sahip olduğunuz kullanıcı adını yazın)
Eğer 2. seçeneği kullanırsanız mysql'e sistem kullanıcı adınızla bağlanmanız gerekeceğini unutmayın (
mysql -u YOUR_SYSTEM_USER
)Not: Bazı sistemlerde (örneğin Debian stretch) 'auth_socket' eklentisi 'unix_socket' olarak adlandırılır, bu nedenle ilgili SQL komutu şöyle olmalıdır:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Güncelleme: andy'nin yorumuna göre mysql 8.x.x,
caching_sha2_password
içinauth_socket
i güncelledi/değiştirdi Bunu test etmek için mysql 8.x.x ile kurulmuş bir sistemim yok, ancak yukarıdaki adımlar sorunu anlamanıza yardımcı olacaktır. İşte cevap:MySQL 8.0.4'ten itibaren yapılan bir değişiklik, yeni varsayılan kimlik doğrulama eklentisinin 'caching_sha2_password' olmasıdır. Yeni 'YOUR_SYSTEM_USER' bu auth eklentisine sahip olacaktır ve artık bash kabuğundan "mysql -u YOUR_SYSTEM_USER -p" ile giriş yapabilir ve istemde bu kullanıcı için parola girebilirsiniz. UPDATE user SET plugin" adımına gerek yoktur. 8.0.4 varsayılan auth eklentisi güncellemesi için bkz. https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
Mysql bağlantısını kaldırmanızı öneririm -
UPDATE-Bu Mysql 5.5 sürümü içindir, sürümünüz farklıysa, lütfen ilk satırı buna göre değiştirin
Ve Tekrar Yükleyin Ancak bu sefer kendiniz bir root şifresi belirleyin. Bu çok fazla çaba harcamanızı önleyecektir.
MySQL'e root kullanıcısı ile erişmek istiyorsunuz ancak root'a doğru şifreyi vermiyorsunuz.
root** için yeni bir parola belirlemeniz gerekiyorsa, MySQL'in sitesinde bunun nasıl yapılacağına dair harika belgeler bulunmaktadır: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
İşlemi burada göstermeyeceğim çünkü MySql belgeleri yukarıdaki bağlantıda açık ve nettir.