Rumah > pangkalan data > tutorial mysql > Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

PHP中文网
Lepaskan: 2024-12-13 15:53:22
ke hadapan
318 orang telah melayarinya

How to fix the SQLSTATE[HY000] [1524] Plugin mysql_native_password is not loaded errors caused in MySQL 8.4 no longer enabling the mysql_native_password plugin by default

Salah satu perubahan besar yang diperkenalkan dalam MySQL 8.4 (LTS terkini keluaran pada 2024) ialah pemalam "Kata Laluan Asli MySQL" ialah no lebih lama didayakan secara lalai. Selanjutnya, MySQL 9.0 mengalih keluar pemalam ini sepenuhnya.

Perubahan ini mempengaruhi PHP dan aplikasi lain yang menggunakan pangkalan data MySQL dengan pemalam pengesahan mysql_native_password. Oleh kerana pemalam mysql_native_password tidak lagi dimuatkan secara lalai atau tidak tersedia sama sekali, sambungan PHP PDO/MySQLi gagal.

Apabila cuba menyambung ke pangkalan data menggunakan pemalam mysql_native_password yang tidak lagi dimuatkan, PDO/MySQLi membuang ralat dikembalikan oleh MySQL:


PDO:

SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
Salin selepas log masuk
Salin selepas log masuk

MySQLi:

 mysqli_sql_exception  Plugin 'mysql_native_password' is not loaded.
Salin selepas log masuk

Pada MySQL 8.0.34 hingga 8.3, menggunakan pemalam mysql_native_password menghasilkan amaran log masuk ralat MySQL log:

[Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'
Salin selepas log masuk

MySQL 8.4 membuat perubahan untuk tidak memuatkan pemalam mysql_native_password lagi, yang mengakibatkan ralat yang ditunjukkan di atas. Pada MySQL 9.0, pemalam mysql_native_password dialih keluar sepenuhnya, yang juga mengakibatkan ralat yang sama.


PHP mempunyai sokongan untuk pengesahan caching_sha2_password sejak PHP 7.4. Untuk membetulkan ralat ini, tukar pemalam pengesahan pengguna MySQL kepada caching_sha2_password.

Senaraikan Pengguna MySQL menggunakan mysql_native_password

Pada konsol MySQL, jalankan yang berikut untuk menyenaraikan pengguna menggunakan pemalam pengesahan yang ditamatkan:

SELECT user, host, plugin from mysql.user WHERE plugin='mysql_native_password';
Salin selepas log masuk

Menjalankan arahan di atas harus menyenaraikan semua pengguna yang menggunakan mysql_native_password plugin:

MySQL 8.4 - users with mysql_native_password plugin

Kemas kini pengguna mysql_native_password kepada caching_sha2_password

Pada konsol MySQL dengan kebenaran yang mencukupi, jalankan arahan berikut pada setiap pengguna menggunakan mysql_native pemalam:

ALTER USER ''@'' IDENTIFIED WITH caching_sha2_password BY '';
Salin selepas log masuk

Selepas pemalam pengesahan dikemas kini, PHP dan aplikasi lain akan dapat menyambung ke pangkalan data melalui pemalam caching_sha2_password.

Dayakan semula Pemalam Kata Laluan Asli MySQL

Walaupun MySQL 8.4 tidak lagi mendayakan pemalam mysql_native_password secara lalai, ia masih boleh dilakukan untuk membolehkan pemalam ini. Ia tidak disyorkan untuk melakukannya melainkan aplikasi PHP menjalankan PHP 7.3 atau versi yang lebih lama, di mana ia tidak boleh menggunakan pemalam caching_sha2_password.

Untuk mendayakan pemalam mysql_native_password, tambahkan yang berikut pada bahagian [mysqld] dalam fail konfigurasi MySQL dan mulakan semula perkhidmatan pelayan MySQL.

Pada sistem berasaskan Debian/Ubuntu, fail ini terletak dalam direktori /etc/mysql/. Adalah disyorkan untuk mencipta fail baharu (bernama /etc/mysql/conf.d/enable-mysql-native-password.cnf, sebagai contoh) untuk ini.

SQLSTATE[HY000] [1524] Plugin 'mysql_native_password' is not loaded
Salin selepas log masuk
Salin selepas log masuk

Perhatikan bahawa pemalam mysql_native_password ialah dikeluarkan masuk MySQL 9.0, jadi menambah konfigurasi di atas tidak berfungsi dan boleh menyebabkan ralat konfigurasi kerana konfigurasi mysql_native_password tidak lagi sah pada MySQL 9.0.

Atas ialah kandungan terperinci Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.watch
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan