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;

 

posted @ 2022-07-14 10:37  我爱睡莲  阅读(172)  评论(0编辑  收藏  举报