Kata sandi admin MariaDb tampaknya tidak berfungsi

8

Saya baru saja menginstal MariaDbpada Gnome Ubuntu baru dan menjalankan mysql_secure_installation setelah itu di mana saya menetapkan kata sandi admin yang layak, menghapus pengguna anonim dll.

Setelah itu saya menyadari beberapa perilaku aneh mengenai kata sandi admin:

  • Jika saya mencoba masuk dari akun pengguna normal saya menggunakan perintah, mysql -u root -psaya selalu mendapatkan kesalahan: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    Saya cukup yakin saya memasukkan kata sandi yang benar yang saya atur dengan mysql_secure_installation sebelumnya ...
  • Ketika saya menjalankan perintah dari root menggunakan sudo mysql -u root -p, saya selalu mendapatkan akses ke database, tidak peduli kata sandi yang saya masukkan ...

Apakah ini perilaku normal, apakah saya melakukan sesuatu yang salah atau telahkah saya mengacaukan instalasi?

suamikim
sumber

Jawaban:

16

Perilaku itu terdengar konsisten dengan mengaktifkan plugin untuk otentikasi soket untuk pengguna root, di mana MariaDB mempercayai kredensial sistem operasi yang diterima melalui soket dan tidak bergantung pada kata sandi. Dengan menggunakan sudoatau masuk sebagai root Anda dapat terhubung ke server database sebagai root, karena Anda root pada OS, tetapi pengguna OS lain tidak bisa.

Anda dapat menghapus opsi itu dengan:

$ sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

dan kemudian Anda mendapatkan perilaku yang diharapkan setiap pengguna yang memiliki kata sandi root MariaDB harus bisa masuk sebagai root.

Alternatifnya adalah mengatur pengguna lain, bukan root, yang juga memiliki hak administrator penuh dan menggunakannya, alih-alih root, untuk keperluan admin:

$ sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;
HBruijn
sumber
0

Jawaban dari HBruijn ditentukan untuk digunakan

update user set plugin='' where User='root';

Namun, ini merusak sistem login untuk saya, karena tidak ada yang bisa login lagi (apakah menggunakan kata sandi yang benar atau tidak, dan sudo atau tidak)

Agar saya berfungsi, saya harus menggunakan ini sebagai gantinya:

update user set plugin="mysql_native_password" where User='root';
Alex
sumber