1. 程式人生 > >Navicat連線阿里雲(centos7.3)的MySQL資料庫遇到的問題及解決方法

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)"

2.  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; #重新整理許可權,完成

3.  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許可權

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

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