在上一篇博文中,寫了關於怎么解決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