Pracuję nad Xubuntu 15.04. Zainstalowałem już serwer MariaDB na różnych systemach i zawsze proszono mnie o hasło roota podczas instalacji. Tym razem nie pamiętam jednak prośby o hasło. Gdy próbuję się zalogować bez hasła (lub pustego hasła), pojawia się Access denied for user 'root'@'localhost'
błąd. Próbowałem całkowicie odinstalować pakiet
sudo apt-get remove mariadb-server
sudo apt-get purge mariadb-server
Po ponownej instalacji nadal nie wyświetlało się pytanie o hasło roota.
Wypróbowałem mysqld --skip-grant-tables
podejście z
mysql, jak naprawić odmowę dostępu dla użytkownika „root” @ „localhost” . Mogę zmodyfikować hasło użytkownika root w bazie danych mysql - przynajmniej zmiany wartości skrótu - ale nadal nie mogę zalogować się przy użyciu nowego hasła po ponownym uruchomieniu serwera mysql. Nadal pojawia się ten sam błąd.
Użytkownik debian-sys-maint nie istnieje. Nie mogę go więc użyć do naprawy czegokolwiek.
Jakieś pomysły, co jeszcze mogę spróbować?
Odpowiedzi:
Musisz zresetować hasło. więc po to
źródło
plugin: auth_socket
jest ono domyślnie włączone. Innymi słowy, nie ma potrzeby używania,--skip-grant-tables
tak jak byłoby to konieczne w poprzednich wersjach MySQL. (Ponadto technicznie rzecz biorąc, środek ten nie „resetuje hasła”, ale wyłącza wtyczkę.)Idea nowej konfiguracji polega na tym, że nie powinieneś w ogóle używać haseł. Aby uzyskać szczegółowe informacje, patrz Wtyczka uwierzytelniania UNIX_SOCKET .
Szczególnie istotna jest zawartość /usr/share/doc/mariadb-server-10.0/README.Debian.gz na Ubuntu 16.04:
Jeśli więc wyłączysz tę wtyczkę dla roota i ustawisz hasło, codzienne zadanie crona zostanie przerwane, ponieważ zakłada, że zaloguje się jako root bez hasła, ale z wtyczką.
Później mówi:
Wygląda więc na to, że aplikacje nie powinny już używać haseł.
źródło
"So if you disable that plug-in for root and set a password, the daily cron job will break as it's assuming it will log in as root without a password..."
Nieoczywiste implikacje włączenia wtyczki uwierzytelniającej UNIX_SOCKET (która jest teraz domyślna) polega na tym, że możliwość uwierzytelnienia się jako użytkownik root bazy danych za pomocą hasła jest wyłączona. Nigdzie na mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin nie wspomniano o tym znaczącym ograniczeniu. W związku z tym nie można zalogować się jako root, np. Przez SSH.Rozwiązałem problem po odpowiedzi z tego postu:
Nie można zresetować hasła roota MySQL (MariaDB)
Trzeba zmienić pole wtyczki mysql.user dla wszystkich katalogów głównych na pusty ciąg.
źródło
Zrobiłem to, uruchamiając to polecenie, zaraz po instalacji:
W pierwszym kroku hasło jest puste, więc po prostu naciśnij Enter.
źródło
Miałem ten sam problem na piapie raapberry z odcinkiem. Moim rozwiązaniem było utworzenie nowego użytkownika ze wszystkimi uprawnieniami, wykonując następujące czynności:
Teraz mogę się zalogować, a do nas użytkownik „admin” jako administrator.
Mam nadzieję, że to komuś pomoże.
źródło
Po prostu użyj
sudo mysql -u root
- to wszystkoSzczegóły: nowsze wersje uwierzytelniają się w mysql przy użyciu uwierzytelniania systemowego. Więc jeśli możesz sudo na system operacyjny, zakłada się, że jesteś także rootem db. Możesz to potwierdzić, wydając
sudo mysql -u root -e "USE mysql; SELECT User, Host, plugin FROM mysql.user;"
. Powinieneś zobaczyć coś takiego (może zauth_socket
innymi dystrybucjami)źródło