Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat MySQL 1698 (Akses Ditolak) dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Saya Mendapat Ralat MySQL 1698 (Akses Ditolak) dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-12-25 13:12:12427semak imbas

Why Am I Getting MySQL Error 1698 (Access Denied) and How Can I Fix It?

Mengendalikan Ralat 1698 Semasa Log Masuk MySQL

Pengguna mungkin menghadapi ERROR 1698 (28000): Akses ditolak untuk 'root'@ pengguna 'localhost' apabila cuba log masuk ke pangkalan data MySQL dengan pengguna root. Ralat ini sering ditemui pada sistem seperti Ubuntu, di mana MySQL menggunakan pemalam Unix auth_socket untuk pengesahan secara lalai.

Latar Belakang: Pemalam auth_socket bergantung pada kelayakan pengguna sistem untuk pengesahan. Dengan menanyakan jadual mysql.user, anda boleh mengesahkan bahawa pengguna root berdaftar dengan pemalam ini:

SELECT User, Host, plugin FROM mysql.user;

Penyelesaian Kemungkinan:

Pilihan 1 : Konfigurasikan Pengguna root untuk Menggunakan Pemalam mysql_native_password
Kaedah ini melibatkan penetapan pengguna root untuk menggunakan pemalam mysql_native_password yang lebih tradisional:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
sudo service mysql restart

Pilihan 2: Cipta Pengguna Pangkalan Data Baharu (Disyorkan)
Pendekatan alternatif ialah mencipta pengguna pangkalan data baharu menggunakan nama pengguna sistem anda. Ini menyediakan pilihan yang lebih terurus dan selamat:

CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
FLUSH PRIVILEGES;
sudo service mysql restart

Perhatikan bahawa dengan Pilihan 2, anda akan menyambung ke MySQL menggunakan nama pengguna sistem anda:

mysql -u YOUR_SYSTEM_USER

Pertimbangan Tambahan:

  • Dalam MySQL versi 8.x.x, pemalam auth_socket mungkin telah digantikan dengan caching_sha2_password. Rujuk dokumentasi MySQL untuk pemalam pengesahan yang sesuai dan kaedah log masuk.
  • Dalam Debian 9 (Stretch), pemalam auth_socket dinamakan semula kepada unix_socket. Laraskan arahan SQL dengan sewajarnya.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL 1698 (Akses Ditolak) dan Bagaimana Saya Boleh Membetulkannya?. 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