轉自:https://yq.aliyun.com/articles/665962
1、建立連接
2、配置連接信息
可能遇到的一些錯誤
1、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; #刷新權限,完成
2、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權限
再次嘗試登錄,錯誤解決。
3、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'; #修改用戶密碼