mysql nie pyta o hasło roota podczas instalacji


54

Kiedyś apt install mysql-serverinstalowałem MySQL na Ubuntu 16.04, ale podczas instalacji nie pytał o hasło roota.

Po instalacji dostałem, ERROR 1045kiedy próbowałem się zalogować jako rooti mysql_secure_installationrzuciłem ten sam błąd. I purgedid autoremovenastępnie ponownie zainstalowane, ale to nie działa.

Jak mogę to naprawić? Czy mogę ustawić hasło roota, jeśli nie ustawiłem go podczas instalacji?

To jest mój dziennik instalacji:

Zostaną zainstalowane następujące dodatkowe pakiety:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7
  mysql-server-core-5.7
Sugerowane pakiety:
  mailx tinyca
Zostaną zainstalowane następujące NOWE pakiety:
  libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7
  mysql-server-core-5.7
0 zaktualizowanych, 6 nowo zainstalowanych, 0 do usunięcia i 0 niezaktualizowanych.
Musisz uzyskać 0 B / 17,9 MB archiwów.
Po tej operacji zostanie wykorzystane 160 MB dodatkowego miejsca na dysku.
Czy chcesz kontynuować? [T / n] y
Wstępna konfiguracja pakietów ...
Wybieranie wcześniej niezaznaczonego pakietu libaio1: amd64.
(Czytanie bazy danych ... 227144 plików i katalogów aktualnie zainstalowanych.)
Przygotowanie do rozpakowania ... / libaio1_0.3.110-2_amd64.deb ...
Rozpakowywanie libaio1: amd64 (0.3.110-2) ...
Wybieranie wcześniej niezaznaczonego pakietu mysql-client-core-5.7.
Przygotowywanie do rozpakowywania ... / mysql-client-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Rozpakowywanie mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Wybieranie wcześniej niezaznaczonego pakietu mysql-client-5.7.
Przygotowanie do rozpakowania ... / mysql-client-5.7_5.7.12-0ubuntu1_amd64.deb ...
Rozpakowywanie mysql-client-5.7 (5.7.12-0ubuntu1) ...
Wybieranie wcześniej niezaznaczonego pakietu mysql-server-core-5.7.
Przygotowywanie do rozpakowania ... / mysql-server-core-5.7_5.7.12-0ubuntu1_amd64.deb ...
Rozpakowywanie mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Wybieranie wcześniej niezaznaczonego pakietu mysql-server-5.7.
Przygotowanie do rozpakowania ... / mysql-server-5.7_5.7.12-0ubuntu1_amd64.deb ...
Rozpakowywanie mysql-server-5.7 (5.7.12-0ubuntu1) ...
Wybieranie wcześniej niezaznaczonego pakietu mysql-server.
Przygotowywanie do rozpakowania ... / mysql-server_5.7.12-0ubuntu1_all.deb ...
Rozpakowywanie serwera mysql (5.7.12-0ubuntu1) ...
Przetwarzanie wyzwalaczy dla libc-bin (2.23-0ubuntu3) ...
Przetwarzanie wyzwalaczy dla man-db (2.7.5-1) ...
Przetwarzanie wyzwalaczy dla systemd (229-4ubuntu4) ...
Przetwarzanie wyzwalaczy dla ureadahead (0.100.0-19) ...
Konfigurowanie libaio1: amd64 (0.3.110-2) ...
Konfigurowanie mysql-client-core-5.7 (5.7.12-0ubuntu1) ...
Konfigurowanie mysql-client-5.7 (5.7.12-0ubuntu1) ...
Konfigurowanie mysql-server-core-5.7 (5.7.12-0ubuntu1) ...
Konfigurowanie mysql-server-5.7 (5.7.12-0ubuntu1) ...
update-alternatives: użycie /etc/mysql/mysql.cnf do zapewnienia /etc/mysql/my.cnf (my.cnf) w trybie automatycznym
Sprawdzanie, czy wymagana jest aktualizacja.
Ta instalacja MySQL jest już zaktualizowana do 5.7.12, użyj --force, jeśli nadal musisz uruchomić mysql_upgrade
Konfigurowanie serwera mysql (5.7.12-0ubuntu1) ...
Przetwarzanie wyzwalaczy dla libc-bin (2.23-0ubuntu3) ...

Odpowiedzi:


60

Możesz odzyskać lub ustawić hasło roota bez znajomości bieżącego, uruchamiając mysql bez ładowania tabel grantu.

Proszę zwrócić uwagę $na polecenia. Określa monit terminalu, który widzisz podczas wpisywania polecenia. Pokazuje, że jest to wiersz tekstu, ale i faktycznie wpisane polecenie terminalu. mysql>Prefiks „ ” jest również monitem. Jest to monit wyświetlany podczas interaktywnego uruchamiania mysql .

