Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Mengembalikan Ralat 1045: Akses Ditolak Walaupun dengan Bukti Kelayakan Yang Betul?

Mengapa MySQL Mengembalikan Ralat 1045: Akses Ditolak Walaupun dengan Bukti Kelayakan Yang Betul?

DDD
Lepaskan: 2024-12-17 04:28:25
asal
766 orang telah melayarinya

Why Does MySQL Return Error 1045: Access Denied Even with Correct Credentials?

MySQL Ralat 1045: Akses Ditolak untuk Pengguna 'bil'@'localhost' Walaupun Bukti Kelayakan Betul

Apabila cuba mengakses pangkalan data MySQL jauh melalui baris arahan, pengguna mungkin kadang-kadang menghadapi "Ralat 1045: Akses dinafikan untuk pengguna Mesej 'bill'@'localhost'", menunjukkan bahawa sambungan telah ditolak walaupun memberikan bukti kelayakan log masuk yang betul.

Penyiasatan:

Pengguna telah mencipta pengguna baharu dinamakan 'bil', memberikan pengguna semua keistimewaan yang diperlukan, dan kemudian keluar dari akaun pengguna akar. Walau bagaimanapun, percubaan berikutnya untuk log masuk sebagai 'bil' pengguna daripada mesin tempatan ('localhost') mengakibatkan ralat.

Punca Punca:

Selalunya, ini isu timbul kerana kehadiran pengguna tanpa nama (pengguna dengan nama pengguna kosong dan 'localhost' sebagai hos) dalam jadual 'mysql.user'. Apabila menyambung daripada 'localhost', pelayan mengutamakan akaun pengguna yang sepadan berdasarkan nama hos atau alamat IP yang paling spesifik.

Penyelesaian 1: Alih Keluar Pengguna Tanpa Nama

Untuk menyelesaikannya isu itu, alih keluar pengguna tanpa nama daripada 'mysql.user' jadual:

DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';
Salin selepas log masuk

Penyelesaian 2 (Untuk Versi MySQL >= 5.7):

Jika menggunakan MySQL versi 5.7 atau lebih baru, anda boleh melumpuhkan penggunaan tanpa nama akaun melalui 'skip_name_resolve' pembolehubah:

SET GLOBAL skip_name_resolve = ON;
Salin selepas log masuk

Pertimbangan Tambahan:

Sambungan Soket:

Dalam contoh yang disediakan, pengguna sedang menyambung melalui soket. Adalah penting untuk memastikan bahawa medan 'pengguna' dan 'kata laluan' ditentukan dengan betul, kerana mana-mana pengguna tanpa nama yang dikonfigurasikan dalam laluan log masuk berkemungkinan mengatasi kelayakan yang diberikan.

Sambungan TCP:

Apabila menyambung melalui TCP, bendera -h harus digunakan untuk menentukan nama hos atau alamat IP, berbanding dengan localhost:

mysql -u bill -p -hremote_hostname
Salin selepas log masuk

Nama Pengguna Kosong:

Sesetengah perpustakaan pelanggan tidak mengendalikan nama pengguna kosong dengan betul. Daripada '', simbol '@' hendaklah digunakan untuk menandakan pengguna tanpa nama:

mysql -u'@'localhost'-ppassword
Salin selepas log masuk

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan