我有解决办法!
在步骤2)重置root密码时,还将auth插件更改为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.套接字问题(根据您的评论)
当您看到套接字错误时,社区提供了两种可能的解决方案:
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
文件
问题也不存在。如果不确定,这可能会对您有所帮助。