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 root
Lub mysql -u root
w powłoce uruchomionej przez su -
lub sudo -i
najpierw)
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ć root
przez mysql
klienta
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.user
tabelę, którą zauważyłem dla roota, plugin
kolumna jest ustawiona na, unix_socket
podczas 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 uid
procesu uruchomionego klienta do procesu użytkownika w mysql.user
stół. 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 -p
więc wracam do tego, ale pomyślałem, że opublikuję swoje rozwiązanie, ponieważ nie mogłem znaleźć go gdzie indziej.