Cara menyelesaikan kesalahan mysql 1698: panduan terperinci

Sudahkah Anda mencoba mengakses database MySQL sebagai pengguna root tetapi menabrak pesan kesalahan MySQL Error 1698 (28000): Akses ditolak untuk pengguna 'root'@'localhost'? Ini adalah masalah umum bagi orang yang bekerja dengan MySQL. Ini mencegah akses ke database melalui berbagai cara, termasuk terminal, phpMyadmin, atau antarmuka klien MySQL. Lebih umum daripada dengan sistem operasi lainnya (OS), kesalahan ini muncul untuk pengguna sistem Ubuntu.

Dalam panduan terperinci ini, kita akan membahas penyebab utama kesalahan MySQL 1698 dan memberikan solusi yang efektif untuk mengatasi dan menyelesaikan kesalahan ini. Jadi, mari kita mulai menyelesaikan masalah ini setelah itu Anda akan mendapatkan kembali akses cepat ke database MySQL Anda.

Apa kesalahan MySQL 1698 dan alasan di baliknya?

Di balik kesalahan MySQL 1698 adalah masalah bagaimana MySQL memeriksa jika seseorang mencoba menggunakannya karena pengguna 'root' diizinkan untuk melakukannya. Dengan beberapa sistem operasi, MySQL tidak menggunakan kata sandi biasa untuk pengguna 'root'. Akun MySQL Root memeriksanya melalui plugin AUTH_SOCKET atau UNIX_SOCKET. Plugin ini beroperasi berdasarkan kredensial sistem operasi daripada kata sandi, memeriksa apakah permintaan koneksi pengguna datang melalui soket UNIX dan kemudian memvalidasi nama pengguna terhadap kredensial sistem.

Pada dasarnya, jika Anda tidak masuk ke OS Anda sebagai pengguna 'root', MySQL tidak akan membiarkan Anda mengaksesnya sebagai pengguna 'root'. Metode ini seharusnya membuat hal -hal lebih aman dan lebih mudah, tetapi dalam proses itu, kesalahan 1698 mungkin muncul.

Kesalahan ini muncul karena ada konflik antara langkah -langkah keamanan dan harapan pengguna. Memahami alasan di balik kesalahan adalah langkah pertama dalam memperbaiki kesalahan 1698 dan menemukan cara untuk menjaga database tetap aman dan mudah digunakan.

> MySQL Error 1698 (28000)

Mempelajari lebih banyak tentang kesalahan MySQL 1698, kami menemukan bahwa penyebab utamanya bukanlah konsep kata sandi tradisional tetapi metode otentikasi yang unik. Metode ini melibatkan plugin AUTH_SOCKET atau UNIX_SOCKET, yang kami sentuh di atas.

Pada dasarnya, plugin ini tidak peduli dengan kata sandi sama sekali. Sebagai gantinya, itu memverifikasi apakah koneksi dibuat melalui soket UNIX dan kemudian memeriksa apakah nama pengguna yang mencoba menghubungkan cocok dengan yang masuk ke dalam sistem.

Pendekatan otentikasi ini adalah pergeseran dari keamanan berbasis kata sandi. Ini menunjukkan bagaimana plugin bekerja untuk membiarkan orang masuk berdasarkan informasi pengguna dari sistem komputer.

Bagaimana cara menyelesaikan kesalahan mysql 1698?

Mari kita bahas solusi yang akan bekerja melawan MySQL Error 1698 dan memastikan interaksi basis data yang efektif di masa depan.

Beralih pengguna ke plugin mysql_native_password

Beralih ke `mysql_native_password`Plugin adalah perbaikan sederhana. Pendekatan ini berarti memperbarui plugin otentikasi untuk pengguna root ke `mysql_native_password`. Anda harus memodifikasi pengaturan plugin pengguna root dan kemudian menerapkan perubahan ini dengan menyiram hak istimewa MySQL. Metode ini mengembalikan akses sebagai resolusi langsung untuk masalah penolakan akses.

  1. Akses shell mysql sebagai pengguna istimewa.
  2. Gunakan perintah ini untuk beralih metode otentikasi pengguna root ke `mysql_native_password`:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

