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 root
di dalam shell yang dimulai oleh su -
atau yang sudo -i
pertama)
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 root
melalui mysql
klien
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.user
tabel yang saya perhatikan untuk root, plugin
kolom disetel ke unix_socket
sedangkan 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 uid
proses yang menjalankan klien dengan pengguna di mysql.user
meja. Dengan kata lain untuk mengakses mariadb karena root
Anda 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 -p
jadi saya beralih kembali ke itu, tetapi saya pikir saya akan memposting solusi saya karena saya tidak dapat menemukannya di tempat lain.