mysql 8.0 报Access denied for user 'root'@'localhost' (using password: NO)解决

624 阅读1分钟

启动

$ sudo systemctl start mysqld

报错了

See "systemctl status mysql.service" and "journalctl -xe" for details.* 
$ systemctl status mysql.service

Status: "Server startup in progress"
Error: 13 (Permission denied)

解决

sudo chown -R mysql:mysql /var/lib/mysql/

登录

$ mysql -u root -p
Password:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

密码我不知道

设置密码

$ mysqladmin -u root password "123";

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

还是报错,可能首次登录有临时密码,查找临时密码

grep 'temporary password' /var/log/mysqld.log

image.png 提示我连文件夹都没找到...

那我在 /var/log下查找mysqld.log文件

find /var/log -name "mysqld.log"

找到了,路径为/var/log/mysql/mysqld.log

再次找临时密码

image.png

没找到temporary password

再搜索,可能之前装的mysql没删干净,删除/var/lib/mysql/*目录,清除数据库管理员账户和密码。我手抖执行了rm -rf /var/lib/mysql,连文件夹都删了,重启直接报错。。。

image.png image.png image.png

好吧,再装回来

mkdir /var/lib/mysql
chown mysql:mysql /var/lib/mysql
systemctl start mysql

image.png image.png

然后,试着用默认密码登录,报错,我修改密码后,再用新密码登录,成功了。

$ mysqladmin -u root password "123"
$ mysql -u root -p
Enter password: 

image.png