前言:
今天安装了MySQL,本来可以避免这个问题的,但是由于我的一时疏忽,整出了这个错误。那就解决呗!!!
错误起因:
我是按照这篇博客装的:https://blog.csdn.net/qq_43437122/article/details/103551878
本来初次登录时不需要密码的,但是我撒呼呼的给弄错了,我就以为需要密码但是我不知道,我就去百度如何重置密码。结果是
那篇博客让修改配置文件,然后执行update user set password = ‘123456’ where user =“root” 命令来更新密码,其实这样
写是错误的,然后就导致了我这个错误。
错误解决
网上都是说root权限的错误,但是我试了之后没用,依然报这个错误:access denied for user ‘’@‘localhost’ to database
‘database_name’ 。
此时可能你输入"mysql" “mysql -u root” “mysql -u root -p” 等等都能进入mysql,但是就是没有mysql表,因为这时存在一个“空用
户”。“空用户”即是user列为空,它可以匹配一切用户名,所以此时你以任何方式登录都行,但是登录后的权限不够,所以就没有
mysql等系统表,解决方式如下:
1. 关闭mysql服务
2. 忽略权限登录
2.1 执行命令:
mysqld_safe --skip-grant-tables
执行后会显示:daemon from …啥的信息,再打开一个新窗口
2.2 新打开一个窗口,并执行命令:
mysql -u root
3. 执行以下命令:
use mysql
select * from user where user='' //如果有数据,那么你的问题基本就可以确定了
delete from user where user='';
flush privileges; //重载权限表
最后那个重载权限命令一定别忘了执行。。。
4. 重启服务
如果重启MySQL服务失败的话,那就重启下机器就行了。再进入mysql你会返现一切正常。