Mam rozwiązanie!
Podczas resetowania hasła roota w kroku 2), zmień również wtyczkę autoryzacji na mysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
To pozwoliło mi się pomyślnie zalogować!
Pełne rozwiązanie kodu
1. uruchom polecenia bash
1. najpierw uruchom te polecenia bash
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. następnie uruchom polecenia mysql => skopiuj i wklej to ręcznie do cli
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. uruchom więcej poleceń basha
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. Problem z gniazdem (z twoich komentarzy)
Gdy zobaczysz błąd gniazda , społeczność zaproponowała 2 możliwe rozwiązania:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(dzięki @Cerin)
Lub
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(dzięki @Peter Dvukhrechensky)
Ślepe ścieżki i możliwe błędy krawędzi
Użyj 127.0.0.1 zamiast localhost
mysql -uroot # "-hlocalhost" is default
Może prowadzić do „brakującego pliku” lub błędu slt.
mysql -uroot -h127.0.0.1
Działa lepiej.
Pomiń problem z gniazdem
Znalazłem wiele sposobów tworzenia mysqld.sock
pliku, zmiany praw dostępu lub dowiązania symbolicznego. W końcu to nie był problem.
Pomiń my.cnf
plik
Problemu też tam nie było. Jeśli nie jesteś pewien, może ci to pomóc .