BACK
Featured image of post 【MySQL】1251 Error 的解決方式

【MySQL】1251 Error 的解決方式

在使用比較新版本的 MySQL 時,明明輸入了正確的密碼還是出現 1251 Error 錯誤,每次遇到這個問題總是要 Google 一次太麻煩了,直接紀錄此問題的解決方式。

參考網站
參考網站
參考網站

在使用比較新版本的 MySQL 時,明明輸入了正確的密碼還是出現 1251 Error 錯誤訊息如下:

Client does not support authentication protocol requested by server. Consider upgrading MySQL client

每次遇到這個問題總是要 Google 一次太麻煩了,直接紀錄此問題的解決方式。


問題描述

使用 Navicat 客戶端連接本地 MySQL,報錯:1251 - Client does not support authentication protocol requested by server. Consider upgrading MySQL client

問題的主要原因是因為 MySQL 8 之前的版本中,加密規則是 mysql_native_password,而在 MySQL 8 之後,加密規則是 caching_sha2_password,加密算法變了,有些 Client 工具沒有更新而導致。


解決方式

解決方式有兩種:

  1. 升級 navicat 驅動。
  2. 把 MySQL 使用者登入的密碼加密規則還原成 mysql_native_password

這邊採用第 2 種方法解決,具體操作步驟如下:

  1. 打開命令列 Terminal,進入 MySQL 的 bin 目錄,輸入如下登入 MySQL:
1
2
3
mysql -u root -p

# 輸入密碼後成功登入
  1. 執行 SQL 查詢使用者資訊:
1
SELECT host, user, plugin, authentication_string FROM mysql.user;

備註:host 為 % 表示不限制 IP;localhost表示本機使用;plugin 非 mysql_native_password 則需要修改密碼。

  1. 修改密碼:

在命令行輸入如下命令,修改密碼。

1
2
3
4
5
-- 更新 root 帳號,host 為 % 的密碼為 123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
 
-- 更新 root 帳號,host 為 localhost 的密碼為 123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

或者:

1
2
3
4
5
6
7
8
-- 修改加密規則
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

-- 更新一下使用者的密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

-- 刷新權限
FLUSH PRIVILEGES;
  1. 再次查詢使用者資訊:

  1. 重新使用 Navicat 連接 MySQL,連接成功。


Licensed under CC BY-NC-SA 4.0
comments powered by Disqus