Rumah >pangkalan data >tutorial mysql >Mengapa mysqli_connect() Gagal dengan 'Kaedah Pengesahan Tidak Diketahui (Caching_sha2_password)'?

Mengapa mysqli_connect() Gagal dengan 'Kaedah Pengesahan Tidak Diketahui (Caching_sha2_password)'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 22:54:34984semak imbas

Why Does mysqli_connect() Fail with

mysqli_connect: Kaedah Pengesahan Tidak Diketahui (Caching_sha2_password)

Latar Belakang:

Apabila menggunakan MySQL's my () fungsi, ralat boleh timbul: "error: mysqli_connect(): Pelayan meminta kaedah pengesahan yang tidak diketahui oleh klien." Ini menunjukkan ketidakpadanan antara kaedah pengesahan yang digunakan oleh pelayan dan yang dilaksanakan oleh klien.

Secara khusus, jika pelayan MySQL ditetapkan untuk menggunakan kaedah pengesahan caching_sha2_kata laluan, ralat boleh berlaku apabila klien tidak menyokong atau tidak dikonfigurasikan untuk menggunakan kaedah itu.

Menyelesaikan masalah dan Penyelesaian:

Dalam kes yang diberikan, Pelayan MySQL dikonfigurasikan untuk menggunakan pengesahan caching_sha2_password, yang klien PHP tidak dilengkapi untuk mengendalikan. Untuk menyelesaikan isu ini, anda boleh:

1. Ubah suai Konfigurasi Pelayan MySQL:

Tukar tetapan default_authentication_plugin dalam fail ini MySQL (my.ini pada Windows, /etc/my.cnf pada Linux) daripada caching_sha2_password kepada mysql_native_password. Ini akan membolehkan pelayan menggunakan kaedah pengesahan yang lebih lama.

2. Kemas kini Pelanggan PHP:

Naik taraf klien PHP MySQL kepada versi yang menyokong pengesahan caching_sha2_password. Walau bagaimanapun, ini mungkin tidak perlu, kerana perubahan konfigurasi pelayan harus membetulkan isu tersebut.

3. Tetapkan Pengesahan Pengguna:

Jalankan arahan SQL berikut dalam MySQL:

ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Arahan ini akan mengubah kaedah pengesahan untuk pengguna yang ditentukan kepada mysql_native_password, membenarkan mereka menyambung walaupun tetapan cache_sha2_kata laluan pelayan.

Atas ialah kandungan terperinci Mengapa mysqli_connect() Gagal dengan 'Kaedah Pengesahan Tidak Diketahui (Caching_sha2_password)'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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