У меня есть решение!
При сбросе пароля root на шаге 2) также измените плагин аутентификации на 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;
Это позволило мне успешно войти в систему!
Решение полного кода
1. запустите команды bash
1. сначала запустите эти команды 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. затем запустите команды mysql => скопируйте и вставьте это в 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. запустите больше команд 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. Проблема с сокетом (из ваших комментариев)
Когда вы видите ошибку сокета , сообщество предложило 2 возможных решения:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(спасибо @Cerin)
Или
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(спасибо @Peter Dvukhrechensky)
Слепые пути и возможные ошибки краев
Используйте 127.0.0.1 вместо localhost
mysql -uroot # "-hlocalhost" is default
Может привести к ошибке «отсутствует файл» или slt.
mysql -uroot -h127.0.0.1
Работает лучше.
Пропустить проблему с сокетом
Я нашел много способов создать mysqld.sock
файл, изменить права доступа или создать символическую ссылку на него. В конце концов, проблема была не в этом.
Пропустить my.cnf
файл
Вопроса тоже не было. Если вы не уверены, это может вам помочь .