我有办法了!
When resetting root password at step 2), also change the auth plugin to 100:
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. first, run these bash commands
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.插座问题(来自您的 comments )
当您看到一个socket错误时,一个社区提供了两种可能的解决方案:
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
个文件、更改访问权限或将其符号链接.这毕竟不是问题所在.
Skip the my.cnf
file
这个问题也不存在.如果你不确定,this might help you.