mysql主庫用戶密碼登陸失敗從庫正常

問題描述:有業務反饋稱數據庫上的用戶有的可以登陸,有的不能登錄,是不是集羣有問題。怎麼會有這麼奇怪的問題,是不是最大連接數達到限制了。

環境:keepalived+mysql 5.7.37主從

 

登錄數據庫發現連接正常,測試登錄,確實存在部分用戶可以登錄,部分用戶登錄失敗的問題,主庫IP以及VIP連接失敗,但是從庫卻可以登錄。在數據庫上新建一個用戶也不影響連接。

 

 

VIP連接失敗

 

 

主庫連接失敗

 

 

從庫連接成功

 

 

 

嘗試修改用戶密碼,重新連接,還是同樣

mysql> alter user psd_platform@'%' identified with mysql_native_password by 'Longshine#1';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

 

重建用戶 測試連接,還是連接失敗。但是新建一個用戶在分配同樣的權限就沒有問題

mysql> drop user psd_platform@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> create user psd_platform@'%' identified by 'Longshine#1' with max_user_connections 140;
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on psd_platform.* to psd_platform@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

 

  

查看此時的用戶狀態,顯示賬號沒有鎖定

mysql> select * from mysql.user where user='psd_platform'\G
*************************** 1. row ***************************
                  Host: %
                  User: psd_platform
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: N
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 140
                plugin: mysql_native_password
 authentication_string: *EC5019C6AE0F5C827BEEA4193D621F2076844729
      password_expired: N
 password_last_changed: 2022-07-13 14:56:18
     password_lifetime: NULL
        account_locked: N
1 row in set (0.00 sec)

 

 

突然想起來,爲什麼主庫登錄和VIP登陸失敗,但是備庫可以登錄成功,因爲所有的連接都是通過VIP去連接主庫的。有可能這個用戶輸入被主庫拉黑了。之前部署過插件,connection_control_failed_login_attempts插件,密碼輸入錯誤延遲登錄的插件,當你輸入錯誤超過幾次就會延遲你用戶的登錄。

 

 

查看最小的延遲登陸時間達到了半個小時,所以在半個小時之後,該用戶自動解鎖,但是這種插件方式並不會讓用戶以account_lock的方式鎖定用戶,所以在查看mysql.user表的時候,看不出來是否被鎖定。

 

 

查看相關記錄表,連接輸錯的連接信息 information_schema.connection_control_failed_login_attempts表會記錄發起連接的IP信息

 

有幾個用戶都存在問題,判斷業務端在發起數據庫連接的密碼沒有寫對,被插件延遲登陸,最後給插件暫時卸載

 

mysql> uninstall plugin connection_control;

mysql> uninstall plugin connection_control_failed_login_attempts;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章