Oto cli (linia poleceń), aby to zrobić:
(Pamiętaj, aby zatrzymać bieżący serwer przed wykonaniem tych kroków. Tylko jeden serwer może działać jednocześnie.)

$ sudo mkdir /var/run/mysqld; sudo chown mysql /var/run/mysqld
$ sudo mysqld_safe --skip-grant-tables&

Teraz możesz zalogować się jako root bez hasła i wykonać wszystkie polecenia, tak jak w tym przypadku ustaw hasło roota jako root.

$ sudo mysql --user=root mysql

Jest to ustawione hasło roota, które wykonasz wewnątrz mysql, jeśli masz MySQL 5.6 lub niższy:

mysql> update user set Password=PASSWORD('new-password') where user='root';
flush privileges;

W MySQL 5.7 lub nowszym

mysql> update user set authentication_string=PASSWORD('new-password') where user='root';
flush privileges;

Stamtąd wyjdź (zabij działający msqld) mysql i uruchom go jak zwykle.

Uwagi na temat uruchamiania i zatrzymywania usługi mysql:

Zatrzymaj mysql:

$ sudo service mysql stop

Uruchom mysql (normalny):

$ sudo service mysql start

Zabij tymczasową sesję trybu awaryjnego mysql:

$ sudo mysqladmin shutdown

11
w mysql 5.7.12 w tabeli użytkowników nie ma kolumny o nazwie hasło. Dlatego następujące polecenie zadziałało dla mnie. aktualizuj zestaw użytkowników uwierzytelnianie_string = HASŁO („nowe-hasło”) gdzie użytkownik = „root”;
Kod

7
Nadal dostajęERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
llamerr

@ ErelSegal-Halevi Są dwie rzeczy, które powinieneś zrobić. Uruchom $ mysql_upgrade -u root -p. Spróbuj także wykonać polecenie podane powyżej przez RP Singha.
LD James

Nadal otrzymuję ten błąd.
Jamie Hutber

SET PASSWORD FOR 'root' = PASSWORD('your-password')jeśli używasz mariadb
user1036719

37

Nie będzie pytał o hasło podczas instalacji mysqlw Ubuntu 16.04, ale możesz je ustawić po udanej instalacji w następujący sposób:

Po zakończeniu instalacji mysql uruchom polecenie:

sudo mysql_secure_installation

Pokaże:

UWAGA: URUCHOMIENIE WSZYSTKICH CZĘŚCI TEGO PISEMKI JEST ZALECANE DLA WSZYSTKICH SERWERÓW MariaDB W UŻYCIU PRODUKCJI! PROSIMY O DOKŁADNE PRZECZYTANIE KAŻDEGO KROKU!

Aby zalogować się do MariaDB, aby go zabezpieczyć, potrzebujemy aktualnego hasła dla użytkownika root. Jeśli właśnie zainstalowałeś MariaDB i nie ustawiłeś jeszcze hasła roota, hasło będzie puste, więc powinieneś po prostu nacisnąć enter tutaj.

Enter current password for root (enter for none): (tutaj naciśnij Enter)

OK, hasło zostało pomyślnie użyte, przejście dalej ...

Ustawienie hasła roota gwarantuje, że nikt nie będzie mógł zalogować się do użytkownika root MariaDB bez odpowiedniej autoryzacji.

Set root password? [Y/n] y   (press 'y' to set new password)
New password: 
Re-enter new password:

Hasło zostało zmienione! Ponowne ładowanie tabel uprawnień .. ... Sukces!


W przypadku Ubuntu 18.04 LUB mysql-serverwersji 5.7.22 TEN SPOSÓB NIE DZIAŁA

Aby ustawić hasło roota w Ubuntu 18.04, najpierw wykonaj pierwsze trzy komendy lub pierwsze dwa kroki odpowiedzi LD James, a następnie uruchom,

mysql> alter user 'root'@'localhost' identified by '<password>';

Hasło użytkownika root jest ustawione!

LUB

Wykonaj następujące kroki, aby ustawić hasło roota w 18.04:

Ponieważ użytkownik root nie ma ustawionego hasła, wystarczy zalogować się przy użyciu pustego hasła

sudo mysql -u root -p
Enter password: (press enter as no password is set)

po tym można łatwo uruchomić zapytanie

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

2
Problem w przypadku tego pytania polega na tym, że użytkownik nie może dostać się do podanych przez ciebie podpowiedzi, ponieważ on nie zna current password for root.
LD James

@LDJames tak, masz rację. Nie pamiętam BŁĘDU: 1405, kiedy biegnę, mysql_secure_installationale sudo mysql_secure_installationdla mnie pracował. Instalacja mysql nie pyta o hasło. Tak samo stało się ze mną. i here press enteroznacza naciśnij Enter bez hasła.
stokrotka

