ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)最终解决方案

在上一篇博文中,写了关于怎么解决ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES问题的暂时解决方法,当时是弄了很久没有弄出来,所以没有先暂时跳过密码验证完成了了数据库的查询,今天来说说自己是怎么具体解决这个问题的。

首先出现这个问题是密码出了问题,我们需要跳过密码验证进入mysql进行修改密码

1.跳过密码验证进入mysql

sudo vim /etc/mysql/mysql.conf.d/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
character_set_server=utf8

skip-external-locking

skip-grant-tables

保存后重启mysql

service mysql restart

接着输入

mysql -u root -p

输入你安装mysql时的密码

输入"show databases;"查看数据库

在mysql数据库有一个user表,存储的是数据库用户的信息,我们需要修改的里面用户的密码;

输入use mysql;是要使用mysql数据库的意思

接着输入show tables;查看mysql数据库下面有哪些表

可以看到里面有user这个表,现在可以查询一下里面有什么信息

发现里面有很多东西,可惜很乱,但是仔细看你可以看到鼠标选中的部分,看上图authentication_string就是密码列

在很多网上的博客中都写修改密码要用password=password("123456");我试了一下不对,会提示user表中没有这一列,可能是mysql之前的版本是password,现在改成了authentication_string.

现在输入update user set authentication_string=password("yourNewPassword") where User='root';(数据库更新语句哈)

然后输入mysql> exit;退出mysql界面

回到第一步,将密码输入跳过设置删除

找到[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
character_set_server=utf8

skip-external-locking

保存后就可以输入service mysql restart,重启mysql.

接着输入mysql -u root -p,回车输入密码就不会在出错了

(0)

相关推荐