親愛的小伙伴,是不是你在登錄自己的mysql數(shù)據(jù)庫的時候,出現(xiàn)了標(biāo)題所示的錯誤的提示呢?不要慌張,不要著急,因為作為一個親身經(jīng)歷者,不瞞你們說當(dāng)時我也是慌得一批。不過還好,在查了一堆的資料后,終于將它解決了。接下來我就將我的解決辦法分享給大家,希望對當(dāng)前的你有所幫助,嘻嘻。
一、繞過mysql密碼檢查機制,忽略權(quán)限表,設(shè)置無需密碼直接登錄
1.在你的終端中輸入以下指令進入mysql的相關(guān)配置目錄中
cd /etc/mysql/mysql.conf.d
?此時,可以通過“l(fā)s” 指令查看目錄中有哪些文件,如果你看到下圖箭頭所指的mysqld.cnf文件的話,恭喜你,找到它了。
?2.使用vi對mysqld.cnf文件進行編輯,輸入以下指令
vi mysqld.cnf
?3.找到箭頭所指的?[mysqld]
4.按下 i 指令進入編輯模式,在[mysqld]的下邊添加上?skip-grant-tables忽略權(quán)限表
5. 先按ESC鍵退出編輯模式,然后輸入 :wq 指令保存并退出
6. 重啟mysql服務(wù),輸入如下指令
service mysql restart
?7. 現(xiàn)在就可以免密登錄mysql數(shù)據(jù)庫了,輸入如下指令,不用輸入密碼,然后直接按下回車鍵,你會發(fā)現(xiàn),你的mysql可以免密登錄了
mysql -u root -p
?
?二、修復(fù)工作開始
接下來將會分為兩種情況
情況一:你只是忘記了自己的數(shù)據(jù)庫密碼,而導(dǎo)致的登錄失敗,那么只需要重新設(shè)置密碼即可。
情況二:你的root用戶被刪除了,那么就需要從新創(chuàng)建root用戶,再為其設(shè)置密碼。
之前我就是root用戶被刪除了,然后我一直去修改密碼,結(jié)果發(fā)現(xiàn)根本沒有用,最后不經(jīng)意間查了一下user表才發(fā)現(xiàn)里邊沒有root用戶,突然之間才恍然大悟,哈哈!
在你選擇解決方案之前,我建議你先查看自己的root用戶是否還存在,再進行相關(guān)操作
1.依次輸入以下指令,查看自己的root用戶是否存在
use mysql;
select user from user;
看看你的user表中是否有root用戶
情況一:root用戶存在
這就說明你只是忘記了你的mysql數(shù)據(jù)庫密碼了,那么這時候,就只需要輸入以下指令,從新設(shè)置你的mysql數(shù)據(jù)庫密碼就好了
update user set authentication_string=password('你的新密碼') where user='root';
?情況二:root用戶不存在
?那么,這個時候就需要你從新創(chuàng)建你的root用戶,并為其設(shè)置密碼了
1.創(chuàng)建root用戶
create user 'root'@'localhost' identified by '你的密碼';
可能它會報如下錯誤,如果不報錯,那就直接跳到給root用戶賦予權(quán)限那一步
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
?那么你可以執(zhí)行如下語句
flush privileges;
然后再次創(chuàng)建用戶
create user 'root'@'localhost' identified by '你的密碼';
如果它還是報錯,執(zhí)行如下代碼;如果不報錯,那就直接跳到給root用戶賦予權(quán)限那一步
drop user 'root'@'localhost';
再次創(chuàng)建用戶
create user 'root'@'localhost' identified by '你的密碼';
結(jié)果它沒保存,那么創(chuàng)建root用戶就成功了!
2.為root用戶賦予操作所有表的權(quán)限
1.執(zhí)行如下語句,為root用戶賦予操作所有表的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
2.刷新后退出mysql
flush privileges;
exit;
3.去取之前在配置文件中添加的?skip-grant-tables,重啟mysql服務(wù),即可使用密碼登陸成功
1.使用vi編輯器,編輯mysqld.cnf配置文件
vi mysqld.cnf
2.使用 i 指令進入編輯模式,將添加的skip-grant-tables 刪除掉后,保存并退出
按下ESC鍵退出編輯模式,使用 :wq指令保存并退出
3.重啟mysql服務(wù)
service mysql restart
?4.重新登錄mysql,此時輸入如下指令,然后輸入你的密碼后,即可成功登錄你的mysql數(shù)據(jù)庫了文章來源:http://www.zghlxwxcb.cn/news/detail-675659.html
mysql -u root -p
4.?如果使用navicat連接你的mysql數(shù)據(jù)庫的時候出現(xiàn)2059錯誤,那么你只需要登錄mysql,執(zhí)行以下指令即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-675659.html
use mysql;
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
到了這里,關(guān)于ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!