1. 程式人生 > >Ubuntu下連接mysql出現 ERROR 1698 (28000): Access denied for user 'root'@'localhost'錯誤解決方法

Ubuntu下連接mysql出現 ERROR 1698 (28000): Access denied for user 'root'@'localhost'錯誤解決方法

use ces 數據 表示 vim amp https 創建 sel

ubuntu版本:18.04 mysql版本:5.7.24

技術分享圖片

ubuntu安裝mysql後用root賬戶登入會出現問題:ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘

可能是因為初始密碼為空;按空格回車後還是報一樣的錯

這樣就只能使用debian-sys-maint賬戶修改root賬戶密碼了。

debian-sys-maint賬戶是安裝mysql時系統自動生成的mysql用戶,debian和ubuntu系統都會這樣做,

停止或重啟服務都靠它,刪除它就無法重啟或者雷霆之服務。
如果你修改了它的密碼或覆蓋掉密碼,也會出現錯誤:
error: ‘Access denied for user ‘debian-sys-maint‘@‘localhost‘ (using password: YES)‘

1 查看debian-sys-maint賬戶密碼:

debian-sys-maint賬戶是安裝mysql時系統自動生成的,密碼隨機生成。

終端輸入: sudo vim /etc/mysql/debian.cnf


技術分享圖片

password就是密碼,如果是復制密碼由後面使用,切忌不要將密碼字符串後面的空格也復制進去,否者後面粘貼密碼登入賬戶時會出現錯誤。

2 用剛才查看的密碼登入debian-sys-maint賬戶:

終端輸入指令:mysql -u debian-sys-maint -p ,然後輸入剛才查看的debian-sys-maint賬戶密碼。 註意-u可以和debian-sysy連在一起,-p不能。u表示用戶名,p表示密碼。

3 進入mysql後重新設置root賬號密碼:

sql指令:

use mysql (一定要寫上這條語句,很多網上的解決方案缺少這條語句,導致後一條語句出現no database selected錯誤,這是因為有選擇新創建的表所在的數據庫)

UPDATE user SET authentication_string=PASSWORD(‘你的密碼‘) where USER=‘root‘;

5.7之前的版本用:

update user set password=PASSWORD("你的密碼") where User = ‘root‘;

指令的大小寫都行,註意語句後面分號。

技術分享圖片

退出mysql(sql指令:quit)並重啟mysql(終端指令:sudo service mysql restart)

這時候用root賬戶和修改後的密碼登入時(終端指令:mysql -uroot -p)會發現還是報錯!這時候其實密碼是修改成功的,但是plugin root 的字段是auth_socket,需要修改過來。

4 修改plugin root

查看plugin root

用debian-sys-maint賬戶和密碼登入mysql,然後輸入sql語句:

use mysql

select user,plugin from user;

技術分享圖片

修改plugin root

update user set authentication_string =password(‘你的密碼‘),plugin=‘msyql_native_password‘ where user=‘root‘;

技術分享圖片

然後推出並重啟mysql,再用root賬戶登入就可以了。

技術分享圖片

總結:

1 這篇文章是遇到這個問題後查找網上資料整合而成的,網上關於這個問題的資料很多但是也有很多不足:比如指令不夠詳細,尤其是很多資料缺少使用mysql時需要use mysql這個指令的提示,這對小白用戶不太友好。再一個,大部分相關文章缺少修改plugin root的部分,所以我折騰了很多遍修改密碼但還是不成功。

2 很多時候問題的原因只是一個很小的錯誤,比如少一個分號,空格,復制密碼吧後面的換行符也復制進去了等,所以,盡量減少操作失誤。

3 遇到問題多分析反饋的錯誤原因

4 網上的資料很多,但終究是別人的,不一定能解決自己的問題(但可以提供解決問題思路),遇到問題多查找相關資料,找解決辦法,這個過程可能很花費時間很煩人,但是也能拓展不少知識,最後總結理解就能成為自己的東西。

Ubuntu下連接mysql出現 ERROR 1698 (28000): Access denied for user 'root'@'localhost'錯誤解決方法