如果出现Access denied for user ‘root’@‘localhost’ (using password:YES)问题,那么恭喜你,你的数据库可能被某个狗贼盗了,所以切记密码不要太简单(因为我就是!!!在网上查了半天资料才解决问题,还要重新配置数据库,真的气死我了!!!)但是,也有可能是你忘记密码了或者你自己不小心把root用户给删掉了。

但是数据库root无法登录进去怎么办,那就用别的用户登录呗!!!

1.直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:
在这里插入图片描述
2.查询到密码后,输入mysql -udebian-sys-maint -p就可以成功登录mysql了
在这里插入图片描述

3.如果你是忘记密码直接输入 update user set authentication_string=PASSWORD('你的新密码') where user='root';,然后再刷新权限FLUSH PRIVILEGES; 就可以更改你的密码了。但是,如果你和我一样的不幸root用户直接丢失了,那么也没关系,重新创建就好了

mysql> use mysql;
mysql> create user 'root'@'localhost' identified by '你的新密码';

由于开启skip-grant-tables权限,上述命令无法执行,可能会报以下错误

mysql> ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

输入:

mysql> flush privileges;#刷新配置

再次重新创建用户

mysql> create user 'root'@'localhost' identified by '你的新密码';

如果再次报错,输入:

mysql> drop user 'root'@'localhost';

不报权限错误,输入:

mysql> create user 'root'@'localhost' identified by '你的新密码';

用户创建成功后,给root增加权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; #赋予所有库所有表操作权限
mysql> flush privileges;
mysql> exit;

4.输入/etc/init.d/mysql restart重启你的数据库
在这里插入图片描述
然后就可以使用root登陆了!!!

如果用户无法远程登录mysql,修改localhost,个人使用为了方便就更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从"localhost"改成"%"

mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>FLUSH PRIVILEGES;

但是这是不安全的。只需要知道ip和账户密码别人就可以操作你的数据库,所以账户密码不要太简单了!!!

查了半天资料,写个笔记记录一下,以防万一下次又被哪个狗贼盗了!!!!
参考文章1 参考文章2

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