關鍵詞:mysql8無法用navicat連接,navicat無法連接mysql8,mysql8,mysql8的加密方式
【1】mysql8 的坑 密碼加密規則
在MySQL 8.0.以上版本中,caching_sha2_password是默認的身份驗證插件,而不是以往的mysql_native_password。
有關此更改對服務器操作的影響以及服務器與客戶端和連接器的兼容性的信息,請參閱caching_sha2_password作為首選的身份驗證插件。
(翻譯自https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html)
#如果您還沒有配置,那么在配置文件中可以修改,修改配置文件並重啟Mysql服務后,新建的用戶就可以遠程連接了。但現有用戶仍然無法遠程連接
[mysqld]
# 默認使用 mysql_native_password 插件認證
default_authentication_plugin=mysql_native_password
【2】遠程無法連接
問題:創建好用戶后,用windows系統本地開發環境 的 Navicatmysql 連接數據庫, 提示密碼錯誤。
后來查到是加密方式問題。
解決辦法
(1)推薦使用
-- 如果是現有用戶
alter user '用戶名'@localhost IDENTIFIED WITH mysql_native_password by '你的密碼';
改為5.X 版本的 mysql_native_password , 但沒有重新改用戶密碼,導致代碼一直連接不上, 用 mysql_native_password 再更改一次密碼搞定。
-- 如果是新建用戶
create user 'root'@'%' identified with mysql_native_password by '你的密碼'
【3】5.X版本與8.X版本的創建用戶方式
5.X 版本添加用戶和授權可以同時進行: grant select,delete,insert,update on dbname.* to username@‘localhost’ identified by ‘password’; 一句話搞定。
8.X 版本要先 創建用戶, 再grant
create user username identified by ‘password’; (坑在這里,默認密碼加密方式跟5不一樣了 )
grant select,delete,insert,update on username@‘localhost’;