Mesej ralat "SQLSTATE[HY000] [1045] Akses ditolak untuk 'nama pengguna'@'localhost pengguna '" menunjukkan bahawa pengguna yang ditentukan tidak mempunyai akses kepada pangkalan data. Ini boleh berlaku kerana pengguna tidak wujud, kata laluan tidak betul atau pengguna tidak mempunyai keistimewaan yang diperlukan.
Untuk menyemak sama ada pengguna wujud, laksanakan perkara berikut pertanyaan:
SELECT user, host FROM mysql.user
Cari baris dengan nama pengguna dan nama hos yang ditentukan, menunjukkan bahawa pengguna wujud.
Jika pengguna wujud, sahkan bahawa kata laluan itu betul dengan mengemas kininya:
SET PASSWORD FOR 'username'@'localhost' = PASSWORD('new_password')
Pengguna mungkin mempunyai keistimewaan yang tidak mencukupi untuk mengakses pangkalan data. Berikan keistimewaan yang diperlukan dengan arahan seperti:
GRANT SELECT ON database_name.* TO 'username'@'localhost'
Jika langkah di atas tidak menyelesaikan isu, semak tetapan tembok api untuk memastikan port pangkalan data (biasanya 3306) dibuka. Selain itu, sahkan nama hos pengguna dalam fail konfigurasi app.php. Nama hos hendaklah sepadan dengan lajur hos pengguna dalam jadual mysql.user.
Jika hos pengguna ditetapkan kepada %, ia sepadan dengan mana-mana hos. Ini boleh menyebabkan masalah jika nama hos dalam konfigurasi app.php tidak sepadan dengan nama hos pengguna. Tukar hos pengguna kepada localhost secara eksplisit.
Perubahan yang dibuat pada jadual keistimewaan MySQL memerlukan pernyataan FLUSH PRIVILEGES untuk berkuat kuasa, dilaksanakan oleh pengguna istimewa:
FLUSH PRIVILEGES
Atas ialah kandungan terperinci Mengapa Saya Mendapat \'Akses dinafikan untuk pengguna \'nama pengguna\'@\'localhost\'\' dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!