php mysqli_connect: Kaedah pengesahan tidak diketahui oleh pelanggan
P粉170858678
P粉170858678 2023-10-13 18:02:37
0
2
718

Saya menggunakan php mysqli_connect untuk log masuk ke pangkalan data MySQL (semua di localhost)

<?php
//DEFINE ('DB_USER', 'user2');
//DEFINE ('DB_PASSWORD', 'pass2');
DEFINE ('DB_USER', 'user1');
DEFINE ('DB_PASSWORD', 'pass1');
DEFINE ('DB_HOST', '127.0.0.1');
DEFINE ('DB_NAME', 'dbname');

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if(!$dbc){
    die('error connecting to database');    
}
?>

Ini ialah jadual mysql.user:

Pelayan MySQL ini fail:

[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password
#default_authentication_plugin=mysql_native_password

Menggunakan caching_sha2_password dalam fail Pelayan MySQL ini, adalah mustahil untuk log masuk dengan pengguna1 atau pengguna2

Ralat: mysqli_connect(): Pelayan meminta klien [caching_sha2_password] Kaedah pengesahan tidak diketahui...

Menggunakan mysql_native_password dalam fail Pelayan MySQL ini, anda boleh log masuk dengan pengguna1, tetapi ralat yang sama berlaku dengan pengguna2


Bagaimana untuk menggunakan caching_sha2_password log masuk pada pelayan mySql?

P粉170858678
P粉170858678

membalas semua(2)
P粉727416639

Saya menyelesaikan masalah ini melalui arahan SQL:

ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';

Dirujuk oleh https://dev.mysql. com/doc/refman/8.0/en/alter-user.html

Jika anda mencipta pengguna baharu

CREATE USER 'jeffrey'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Dirujuk oleh https://dev.mysql. com/doc/refman/8.0/en/create-user.html

Ini berkesan untuk saya

P粉225961749

Bermula dari PHP 7.4, ini bukan masalah lagi. mysqlnd menambah sokongan untuk kaedah pengesahan caching_sha2.


Pada masa ini, ciri pengesahan caching_sha2 baharu tidak disokong oleh sambungan PHP mysqli. Anda perlu menunggu sehingga mereka mengeluarkan kemas kini.

Lihat siaran berkaitan daripada pembangun MySQL: https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/

Mereka tidak menyebut PDO, mungkin anda perlu cuba menggunakan sambungan PDO.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan