Jika Anda mengupgrade server Anda ke MySQL 8.0 dan mengamati bahwa aplikasi Anda mengalami kesalahan terkait plugin caching_sha2_password, kemungkinan karena klien / konektor Anda belum (belum) mendukung plugin caching_sha2_password. Untuk mengatasi masalah ini, Anda dapat mempertimbangkan untuk menggunakan mysql_native_password sebagai otentikasi default untuk server MySQL 8.0. Tambahkan entri berikut di file konfigurasi MySQL.
[mysqld]
default-authentication-plugin=mysql_native_password
Dengan cara ini, setelah server dimulai ulang, aplikasi Anda yang ada seharusnya dapat terhubung ke server tanpa masalah apa pun.
Berikut adalah daftar konektor yang memiliki dukungan caching_sha2_password.
Pada saat menulis posting ini, konektor berikut tidak memiliki dukungan untuk caching_sha2_password.
Harap dicatat bahwa daftar ini tidak lengkap.
Beri tahu kami jika Anda masih mengalami masalah setelah peningkatan.
Namun, Anda harus secara aktif mempertimbangkan untuk beralih ke caching_sha2_password sebagai pilihan default untuk otentikasi (dan plugin otentikasi untuk akun pengguna Anda yang ada) karena memberikan keamanan yang lebih baik. Jadi, hubungi penyedia Connector Anda untuk pembaruan tentang dukungan untuk caching_sha2_password.
Versi yang lebih panjang!
MySQL 8.0 mendukung plugin otentikasi baru – caching_sha2_password . Plugin ini juga merupakan nilai default baru untuk variabel sistem –default-authentication-plugin yang mengatur dua hal:
- Plugin otentikasi digunakan oleh akun pengguna baru jika plugin tidak ditentukan secara eksplisit melalui pernyataan CREATE USER
- Muatan data otentikasi awal yang dihasilkan oleh server jika ada koneksi baru .
Ketika klien mencoba untuk membuat koneksi baru ke server MySQL, server meneruskan informasi tentang plugin otentikasi default ke klien.
Klien / Konektor seperti libmysqlclient tidak bergantung pada plugin otentikasi default server untuk mengirim data otentikasi awal. Mereka memiliki cara mereka sendiri untuk menentukan plugin otentikasi default. Ini dilakukan dengan memeriksa nilai MYSQL_DEFAULT_AUTH (Ini dapat diatur melalui mysql_options () dan memilih plugin otentikasi yang sesuai. Misalnya, dalam kasus 5.7 libmysqlclient, nilai default untuk MYSQL_DEFAULT_AUTH adalah mysql_native_password. Oleh karena itu, ketika 5.7 libmysqlclient digunakan untuk terhubung ke MySQL 8.0, akan selalu menggunakan mysql_native_password untuk mengirim data otentikasi pertama ke server. Ini terlepas dari nilai plugin otentikasi default server. Jadi, jika aplikasi Anda menggunakan klien / konektor seperti itu, Anda tidak akan menghadapi kesulitan apa pun ketika Anda meningkatkan dari MySQL 5.7 ke MySQL 8.0 untuk akun pengguna yang sudah ada.
Namun, ada klien / konektor yang menggunakan nilai otentikasi default server untuk menentukan format di mana data otentikasi akan dikirim ke server. Jika klien tersebut tidak memiliki dukungan untuk default baru – caching_sha2_password (DAN jika mereka tidak memiliki dukungan untuk menentukan plugin otentikasi yang akan digunakan terlepas dari nilai server), mereka cenderung gagal dengan kesalahan yang pada dasarnya mengatakan bahwa klien tidak mengetahui apa pun plugin bernama caching_sha2_password. Jika aplikasi Anda menggunakan klien / konektor seperti itu, mereka akan mengalami masalah saat menghubungkan ke server MySQL 8.0 setelah peningkatan. Dalam kasus seperti itu, kecuali jika klien / konektor mulai mendukung caching_sha2_password atau mengubah perilaku dan berhenti mengandalkan default server, mereka tidak dapat terhubung ke server MySQL 8.0 yang menggunakan caching_sha2_password sebagai default. Karenanya,
Default baru – caching_sha2_password memberikan keamanan yang lebih baik dan orang harus mempertimbangkan untuk menggunakannya untuk akun pengguna sedini mungkin. Berikut adalah daftar klien / konektor yang mendukung caching_sha2_password. Silahkan baca salah satu postingan sebelumnya tentang caching_sha2_password untuk lebih jelasnya.
Lihat juga catatan tentang caching_sha2_password di halaman dokumentasi kami tentang – Mengupgrade MySQL. Ini mencakup berbagai skenario dan memberikan informasi yang sangat berguna tentang menyelesaikan kemungkinan masalah.