注:本文涉及到的解決方案都是我遇到的問題的對應解決方案,不一定适用于每一個人,如果問題仍然存在,請繼續百度查詢其他解決方法
- 首先是登入阿裡雲MySQL的一些必要資訊(登入其他雲主機的mysql同理):
使用ssh的方式連接配接到linux,具體連接配接參數的填寫見下圖
注意:網上很多教程寫的連接配接方式中“主機名或IP位址”一欄寫的都是公網ip,我實際使用中用公網ip連接配接始終報錯,顯示錯誤:2013-Lost connection to MySQL server at "waiting for initial communication packet", systemerror:0 "Internet error/check(Not system error)"

- Navicat報錯2059:authentication plugin 'caching_sha2_password........
錯誤原因:mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password,在mysql驗證密碼時出現了該錯誤
解決方法:把mysql使用者登入密碼加密規則還原成mysql_native_password(在登入mysql後,運作如下指令)
use mysql;
SELECT User,Host FROM mysql.user;
# 觀察表結構,找到需要修改的使用者,如修改root使用者
ALTER USER 'root'@'%' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER; #修改加密規則 ,'12345678'為對應使用者的登入密碼
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; #更新一下使用者的密碼
FLUSH PRIVILEGES; #重新整理權限,完成
- Navicat報錯1130: ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server
錯誤原因:被連接配接的資料不允許使用 公網ip 通路,隻允許是用 localhost;
解決方法:首先嘗試在mysql資料庫的連接配接參數中的“主機名或ip”一欄中使用localhost登入
不行的話,使用改表法。首先使用“mysql -u root -p”指令登入mysql,然後運作如下mysql指令:
use mysql;
update user set host = '%' where user = 'root' and host='localhost';
FLUSH PRIVILEGES; #重新整理mysql權限
再次嘗試登入,錯誤解決。
- mysql報錯:ERROR 1819 (HY000):Your password does not satisfy the current policy requirements
錯誤原因:新版本的mysql中預設安裝了validate_password插件,該插件會檢查mysql的使用者密碼強度,強度工分為三個等級:以下是官方解釋:
LOW policy tests password length only. Passwords must be at least 8 characters long. To change this length, modify validate_password_length.
MEDIUM policy adds the conditions that passwords must contain at least 1 numeric character, 1 lowercase character, 1 uppercase character, and 1 special (nonalphanumeric) character. To change these values, modify validate_password_number_count, validate_password_mixed_case_count, andvalidate_password_special_char_count.
STRONG policy adds the condition that password substrings of length 4 or longer must not match words in the dictionary file, if one has been specified. To specify the dictionary file, modifyvalidate_password_dictionary_file.
總結:最低安全等級隻校驗密碼長度(至少8位),中等必須包含至少一個數字,一個大寫字母,一個小寫字母,一個特殊字元(預設安全等級,官方示例:MyNewPass4!),想設定強力級密碼的想必能看懂原文,就不翻譯了
此外,從MySQL 5.7.15開始,validate_password支援拒絕與目前會話的有效使用者帳戶的使用者名部分比對的密碼(正向或反向)。為了提供對此功能的控制,validate_password公開了一個validate_password_check_user_name系統變量,該變量預設啟用。
提前說明:在設定mysql的全局變量時,官方示例給出的全局變量名為validate_password_policy,而我在實際運作中發現set global validate_password.policy=0;無法正常執行,隻能用set global validate_password.policy=0;,大家在實際操作中如果發現其中一個不能正常執行,請換用另一個。
解決方法:在mysql指令行中運作如下指令:
set global validate_password.policy=0; #設定安全等級為LOW(最低級)
set global validate_password.length=5; #設定最低密碼長度為5(預設為8)
ALTER USER 'root'@'%' IDENTIFIED BY 'abc'; #修改使用者密碼