3. Hak istimewa flush untuk menerapkan perubahan:

FLUSH PRIVILEGES;

4. Keluar dari shell mysql dan cobalah masuk sebagai pengguna root lagi.

Tambahkan Pengguna Sistem ke Tabel Pengguna MySQL

Menambahkan pengguna sistem ke tabel pengguna MySQL dan mengaktifkan `AUTH_SOCKET`Plugin meningkatkan keamanan. Metode ini memanfaatkan otentikasi tingkat OS, memungkinkan akses basis data dengan cara yang lebih aman daripada otentikasi kata sandi tradisional. Pendekatan ini meminimalkan risiko yang terkait dengan menggunakan akun root secara langsung untuk operasi basis data.

  1. Masuk ke server MySQL sebagai pengguna root atau pengguna lain dengan hak istimewa yang cukup.
  2. Buat pengguna baru dan atur otentikasi ke `AUTH_SOCKET`:
CREATE USER 'your_system_user'@'localhost' IDENTIFIED WITH auth_socket;

3. Berikan hak istimewa yang diperlukan kepada pengguna baru:

GRANT ALL PRIVILEGES ON *.* TO 'your_system_user'@'localhost' WITH GRANT OPTION;

4. Hak istimewa flush untuk menerapkan perubahan:

FLUSH PRIVILEGES;

5. Masuk ke MySQL dengan pengguna sistem baru, menggunakan kredensial OS untuk otentikasi.

Nonaktifkan otentikasi UNIX_SOCKET

Jika Anda menginginkan solusi cepat, menonaktifkan otentikasi soket UNIX dapat memberikan solusi langsung, meskipun kurang aman. Metode ini memungkinkan pengguna root untuk masuk menggunakan protokol kata sandi standar dengan menghapus plugin soket UNIX dari metode otentikasi pengguna root. Meskipun ini menyelesaikan masalah akses, Anda harus mempertimbangkan potensi trade-off keamanan yang terlibat.

  1. Buka konsol MySQL.
  2. Perbarui pengguna root untuk menonaktifkan otentikasi soket unix:
UPDATE mysql.user SET plugin='' WHERE User="root";

3. Hak istimewa flush untuk menyimpan perubahan:

FLUSH PRIVILEGES;

Sekarang pengguna root dapat mengotentikasi menggunakan kata sandi, melewati metode Socket UNIX.

Kesimpulan

MySQL ERROR 1698 seperti blok di jalan saat mencoba mengakses database Anda. Apakah Anda mengalami kesalahan ini untuk pertama kalinya atau berusaha mencegah kejadian di masa depan, memahami spesifik kesalahan ini sangat penting. Untuk menyelesaikan kesalahan MySQL 1698, Anda memerlukan pemahaman menyeluruh tentang arsitektur otentikasi MySQL, terutama ketika itu berpotongan dengan praktik keamanan tingkat sistem operasi, seperti yang diamati dalam sistem Ubuntu.

Kesalahan MySQL 1698, yang menyangkal akses ke pengguna root menuntut konfigurasi mekanisme otentikasi yang bijaksana dalam MySQL.

Kami membahas metode solusi menyeluruh mulai dari mengubah plugin otentikasi ke `mysql_native_password`, Mengintegrasikan pengguna sistem ke dalam tabel pengguna MySQL dengan`AUTH_SOCKET`Plugin, atau menonaktifkan otentikasi UNIX_SOCKET sama sekali. Setiap solusi menawarkan pendekatan unik untuk melewati kesalahan, disesuaikan agar sesuai dengan postur keamanan yang berbeda dan preferensi administrasi. Yang Anda pilih akan tergantung pada tingkat keamanan yang ingin Anda miliki menggunakan sistem manajemen database Anda.