TL; DR: Aby uzyskać dostęp do nowszych wersji mysql / mariadb jako użytkownik root, po nowej instalacji musisz być w powłoce root (tj. sudo mysql -u rootLub mysql -u rootw powłoce uruchomionej przez su -lub sudo -inajpierw)
Po wykonaniu tej samej aktualizacji na Ubuntu miałem ten sam problem.
Dziwne było to
sudo /usr/bin/mysql_secure_installation
Przyjąłby moje hasło i pozwolił mi je ustawić, ale nie mogłem się zalogować rootprzez mysqlklienta
Musiałem zacząć mariadb z
sudo mysqld_safe --skip-grant-tables
aby uzyskać dostęp jako root, podczas gdy wszyscy inni użytkownicy nadal mogą uzyskać dostęp dobrze.
Patrząc na mysql.usertabelę, którą zauważyłem dla roota, pluginkolumna jest ustawiona na, unix_socketpodczas gdy wszyscy inni użytkownicy są ustawione na `` mysql_native_password ''. Szybkie spojrzenie na tę stronę: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ wyjaśnia, że Unix Socket umożliwia logowanie poprzez dopasowanie uidprocesu uruchomionego klienta do procesu użytkownika w mysql.userstół. Innymi słowy, aby uzyskać dostęp do mariadb root, musisz być zalogowany jako root.
Z pewnością ponowne uruchomienie mojego demona mariadb z wymaganym uwierzytelnieniem Mogę zalogować się jako root z
sudo mysql -u root -p
lub
sudo su -
mysql -u root -p
Po zrobieniu tego pomyślałem o tym, jak uzyskać dostęp bez konieczności wykonywania sudo, co jest tylko kwestią uruchomienia tych zapytań mysql
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;
(zastępując <password>żądanym hasłem root mysql). Włączono logowanie hasłem dla użytkownika root.
Alternatywnie uruchom zapytanie mysql:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;
Zmieni konto root tak, aby korzystało z hasła logowania bez zmiany hasła, ale może to pozostawić instalację mysql / mariadb bez hasła roota.
Po jednym z nich musisz ponownie uruchomić mysql / mariadb:
sudo service mysql restart
I voila, miałem dostęp z mojego konta osobistego przez mysql -u root -p
NALEŻY PAMIĘTAĆ, ŻE TO ZMNIEJSZA BEZPIECZEŃSTWO Prawdopodobnie programiści MariaDB zdecydowali się na takie działanie uprawnień roota z dobrego powodu.
Myśląc o tym jestem bardzo szczęśliwy, że muszę, sudo mysql -u root -pwięc wracam do tego, ale pomyślałem, że opublikuję swoje rozwiązanie, ponieważ nie mogłem znaleźć go gdzie indziej.