Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Mengembalikan 'Akses Ditolak' Walaupun Dengan Kelayakan Yang Betul?

Mengapa MySQL Mengembalikan 'Akses Ditolak' Walaupun Dengan Kelayakan Yang Betul?

Linda Hamilton
Linda Hamiltonasal
2024-12-14 05:56:11961semak imbas

Why Does MySQL Return

MySQL ERROR 1045 (28000): Akses Ditolak untuk 'bil' Pengguna

Apabila cuba menyambung ke MySQL menggunakan 'bil' pengguna dengan kata laluan yang betul, mesej ralat "ERROR 1045 (28000): Akses ditolak untuk pengguna 'bill'@'localhost' (menggunakan kata laluan: YES)" muncul. Ralat ini ditemui walaupun 'bil' pengguna telah dibuat, diberikan semua keistimewaan dan dinyatakan dengan hos '%'.

Punca Masalah

Isu ini timbul daripada kemungkinan wujudnya pengguna tanpa nama dengan nama pengguna kosong dan hos ditetapkan kepada 'localhost' atau '127.0.0.1' dalam pengguna MySQL jadual.

Cara MySQL Menyelesaikan Pengesahan Pengguna

Apabila pelanggan cuba menyambung, MySQL menyemak jadual pengguna dan memilih baris pertama yang sepadan dengan nama hos dan pengguna pelanggan nama. Pemilihan diisih dengan nilai Hos yang paling spesifik dahulu, memberikan keutamaan nama hos literal dan alamat IP.

Dalam kes ini, pengguna tanpa nama dengan 'localhost' sebagai hosnya sepadan dengan percubaan sambungan lebih baik daripada pengguna ' bill'@'%', menyekat akses kepada 'bil'.

Disyorkan Penyelesaian

Penyelesaian yang disyorkan ialah menggugurkan pengguna tanpa nama, kerana ia boleh mewujudkan kelemahan keselamatan. Untuk berbuat demikian, laksanakan arahan berikut:

DROP USER ''@'localhost';

Pertimbangan Tambahan

  1. Menyambung Melalui Soket: Apabila mengesahkan melalui soket, adalah mungkin untuk gunakan 'bil'@'%' pengguna.
  2. Kesan Jenis Sambungan: Sambungan TCP atau sambungan soket tidak menjejaskan proses pengesahan, tetapi hanya pengguna tanpa nama boleh menyambung melalui soket.
  3. Kata Laluan Pengguna Tanpa Nama: Menyediakan kata laluan pengguna tanpa nama dalam rentetan sambungan membenarkan akses walaupun apabila menyatakan nama pengguna yang berbeza , disebabkan oleh peraturan pengisihan.

Atas ialah kandungan terperinci Mengapa MySQL Mengembalikan 'Akses Ditolak' Walaupun Dengan Kelayakan Yang Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn