TL; DR: Untuk mengakses versi mysql / mariadb yang lebih baru setelah sebagai pengguna root, setelah instalasi baru, Anda harus berada di shell root (yaitu sudo mysql -u root, atau mysql -u rootdi dalam shell yang dimulai oleh su -atau yang sudo -ipertama)
Baru saja melakukan peningkatan yang sama, di Ubuntu, saya mengalami masalah yang sama.
Yang aneh adalah itu
sudo /usr/bin/mysql_secure_installation
Akan menerima kata sandi saya, dan mengizinkan saya untuk mengaturnya, tetapi saya tidak bisa masuk rootmelalui mysqlklien
Saya harus memulai mariadb dengan
sudo mysqld_safe --skip-grant-tables
untuk mendapatkan akses sebagai root, sementara semua pengguna lain masih dapat mengakses dengan baik.
Melihat mysql.usertabel yang saya perhatikan untuk root, pluginkolom disetel ke unix_socketsedangkan semua pengguna lain disetel ke 'mysql_native_password'. Sekilas melihat halaman ini: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ menjelaskan bahwa Unix Socket memungkinkan masuk dengan mencocokkan uidproses yang menjalankan klien dengan pengguna di mysql.usermeja. Dengan kata lain untuk mengakses mariadb karena rootAnda harus masuk sebagai root.
Benar-benar me-restart daemon mariadb saya dengan otentikasi diperlukan saya dapat login sebagai root dengan
sudo mysql -u root -p
atau
sudo su -
mysql -u root -p
Setelah melakukan ini, saya berpikir tentang cara mengakses tanpa harus melakukan sudo, yang hanya masalah menjalankan kueri mysql ini
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(mengganti <password>dengan kata sandi root mysql yang Anda inginkan). Ini password login yang diaktifkan untuk pengguna root.
Alternatifnya menjalankan kueri mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Akan mengubah akun root untuk menggunakan login kata sandi tanpa mengubah kata sandi, tetapi ini mungkin meninggalkan Anda dengan instalasi mysql / mariadb tanpa kata sandi root di atasnya.
Setelah salah satu dari ini, Anda perlu memulai ulang mysql / mariadb:
sudo service mysql restart
Dan voila saya memiliki akses dari akun pribadi saya melalui mysql -u root -p
PERHATIKAN BAHWA MELAKUKAN INI MENGURANGI KEAMANAN Mungkin pengembang MariaDB telah memilih agar akses root berfungsi seperti ini karena alasan yang bagus.
Memikirkannya, saya cukup senang untuk melakukannya, sudo mysql -u root -pjadi saya beralih kembali ke itu, tetapi saya pikir saya akan memposting solusi saya karena saya tidak dapat menemukannya di tempat lain.