如何解决mysql登录错误'Access denied for user 'root'@'localhost'问题

这篇文章将为大家详细讲解有关如何解决mysql登录错误'Access denied for user 'root'@'localhost'问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

首先是不知道怎么忽然MysqL用命令行,workbench都登录不了,都提示'Access denied for user 'root'@'localhost'。
数据库卸载重装了几次都不行。好像感觉数据清理不干净。解决的过程遇到的坑,这里记录分享下。

有效的操作记录下:

1、首先是跳过权限登录MysqL,查看user表,

停止MysqL服务~$ sudo service MysqL stop

以安全模式启动MysqL~$ sudo MysqLd_safe --skip-grant-tables &

注意:

可能提示MysqLd_safe Directory '/var/run/MysqLd' for UNIX socket file don't exist

解决方法:(笔者尝试发现必须加sudo)

sudo mkdir -p /var/run/MysqLd
sudo chown MysqL:MysqL /var/run/MysqLd

再次执行上面安全模式启动MysqL ~$ sudo MysqLd_safe --skip-grant-tables &

这次提示语句显示了,MysqLd_safe Staring MysqLd deamon with database from /var/lib/MysqL

这次登录可以不用密码:MysqL -u root 回车就登录

sql语句查询MysqL.user表的情况,如下:

图片(以后补)

还有人提议如下这么做,没尝试

Open & Edit /etc/my.cnf or /etc/MysqL/my.cnf, depending on your distro.
Add skip-grant-tables under [MysqLd]

2、发现user的plugin为socket_plugin,改为MysqL_native_password

修改root的plugin权限:

update MysqL.user set authentication_string=PASSWORD('newPwd'), plugin='MysqL_native_password' where user='root';
flush privileges;
quit;

(注意这里修改一定要正确,免得跟笔者一样,粗心的把plugin修改内容少些了一个字母,又有下面的折腾)

3、user表还有其他用户,root不能登录,用其他的用户登录也行啊。查询了发现一下有效操作:

MysqL的安装目录,一般在 /etc/MysqL里面有个debain.cnf文件,里面有user,password,用这个用了登录,密码最后复制,然后就又可以修改user表root的plugin,操作同上。

重启MysqL服务, sudo service MysqL restart;

用root用户就可以登录

关于“如何解决MysqL登录错误'Access denied for user 'root'@'localhost'问题”这篇文章分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

相关文章

优化MySQL数据库发布系统存储的方法有:1.mysql库主从读写分...
使用mysql的方法:在“我的电脑”→右键→“管理”→“服务”...
在mysql中查看root用户权限的方法:1.命令行启动mysql服务;...
MySQL主从复制是用来备份一个与主数据库一样环境的从数据库,...
运行mysql的方法1.启动mysql服务,在“我的电脑”→右键→“...
开启mysql的方法1.可以通过快捷键win+r,输入cmd,打开窗口,...