Ubuntu下连接mysql出现 ERROR 1698 (28000): Access denied for user 'root'@'localhost'错误解决方法

Posted theinvoker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下连接mysql出现 ERROR 1698 (28000): Access denied for user 'root'@'localhost'错误解决方法相关的知识,希望对你有一定的参考价值。

ubuntu版本:18.04    mysql版本:5.7.24  

 

技术分享图片

 

ubuntu安装mysql后用root账户登入会出现问题:ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘

 

可能是因为初始密码为空;按空格回车后还是报一样的错

 

这样就只能使用debian-sys-maint账户修改root账户密码了。

debian-sys-maint账户是安装mysql时系统自动生成的mysql用户,debian和ubuntu系统都会这样做, 

停止或重启服务都靠它,删除它就无法重启或者雷霆之服务。
如果你修改了它的密码或覆盖掉密码,也会出现错误:
error: ‘Access denied for user ‘debian-sys-maint‘@‘localhost‘ (using password: YES)‘

 

 1  查看debian-sys-maint账户密码:

 

debian-sys-maint账户是安装mysql时系统自动生成的,密码随机生成。

 

终端输入: sudo vim /etc/mysql/debian.cnf  


技术分享图片

 

password就是密码,如果是复制密码由后面使用,切忌不要将密码字符串后面的空格也复制进去,否者后面粘贴密码登入账户时会出现错误。

 

2 用刚才查看的密码登入debian-sys-maint账户:

 

终端输入指令:mysql -u debian-sys-maint -p ,然后输入刚才查看的debian-sys-maint账户密码。 注意-u可以和debian-sysy连在一起,-p不能。u表示用户名,p表示密码。

 

3 进入mysql后重新设置root账号密码:

 

sql指令:

use mysql   (一定要写上这条语句,很多网上的解决方案缺少这条语句,导致后一条语句出现no database selected错误,这是因为有选择新创建的表所在的数据库)

UPDATE user SET authentication_string=PASSWORD(‘你的密码‘) where USER=‘root‘;

5.7之前的版本用:

update user set password=PASSWORD("你的密码") where User = ‘root‘;

指令的大小写都行,注意语句后面分号。

 

技术分享图片

 

退出mysql(sql指令:quit)并重启mysql(终端指令:sudo service mysql restart)

这时候用root账户和修改后的密码登入时(终端指令:mysql -uroot -p)会发现还是报错!这时候其实密码是修改成功的,但是plugin root 的字段是auth_socket,需要修改过来。

 

4 修改plugin root

 

查看plugin root

用debian-sys-maint账户和密码登入mysql,然后输入sql语句:

use mysql

select user,plugin from  user;

 

技术分享图片

 

修改plugin root

update user set authentication_string =password(‘你的密码‘),plugin=‘msyql_native_password‘ where user=‘root‘;

 

技术分享图片

 

然后推出并重启mysql,再用root账户登入就可以了。

 

技术分享图片

 

 总结:

1 这篇文章是遇到这个问题后查找网上资料整合而成的,网上关于这个问题的资料很多但是也有很多不足:比如指令不够详细,尤其是很多资料缺少使用mysql时需要use mysql这个指令的提示,这对小白用户不太友好。再一个,大部分相关文章缺少修改plugin root的部分,所以我折腾了很多遍修改密码但还是不成功。

2 很多时候问题的原因只是一个很小的错误,比如少一个分号,空格,复制密码吧后面的换行符也复制进去了等,所以,尽量减少操作失误。

3 遇到问题多分析反馈的错误原因

4 网上的资料很多,但终究是别人的,不一定能解决自己的问题(但可以提供解决问题思路),遇到问题多查找相关资料,找解决办法,这个过程可能很花费时间很烦人,但是也能拓展不少知识,最后总结理解就能成为自己的东西。






以上是关于Ubuntu下连接mysql出现 ERROR 1698 (28000): Access denied for user 'root'@'localhost'错误解决方法的主要内容,如果未能解决你的问题,请参考以下文章

在使用ubuntu16.04+python3.5 下使用pip3出现pip3 error - '_NamespacePath' object has no attribute '

ubuntu16.04下使用navicat连接docker mysql5.7.20

ubuntu mysql安装及需要其他主机连服务器mysql时的设置(error:10061)

解决Ubuntu系统下 mysql 远程连接失败的问题 ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xx

Ubuntu16安装mysql5.7未提示输入密码,安装后修改mysql密码默认密码

ubuntu16.04下mysql 配置