Cara Mengatasi Kesalahan MySQL 1698: Panduan Lengkap

Diterbitkan: 2024-03-28

Sudahkah Anda mencoba mengakses database MySQL sebagai pengguna root tetapi menemukan 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 dibandingkan dengan sistem operasi (OS) lainnya, kesalahan ini muncul untuk pengguna sistem Ubuntu.

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

Apa itu MySQL error 1698 dan alasan di baliknya?

Di balik kesalahan MySQL 1698 adalah masalah bagaimana MySQL memeriksa apakah seseorang yang mencoba menggunakannya sebagai pengguna 'root' diizinkan untuk melakukannya. Pada beberapa sistem operasi, MySQL tidak menggunakan kata sandi biasa untuk pengguna 'root'. Akun root MySQL memeriksanya melalui plugin auth_socket atau unix_socket. Plugin ini beroperasi berdasarkan kredensial sistem operasi dan bukan 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 mengizinkan Anda mengaksesnya sebagai pengguna 'root'. Cara ini seharusnya membuat segalanya lebih aman dan mudah, namun dalam proses tersebut bisa saja muncul error 1698.

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

 > Kesalahan MySQL 1698 (28000)

Mempelajari lebih lanjut 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 telah kita bahas di atas.

Intinya, plugin ini tidak mempermasalahkan password sama sekali. Sebaliknya, ia memverifikasi apakah koneksi dibuat melalui soket UNIX dan kemudian memeriksa apakah nama pengguna yang mencoba menghubungkan cocok dengan yang login ke sistem.

Pendekatan otentikasi ini merupakan peralihan dari keamanan berbasis kata sandi. Ini menunjukkan cara kerja plugin untuk memungkinkan orang masuk berdasarkan informasi pengguna dari sistem komputer.

Bagaimana mengatasi kesalahan MySQL 1698?

Mari kita bahas solusi yang akan mengatasi kesalahan MySQL 1698 dan memastikan interaksi database yang efektif di masa depan.

Alihkan pengguna ke plugin mysql_native_password

Beralih ke plugin ` mysql_native_password` adalah perbaikan sederhana. Pendekatan ini berarti memperbarui plugin autentikasi untuk pengguna root menjadi ` mysql_native_password` . Anda harus mengubah pengaturan plugin pengguna root dan kemudian menerapkan perubahan ini dengan menghapus hak istimewa MySQL. Metode ini memulihkan akses sebagai resolusi langsung terhadap masalah penolakan akses.

  1. Akses shell MySQL sebagai pengguna istimewa.
  2. Gunakan perintah ini untuk mengalihkan metode otentikasi pengguna root ke ` mysql_native_password` :
 ALTER USER 'root'@'localhost' DIIDENTIFIKASI DENGAN mysql_native_password OLEH 'your_new_password';

3. Hapus hak istimewa untuk menerapkan perubahan:

 HAK ISTIMEWA PENYIMPANAN;

4. Keluar dari shell MySQL dan coba login sebagai pengguna root lagi.

Tambahkan pengguna sistem ke tabel pengguna MySQL

Menambahkan pengguna sistem ke tabel pengguna MySQL dan mengaktifkan plugin ` auth_socket` akan meningkatkan keamanan. Metode ini memanfaatkan autentikasi tingkat OS, sehingga memungkinkan akses database dengan cara yang lebih aman dibandingkan autentikasi kata sandi tradisional. Pendekatan ini meminimalkan risiko yang terkait dengan penggunaan akun root secara langsung untuk operasi database.

  1. Masuk ke server MySQL sebagai pengguna root atau pengguna lain dengan hak istimewa yang memadai.
  2. Buat pengguna baru dan atur otentikasi ke ` auth_socket` :
 BUAT PENGGUNA 'pengguna_sistem_Anda'@'localhost' DIIDENTIFIKASI DENGAN auth_socket;

3. Berikan hak istimewa yang diperlukan kepada pengguna baru:

 MEMBERIKAN SEMUA HAK ISTIMEWA DI *.* KEPADA 'pengguna_sistem_Anda'@'localhost' DENGAN OPSI GRANT;

4. Hapus hak istimewa untuk menerapkan perubahan:

 HAK ISTIMEWA PENYIMPANAN;

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 login menggunakan protokol kata sandi standar dengan menghapus plugin soket UNIX dari metode otentikasi pengguna root. Meskipun hal 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:
 PERBARUI mysql.user SET plugin='' WHERE Pengguna='root';

3. Hapus hak istimewa untuk menyimpan perubahan:

 HAK ISTIMEWA PENYIMPANAN;

Sekarang pengguna root dapat mengautentikasi menggunakan kata sandi, melewati metode soket UNIX.

Kesimpulan

Kesalahan MySQL 1698 seperti hambatan saat mencoba mengakses database Anda. Baik Anda mengalami kesalahan ini untuk pertama kalinya atau ingin mencegah kesalahan ini terjadi lagi di masa mendatang, memahami secara spesifik kesalahan ini sangatlah penting. Untuk mengatasi kesalahan MySQL 1698 Anda memerlukan pemahaman menyeluruh tentang arsitektur otentikasi MySQL, terutama ketika bersinggungan dengan praktik keamanan tingkat sistem operasi, seperti yang diamati di sistem Ubuntu.

Kesalahan MYSQL 1698, yang menolak akses ke pengguna root memerlukan konfigurasi mekanisme otentikasi dalam MySQL.

Kami membahas metode solusi menyeluruh mulai dari mengubah plugin otentikasi menjadi ` mysql_native_password` , mengintegrasikan pengguna sistem ke dalam tabel pengguna MySQL dengan plugin ` auth_socket` , atau menonaktifkan otentikasi UNIX_socket sama sekali. Setiap solusi menawarkan pendekatan unik untuk mengatasi kesalahan, disesuaikan agar sesuai dengan postur keamanan dan preferensi administratif yang berbeda. Yang akan Anda pilih akan bergantung pada tingkat keamanan yang Anda inginkan dalam menggunakan sistem manajemen basis data Anda.