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,回車輸入密碼就不會在出錯了

原文鏈接:https://blog.csdn.net/someby/article/details/79881204


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM