当前位置:首页 > mysql > 正文内容

mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法

关中浪子3年前 (2022-02-09)mysql1246
买泛域名SSL证书 送5斤装现摘猕猴桃一箱、同时提供技开源商城搭建免费技术支持。
泛域名ssl证书 239元1年送1个月、单域名39元1年,Sectigo(原Comodo证书)全球可信证书,强大的兼容性,高度安全性,如有问题7天内可退、可开发票
加微信VX 18718058521 备注SSL证书
【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价

出现如下错误:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'


解决方法:


第1步:

在Ubuntu终端输入如下命令


sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf


进入到mysqld.cnf配置文件,然后在这个配置文件中的[mysqld]这一块中加入skip-grant-tables这句话。


[mysqld]

#

# * Basic Settings

#

user            = mysql

pid-file        = /var/run/mysqld/mysqld.pid

socket          = /var/run/mysqld/mysqld.sock

port            = 3306

basedir        = /usr

datadir        = /var/lib/mysql

tmpdir          = /tmp

lc-messages-dir = /usr/share/mysql

skip-external-locking

skip-grant-tables




作用:就是让你可以不用密码登录进去MySQL。


保存:wq,退出。



输入如下命令:


service mysql restart


重新启动MySQL。如下图:




第2步:

在Ubuntu终端上输入


mysql -u root -p


遇见输入密码的提示直接回车即可,进入MySQL后,分别执行下面三句话:


 use mysql;  #然后回车


mysql> select user, plugin from mysql.user;
+-----------+-----------------------+
| user      | plugin                |
+-----------+-----------------------+
| root      | auth_socket           |
| mysql.sys | mysql_native_password |
| dev       | mysql_native_password |
+-----------+-----------------------+
3 rows in set (0.01 sec)


mysql> update mysql.user set authentication_string='123456', plugin='mysql_native_password' where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


 flush privileges;  #然后回车




然后输入quit,退出MySQL


第3步:

重新进入到mysqld.cnf文件中去把刚开始加的skip-grant-tables这条语句给注释掉。如下图:

MySQL提示ERROR 1698 (28000): Access denied for user



再返回终端输入mysql -u root -p,应该就可以进入数据库了。


第4步:

如果此时还是报出错误如下


mysql -u root -p

Enter password: 

ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded



MySQL提示ERROR 1698 (28000): Access denied for user

那么就需要返回第3步中,把注释掉的那条语句重新生效(就是删除#符号),重新进入mysql中,先选择一个数据库(use mysql;),然后输入select user,plugin from user;,看下图:


MySQL提示ERROR 1698 (28000): Access denied for user


从图中可以看到在执行了select user,plugin from user;后,错误原因是因为plugin root的字段是auth_socket,那我们改掉它为下面的mysql_native_password就行了。输入:


update user set authentication_string=password("linuxidc"),plugin='mysql_native_password' where user='root';


然后回车执行以下,再输入select user,plugin from user;回车,我们能看到root用户的字段改成功了。如下图:


MySQL提示ERROR 1698 (28000): Access denied for user


最后quit退出。返回执行第3步。


那么这个问题就完全解决了。


找梯子最重要的就是稳定,这个已经上线三年了,一直稳定没有被封过,赶紧下载备用吧!

扫描二维码推送至手机访问。

版权声明:本文由码农翻生发布,如需转载请注明出处。

本文链接:https://lubojian.cn/post/101.html

分享给朋友:

相关文章

创建mysql 数据库命令 指定编码

GBK:create database   test  DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;UTF8:CREATE DATABASE test&nb...

DBeaver  mysql   Public Key Retrieval is not allowed

DBeaver mysql Public Key Retrieval is not allowed

@[TOC]DBeaver连接mysql时Public Key Retrieval is not allowed错误解决附图片问题Public Key Retrieval is not allowed解决在新建连接的时候,驱动属性里设置 a...

You must configure either the server or JDBC driver (via the serverTimezone configuration property)

错误提示:Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception i...

mysql 获取当前日期 当前周 当前月 当前年

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 0 DAY);  //获取当前周所在的周一select date_sub('2017-08-28',I...

mysql 8.0 和 mysql5.7配置文件修改sql_mode的方法

MySQL5.7:在MySQL配置文件中 my.ini    在[mysqld]标签里新增或修改:sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION重启MySQL。...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。