Rumah > Soal Jawab > teks badan
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粉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
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.