Klien tidak mendukung protokol autentikasi yang diminta oleh server nodejs
Baru-baru ini saya sedang mengerjakan Node. aplikasi js. Dalam aplikasi saya, saya menghadapi masalah koneksi dengan server MySQL. Semuanya baik-baik saja, saya masih mendapatkan kesalahan berikut Show
Kesalahan. ER_NOT_SUPPORTED_AUTH_MODE. Klien tidak mendukung protokol autentikasi yang diminta oleh server; Pada artikel ini, saya akan menunjukkan kepada Anda mengapa kesalahan ini terjadi dan bagaimana cara mengatasi kesalahan ini Saat melalui Googling masalah ini, saya mengetahui bahwa MySQL 8. 0 menggunakan plugin otentikasi LarutanDalam situasi ini, Anda dapat mengubah kata sandi pengguna saat ini sesuai dengan plugin otentikasi Ubah kata sandi pengguna saat ini menjadi plugin otentikasiUntuk mengubah kata sandi pengguna saat ini menjadi plugin otentikasi 4 adalah nama pengguna dan 5 adalah kata sandi untuk pengguna tersebut
Jangan lupa untuk menyiram hak istimewa
Dan itu saja, logout ke baris perintah MySQL _Tambahkan pengguna baru dengan plugin autentikasi mysql_native_passwordUntuk membuat pengguna baru, login ke baris perintah MySQL dan jalankan perintah berikut dengan nama pengguna dan kata sandi
Anda mungkin perlu memberikan hak istimewa kepada pengguna baru. Jika Anda ingin memberikan semua hak istimewa, jalankan kueri berikut Saya mulai mengerjakan artikel ini setelah saya memecahkan masalah menghubungkan aplikasi ekspres saya ke server MySQL lokal saya. Saya mendapat pesan kesalahan di bawah ini pada upaya pertama saya untuk terhubung ke database MySql lokal
Versi MySQL dari 4. 1x ke atas menggunakan algoritme yang berbeda untuk mem-hash kata sandi dari sebelumnya 4. 1 versi. Jika klien Anda tidak menerapkan algoritme ini, kemungkinan Anda akan mendapatkan kesalahan ini saat mencoba terhubung LarutanAda dua opsi yang tersedia untuk Anda;
Ubah Kata Sandi Pengguna Saat IniDi shell MySQL Anda, ketikkan perintah di bawah ini dengan memasukkan nama pengguna Anda (root atau pengguna saat ini) sebagai pengganti pengguna, dan kata sandi. Jangan hapus tanda kutip
Setelah ini, Anda dapat menggunakan kata sandi baru untuk terhubung Buat Pengguna BaruJika Anda seperti saya dan tidak ingin memiliki dua pengguna dengan hak penuh, ini untuk Anda Kita mulai dengan membuat user baru di dalam shell MySQL
Selanjutnya, kami memberi pengguna beberapa hak istimewa Untuk hak istimewa penuh
Tanda bintang masing-masing mewakili database dan tabel yang boleh diakses oleh pengguna. Tinggalkan tanda bintang jika Anda ingin pengguna memiliki akses ke semua database dan tabel MySQL 8 telah mendukung metode autentikasi pluggable. Secara default, salah satunya bernama Sekarang, masalahnya adalah _0 di Node (paket yang Anda instal dengan 1 dan menggunakannya dalam kode Node Anda) belum mendukung metode autentikasi default baru MySQL 8 ini. Masalahnya ada di sini. https. //github. com/mysqljs/mysql/issues/1507 dan masih terbuka, setelah 3 tahun, per Juli 2019UPDATE Juni 2019. Ada PR baru di mysqljs sekarang untuk memperbaikinya UPDATE Februari 2020. Rupanya itu UPDATE Juli 2020. Tampaknya masih belum masuk (setidaknya pada April 2020), tetapi node-mysql2 mendukung permintaan sakelar Otentikasi. Beri komentar di bawah jika _2 berfungsi dengan baik untuk masalah ini -- saya akan mengujinya sendiri nantiPEMBARUAN April 2021. Sepertinya masalahnya masih ada dan baru 3 hari yang lalu, dan berhasil di sana -- belum resmi di mysql. paket js. Juga, sesuai komentar di bawah, sepertinya paket mysql2 berfungsi dengan baik dan mendukung Authentication-switch dengan benar Opsi 1) [TIDAK DIREKOMENDASIKAN] Turunkan versi "MySQL" untuk mengautentikasi menggunakan "mysql_native_password" lama yang baikItulah yang disarankan semua orang di sini (mis. g. jawaban teratas di atas). Anda baru saja masuk ke 4 baik-baik saja menggunakan metode mysql_native_password lama untuk otentikasi
Hal baiknya adalah, hidup akan menjadi sederhana dan Anda masih dapat menggunakan alat lama yang bagus seperti Sequel Pro tanpa masalah. Tetapi masalahnya adalah, Anda tidak memanfaatkan barang yang lebih aman (dan keren, baca di bawah) yang tersedia untuk Anda Opsi 2) [Meh. ] Ganti paket "Node" dengan MySQL Connecter X DevAPIMySQL X DevAPI for Node adalah pengganti paket Mysqljs Node, yang disediakan oleh http. //dev. mysql. com resmi guys Ini berfungsi seperti pesona yang mendukung otentikasi _7 untuk komunikasi Protokol X. )Hal buruknya adalah, Anda telah meninggalkan paket Hal baiknya adalah, aplikasi Anda sekarang lebih aman dan Anda dapat memanfaatkan banyak hal baru yang tidak disediakan oleh teman lama kita yang baik. Lihat saja tutorial X DevAPI dan Anda akan melihatnya memiliki banyak fitur seksi baru yang berguna. Anda hanya perlu membayar harga kurva pembelajaran, yang diharapkan hadir dengan peningkatan teknologi apa pun. . ) PS. Sayangnya, Paket XDevAPI ini belum memiliki definisi tipe (dapat dimengerti oleh TypeScript), jadi jika Anda menggunakan TypeScript, Anda akan mengalami masalah. Saya mencoba untuk menghasilkan. d. ts menggunakan 9 dan ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password' 0, tetapi tidak berhasil. Jadi ingatlah ituOpsi 3) [DISARANKAN] Ganti "mysql. js" dengan "mysql2.js". js" paketSeperti disebutkan di atas, paket mysql (tautan paket NPM) masih mengalami masalah ini (per April 2021). Tetapi paket mysql2 (tautan paket NPM) tidak. Jadi mungkin yang berikut ini harus menjadi jawaban satu kalimat _Harap diperhatikan bahwa Bagaimana cara memperbaiki metode otentikasi yang diminta server yang tidak diketahui klien?Untuk memperbaiki masalah ini, Anda perlu mengubah jenis plugin autentikasi MySQL . Untuk ini, Anda harus masuk ke prompt MySQL terlebih dahulu. Kemudian jalankan perintah di bawah ini untuk mengubah jenis plugin autentikasi pengguna;
Bagaimana saya mempertimbangkan untuk memutakhirkan klien MySQL?Langkah 2. Arahkan ke Perangkat Lunak> Peningkatan MySQL atau ketik "MySQL" di bilah pencarian. Anda juga dapat menemukannya di SQL Services > MySQL/MariaDB Upgrade. Langkah 3. Pilih versi MySQL yang ingin Anda tingkatkan dan klik Berikutnya. Sekarang ikuti langkah-langkah pemutakhiran, dan itu akan mengurus semuanya untuk Anda
Apakah node JS memungkinkan untuk berkomunikasi dengan MySQL?Setelah Anda memiliki MySQL dan berjalan di komputer Anda, Anda dapat mengaksesnya dengan menggunakan Node. js . Untuk mengakses database MySQL dengan Node. js, Anda memerlukan driver MySQL.
Apa itu kesalahan 1251 di phpmyadmin?Saat mencoba masuk dari jarak jauh ke server MySQL Anda jika Anda mendapatkan kesalahan ini. KESALAHAN 1251. Klien tidak mendukung protokol otentikasi yang diminta oleh server ; . 1 atau versi yang lebih lama di komputer Anda saat server MySQL Anda berada. |