Jika Anda mendapatkan pesan kesalahan yang memberi tahu Anda bahwa akses ditolak untuk root
pengguna di MariaDB, artikel ini dapat membantu.
Kesalahan
Saya mencoba mengimpor informasi zona waktu sistem saya ke MariaDB dengan perintah berikut:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Tapi itu menghasilkan kesalahan berikut:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Penyebabnya
Setelah menyelidiki ini, saya menyadari bahwa root
pengguna belum menyetel sandinya.
Saat saya menjalankan kueri berikut:
SELECT user, password
FROM user
WHERE User = 'root';
Saya mendapatkan hasil berikut:
+-------------+----------+ | User | Password | +-------------+----------+ | root | invalid | +-------------+----------+
Dokumentasi MariaDB menyatakan sebagai berikut:
Namun, beberapa pengguna mungkin ingin masuk sebagai root MariaDB tanpa menggunakan sudo. Oleh karena itu metode otentikasi lama — kata sandi MariaDB konvensional — masih tersedia. Secara default dinonaktifkan ("tidak valid" bukan hash sandi yang valid), tetapi sandi dapat disetel dengan
SET PASSWORD
biasa penyataan. Dan masih mempertahankan akses tanpa kata sandi melalui Sudo.
Jadi seperti itulah jawaban kami.
Solusinya
Sesuai paragraf di atas, saya perlu mengatur kata sandi untuk root
pengguna:
SET PASSWORD FOR 'root'@localhost = PASSWORD("myReallyStrongPwd");
Menjalankan itu (dengan kata sandi yang berbeda) berhasil.
Jadi jika mendapatkan kesalahan di atas, mungkin ini akan membantu.