公司伺服器近期將mysql全部從之前的5.7 公升級到了新的8.0版本,但是遇到了好多的坑,近期吭哧吭哧的改了兩個禮拜的儲存過程了,全部都是血淚啊。
下面說說幾個大坑
1. mysql 8.0 使用其他客戶端登陸的許可權問題,登陸時一直提示
error 2059 (hy000): authentication plugin 'caching_sha2_password' cannot be loaded: õò²»µ½ö¸¶¨µä䣿顣
mysql 8.0 預設使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。
從 5.7 公升級 8.0 版本的不會改變現有使用者的身份驗證方法,但新使用者會預設使用新的 caching_sha2_password 。
客戶端不支援新的加密方式。
方法之一,修改使用者的密碼和加密方式
alter user 'root'@'localhost' identified with mysql_native_password by 'root';
mysql8.*的新特性 caching_sha2_password 密碼加密方式
以前版本的mysql密碼加密使用的是 mysql_native_password
新新增的使用者密碼預設使用的 caching_sha2_password
如果在以前mysql基礎上公升級的 就得使用者使用的密碼加密使用的是 mysql_native_password
如果使用以前的密碼加密方式,就修改檔案 /etc/my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password
access denied for user 'root'@'ip位址'
1、mysql -u root -p 登陸進mysql;
2、執行以下命令:
grant all privileges on *.* to 'your name'@'%' identified by 'your password' with grant option;
flush privileges;
3、exit;
3. 在格式化日期插入資料時經常提示錯誤 「-」,在之前5.7版本如下的規範格式是沒問題的, 但是8.0不行。
str_to_date(b.mdleqp_prop,'%y.%m')+1 as md_date
最後的解決辦法是如下
date_add(str_to_date((concat(if(b.mdleqp_prop="-",null,b.mdleqp_prop),'.01')),'%y.%m.%d'),interval 0 day) as md_date
4. 在update a表 join 子查詢b表時,5.7也是沒問題的, 速度非常快,但是到了8.0版本上,速度簡直如蝸牛一般,a表大概是180萬資料,b錶子查詢出來的結果是5萬的結果,兩個互相匹配,乙個小時還沒有更新完成,
用explain 看了下 update 的時候type 是all, key是空,
最後的解決辦法是把子查詢做成了臨時表,並加上了索引,之後在update這個臨時表 速度瞬間快多了。
mysql8 0提示命令 MySQL8 0操作命令
mysql8.0版本和mysql5.0的加密規則不一樣,而現在的很多任務具等都是不支援的,我們這裡使用的是將mysql使用者登入的加密規則修改為mysql native password的方法來進行解決的。修改加密規則alter user root localhost identified by p...
MySQL8 0登陸問題
一 忽略密碼 mysql出現error1698 28000 access denied for user root localhost錯誤解決方法 在ubuntu的terminal 也即終端 上輸入sudo vim etc mysql mysql.conf.d mysqld.cnf,進入到這個配置檔...
MySQL8 0修改密碼問題
mysql5.7和之前的使用者修改密碼方式 mysql uroot e set password password 123 mysql uroot p123.com e use mysql update user set authentication string password 456 wher...