1. 程式人生 > >記一次踩坑:使用Navicat連線Mysql8.0.11

記一次踩坑:使用Navicat連線Mysql8.0.11

  MySQL8.0正式版8.0.11已釋出,官方表示MySQL8要比MySQL5.7塊兩倍,同事還帶來了大量的改進和更快的效能!

  從MySQL5.7升級到MySQL8.0僅支援通過使用in-place方式進行升級,並且不支援從MySQL8.0降級到MySQL5.7(或從某個MySQL版本降級到任意一個更早的MySQL8.0的版本)。唯一受支援的替代方案是在升級之前對資料進行備份。

  但是在使用Navicat連線MySQL8.0的時候經常會遇到一個問題:

client does not support authentication protocol requested by server; consider upgrading MySQL client
  這是因為root賬戶為預設的密碼加密方式是:caching_sha2_password;而現在很多客戶端工具還不支援這種加密認證方式,連線測試的時候就會報錯這裡的錯誤資訊就是不支援身份認證方式。

  既然客戶端工具還不支援這種加密認證方式,那我們可以通過修改加密方式來達到連線資料庫的效果。

  因為一般MySQL在安裝的時候(windows)都會讓使用者設定root賬戶的密碼。那麼我們要做的第一步就是將root賬戶的密碼設定為空,讓我們可以直接一下命令登入。

mysql -u root -p

第一步:清空root使用者的密碼

  1、停止mysql服務,window下可以直接在服務中停止,linux系統中需要使用如下命令(具體按使用者自己安裝的mysql目錄為準):

/etc/init.d/mysqld stop

  2、跳過密碼驗證(mysqld_safe在mysql安裝目錄的bin目錄下):

mysqld_safe –skip-grant-tables

  3、另起一個控制檯,將MySQL的root使用者密碼置為空:

mysql

use mysql;

update user set authentication_string=” where user=’root’;

  4、退出後,重啟MySQL資料庫(將mysqld_safe –skip-grant-tables命令視窗關閉):

第二步:修改MySQL8.0密碼加密方式

  1、使用控制檯登入MySQL(因為之前沒設定密碼,所以密碼為空,不用輸入密碼,直接回車即可):

bin>mysql -u root -p

Enter password:

  2、查詢使用者密碼:

mysql> select host,user,authentication_string from mysql.user;

host: 允許使用者登入的ip‘位置’%表示可以遠端;

user:當前資料庫的使用者名稱;

authentication_string: 使用者密碼(後面有提到此欄位);

  3、更改mysql加密方式:

mysql>ALTER USER ‘root’@’%’ IDENTIFIED BY ‘password’ PASSWORD EXPIRE NEVER;

mysql>ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘pwd12345’;

mysql>FLUSH PRIVILEGES;