mysql出现ERROR1698(28000):Access denied for user root@localhost错误解决方法
泛域名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 -u root -p,应该就可以进入数据库了。
第4步:
如果此时还是报出错误如下
mysql -u root -p
Enter password:
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded
那么就需要返回第3步中,把注释掉的那条语句重新生效(就是删除#符号),重新进入mysql中,先选择一个数据库(use mysql;),然后输入select user,plugin from 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用户的字段改成功了。如下图:
最后quit退出。返回执行第3步。
那么这个问题就完全解决了。