2
Ponieważ Concers Ubuntu 18.04 lub Debian 9+ nie łączy się z pustym hasłem, a nawet po zresetowaniu przepustki dla roota, nadal odmawia połączenia
chefarov

@chefarov W obliczu tego samego problemu, bardzo frustrujące
RedactedProfile

Rzeczywiście nadal
pojawia

16

Najwyraźniej instalacja serwera mysql w dniu 16.04 (czy jakakolwiek instalacja w wersji 5.7?) Umożliwia dostęp do konta roota nie poprzez hasło, ale przez wtyczkę auth_socket . Uruchomienie sudo mysql -u root(nb bez hasła) da konsolę mysql, natomiast uruchomienie polecenia, ponieważ użytkownik inny niż root poprosi o podanie hasła.

Wydaje się, że zmiana hasła nie robi dużej różnicy, ponieważ backend auth nie sprawdza nawet hasła. Istnieje bardzo obszerny artykuł na temat zmiany wtyczki i przejścia na uwierzytelnianie za pomocą hasła .


4
Udało mi się potwierdzić nową instalacją apt install mysql-serverbez podawania hasła w dniu 18.04. Objaw i rozwiązanie są dokładnie takie, jak opisano.
EricC

więc jak do diabła mam się połączyć?
Jamie Hutber

9

Po instalacji wystarczy:

1.

sudo mysql

(tak, brak użytkownika, brak przepustki)

2. Jesteś teraz w konsoli mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my_new_pass';

3)

FLUSH PRIVILEGES;

  1. Otóż ​​to. Możesz teraz jak zwykle wejść do konsoli:

    mysql -u root -p my_new_pass


3
Próbowałem wielu innych odpowiedzi, ale ta działała na Amazon EC2
Haris ur Rehman

2
To była poprawna odpowiedź dla WSL Ubuntu (Linux na Windows).
Fer García

2
To jedyna odpowiedź, która działała dla mnie na nowej instalacji Ubuntu 18.04 w Google Cloud.
Aakash

1
Pracował dla mnie na Ubuntu 19.04. Uruchomiłem mysql_secure_myinstallation, ale wydawało się, że hasło roota nie zostało ustawione.
Jens Wagemaker

1
Wypróbowałem dziesiątki rozwiązań. To było najłatwiejsze i jedyne, które działało.
mreff555

4
  1. istnieje domyślne konto użytkownika.

    $ vim /etc/mysql/debian.cnf 
    

    dostaniesz z niego to konto w ten sposób:

    user     = debian-sys-maint
    password = nUZTARYslBsASzpw
    
  2. logujesz się przy użyciu tego konta

    $ mysql -u debian-sys-maint -p
    
  3. edytuj hasło roota

    mysql> show databases;
    
    mysql> use mysql;
    
    mysql> update user set authentication_string=PASSWORD("new_password") where user='root';
    
    mysql> update user set plugin="mysql_native_password";
    
    mysql> flush privileges;
    
    mysql> quit;
    
  4. uruchom ponownie mysql

    $ /etc/init.d/mysql restart;
    

wtedy możesz mysql -u root -pz tobą poprzednie ustawienie.


Wypróbowałem każde inne rozwiązanie, i to było jedyne, które działało dla mnie. (Linux Mint 19.2).
ElectroBuddha

0

Dodając do głównej odpowiedzi, jeśli utkniesz w miejscu

mysqld_safe Uruchamianie demona mysqld z bazami danych z / var / lib / mysql

Trzeba pamiętać, że musisz użyć innego okna terminala, aby wprowadzić następujące polecenie.

$ sudo mysql --user=root mysql

Jeśli spróbujesz to zrobić w tym samym oknie, spowoduje to zamknięcie procesu trybu awaryjnego mysqld.


-1

Oto jak skonfigurować mysql-serverprzy pomocy hasła terminala w Ubuntu 18.10.

  1. Pobierz repozytorium MySQL APT za pośrednictwem https://dev.mysql.com/downloads/repo/apt/
  2. cddo katalogu, w którym pobrałeś i uruchomiłeś dpkg -i mysql-apt-config_0.8.13-1_all.deb(sprawdź numer wersji)
  3. Z menu podpowiedzi wybierz ostatnią opcję „ok”, a następnie ponownie „ok”.

  4. Zaktualizuj i zainstaluj mysql-server i mysql-client:

aktualizacja sudo apt
sudo apt install mysql-server mysql-client
  1. Wpisz hasło roota w promt.
  2. Wybierz, "Use Legacy Authentication Method"jeśli działające środowisko / aplikacje (takie jak laravel), które nie obsługują "Strong Password Encryption"jeszcze nowego , w przeciwnym razie, jeśli twoje środowisko / aplikacja obsługuje, "Strong Password Encryption"wybierz je.
  3. Zaloguj się jako root i sprawdź, czy to działa.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.