伺服器使用mysql -u root -p報錯解決

伺服器使用mysql -u root -p報錯解決ERROR 1698 (28000): Access denied for user 『root』@『localhost』

經過搜尋,發現可能是以下原因:預設情況下, root使用者將使用auth_socket外掛身份驗證方法,而不是密碼。 要設定root使用者使用密碼連接到MySQL例項,需要將身份驗證方法從auth_socket更改為mysql_native_password方法。
所以可以採用以下步驟解決:

1.切換到root下

1
su root

2.利用mysql自帶的使用者debian-sys-maint進行重置密碼,衹有Debian或Ubuntu伺服器才有,存在於**/etc/mysql/debian.cnf**檔案中

3.開啟/etc/mysql/目錄下的debian.cnf檔案,裡面包括使用者名稱和密碼
sudo vim /etc/mysql/debian.cnf(按Esc,然後輸入『:』+『q』退出)

4.使用檔案中提供的使用者名稱和密碼進入mysql

1
mysql -u debian-sys-maint -p

5.選擇mysql資料庫

1
use mysql;

6.輸入SELECT user,authentication_string,plugin,host FROM mysql.user;檢查每個MySQL使用者使用哪種身份驗證方法

7.執行ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';(密碼設定的例如123456)

8.然後就可以使用mysql -u root -p,輸入123456進入資料庫

然後正常使用就可以了