Rumah  >  Soal Jawab  >  teks badan

php mysqli_connect: Kaedah pengesahan tidak diketahui oleh pelanggan

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粉170858678P粉170858678393 hari yang lalu685

membalas semua(2)saya akan balas

  • P粉727416639

    P粉7274166392023-10-14 16:49:08

    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

    balas
    0
  • P粉225961749

    P粉2259617492023-10-14 15:47:19

    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.

    balas
    0
  • Batalbalas