天天看點

Navicat連接配接阿裡雲(centos7.3)的MySQL資料庫遇到的問題及解決方法

注:本文涉及到的解決方案都是我遇到的問題的對應解決方案,不一定适用于每一個人,如果問題仍然存在,請繼續百度查詢其他解決方法

  1. 首先是登入阿裡雲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連接配接阿裡雲(centos7.3)的MySQL資料庫遇到的問題及解決方法
Navicat連接配接阿裡雲(centos7.3)的MySQL資料庫遇到的問題及解決方法
  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; #重新整理權限,完成

  1. 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權限

        再次嘗試登入,錯誤解決。

  1. 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'; #修改使用者密碼