Mam rozwiązanie!
Podczas resetowania hasła roota w kroku 2) zmień również wtyczkę auth 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;
Umożliwiło mi to pomyślne zalogowanie się!
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ń bash
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 gniazdo błąd, społeczność przedstawił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 @Peterowi Dvukhrechensky'emu)
Ś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 na stworzenie mysqld.sock
plik, zmień prawa dostępu lub dowiązanie symboliczne. W końcu nie o to chodziło.
Pomiń my.cnf
plik
Problemu też nie było. Jeśli nie masz pewności, to może ci pomóc .