Ralat ini berlaku apabila mencuba untuk mengakses pangkalan data daripada pengguna dan hos tertentu tetapi dinafikan kerana kelayakan yang tidak sah atau pengguna yang hilang keistimewaan.
1. Kewujudan Pengguna Pangkalan Data
Sahkan bahawa pengguna yang ditentukan ("test2") wujud dalam pangkalan data MySQL. Jalankan pertanyaan berikut:
SELECT user, host FROM mysql.user;
Cari baris di mana "pengguna" ialah "test2" dan "hos" ialah "host tempatan" atau kad bebas ("%"), seperti yang ditunjukkan dalam mesej ralat.
2. Pengesahan Kata Laluan
Jika pengguna pangkalan data wujud, semak sama ada kata laluan itu sepadan dengan kata laluan yang digunakan dalam permintaan sambungan. Tukar kata laluan jika perlu:
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('new_password');
1. Menyemak Kebenaran
Sahkan bahawa pengguna pangkalan data mempunyai keistimewaan yang mencukupi pada objek pangkalan data yang dikehendaki. Contohnya, untuk memberikan keistimewaan SELECT pada pangkalan data "pekerjaan":
GRANT SELECT ON jobs.* TO 'test2'@'localhost';
2. Keistimewaan Menyegarkan
Selepas mengubah suai jadual keistimewaan, laksanakan kenyataan FLUSH PRIVILEGES untuk menjadikan perubahan berkesan:
FLUSH PRIVILEGES;
1. Hos Tidak Padan
Pastikan hos yang dinyatakan dalam permintaan sambungan ("localhost") sepadan dengan hos yang dikaitkan dengan pengguna dalam pangkalan data. Tukar hos kepada "localhost" atau "%".
2. Menyekat Firewall
Lumpuhkan tembok api buat sementara waktu untuk menyemak sama ada ia menyekat akses kepada MySQL pada port yang ditentukan. Laraskan port dalam permintaan sambungan jika perlu.
3. Nama Pengguna atau Kata Laluan Salah
Semak dua kali nama pengguna dan kata laluan pangkalan data yang digunakan dalam permintaan sambungan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1045: Akses Ditolak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!