Eu tenho uma solução!
Ao redefinir a senha de root na etapa 2), altere também o plug-in de autenticação para
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;
Isso me permitiu fazer login com sucesso!
Solução de código completo
1. execute comandos bash
1. primeiro, execute esses comandos 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. em seguida, execute comandos mysql => copie e cole isso no cli manualmente
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. execute mais comandos 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. Problema de soquete (de seus comentários)
Quando você vê um soquete erro, uma comunidade veio com 2 soluções possíveis:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(graças a @Cerin)
Ou
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(graças a @Peter Dvukhrechensky)
Caminhos cegos e possíveis erros de borda
Use 127.0.0.1 em vez de localhost
mysql -uroot # "-hlocalhost" is default
Pode levar a "arquivo ausente" ou erro slt.
mysql -uroot -h127.0.0.1
Funciona melhor.
Ignore o problema do soquete
Eu encontrei muitas maneiras de criar
mysqld.sock
arquivo, altere os direitos de acesso ou faça um link simbólico para ele. Afinal, não era o problema. Ignore o my.cnf
arquivo
A questão também não existia. Se você não tiver certeza, isso pode ajudá-lo .