• mysql故障归纳


    2019-06-21

    • 错误描述:mysql主从同步错误代码1008。
    # 前一天在主库上建立了daxia数据库,然后立马就删除了,导致从库并没有同步完成,然后再去执行binlog中删除的操作时,找不到daxia数据库,所以导致同步中断。
    # 在从库上查看同步状态,如下
    MySQL [(none)]> show slave status G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 172.16.1.80
                      Master_User: tongbu
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000008
              Read_Master_Log_Pos: 153538609
                   Relay_Log_File: mysql2-relay-bin.000013
                    Relay_Log_Pos: 117201315
            Relay_Master_Log_File: mysql-bin.000007
                 Slave_IO_Running: Yes
                Slave_SQL_Running: No
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: 
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 1008
                       Last_Error: Error 'Can't drop database 'daxia'; database doesn't exist' on query. Default database: 'daxia'. Query: 'DROP DATABASE `daxia`'
    
    • 原因及解决办法:在从库执行,将同步指针移动到下一指令就可以,跳过这个错误。
    MySQL [(none)]> stop slave;
    MySQL [(none)]> set global sql_slave_skip_counter = 1;
    MySQL [(none)]> start slave;
    

    2019-08-18

    • 错误描述:刚搭建完mysql的环境,使用初始化的默认密码登入后,输入任何命令都会提示如下:
    MySQL [(none)]>use mysql;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    MySQL [(none)]>show databases;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    
    • 原因及解决办法:其实已经提示的很清楚了:在执行语句之前,必须要使用ALTER USER重置密码,那就重置呗。
    MySQL [(none)]>alter user user() identified by '123456';
    Query OK, 0 rows affected (0.00 sec)
    MySQL [(none)]>show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.00 sec)
    

    2021-03-02

    • 错误描述:授权时提示“ERROR 1221 (HY000)”
    mysql> grant reload on cat.* to 'backup'@'172.16.%';
    ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
    
    • 原因及解决办法:有些权限是针对全局授权的,不能单独对某个库或者表。
    mysql> grant reload on *.* to 'backup'@'172.16.%';
    Query OK, 0 rows affected (0.00 sec)
    

    2021-03-05

    • 错误描述:授权时提示“1819 - Your password does not satisfy the current policy requirements”
    mysql> GRANT SELECT ON *.* TO 'liuxx'@'172.16.1.11' IDENTIFIED by 'EarluweT';
    1819 - Your password does not satisfy the current policy requirements
    
    • 原因及解决办法:应该是设置的密码不符合mysql密码策略的要求。
    # 首先看看密码长度要求。
    mysql> show variables like 'validate_password_length';
    +--------------------------+-------+
    | Variable_name            | Value |
    +--------------------------+-------+
    | validate_password_length | 8     |
    +--------------------------+-------+
    1 row in set (0.00 sec)
    # 再看看密码的策略等级,其等级解释如下:
    ## 0 or LOW:Length        
    ## 1 or MEDIUM:Length; numeric, lowercase/uppercase, and special characters                             
    ## 2 or STRONGLength:numeric, lowercase/uppercase, and special characters; dictionary file
    mysql> show variables like 'validate_password_policy';
    +--------------------------+--------+
    | Variable_name            | Value  |
    +--------------------------+--------+
    | validate_password_policy | MEDIUM |
    +--------------------------+--------+
    # 此时看来可能是我们的密码不符合策略要求,修改为LOW,使其只验证密码的长度就可以。
    mysql> set global validate_password_policy = 'LOW';
    Query OK, 0 rows affected (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

    2021-03-22

    • 错误描述:root用户远程连接授权时报错。
    > 1044 - Access denied for user 'root'@'x.x.x.x' to database 'test'
    
    • 原因及解决办法:应该是没有开启root远程的grant_priv权限。
    root@localhost 21:05:21 [(none)]> select user,host,grant_priv from mysql.user where user = 'root';
    +------+---------------+------------+
    | user | host          | grant_priv |
    +------+---------------+------------+
    | root | localhost     | Y          |
    | root | x.x.x.x       | N          |
    +------+---------------+------------+
    2 rows in set (0.00 sec)
    # 可以看到x.x.x.x并未授权为Y,update下就好了
    root@localhost 21:09:39 [(none)]> update mysql.user set grant_priv = 'Y' where user = 'root' and host = 'x.x.x.x'
    root@localhost 21:12:19 [(none)]> flush privileges;
    # Navicat的话,关闭mysql连接,再重新打开,就可以进行远程授权了。
    


  • 相关阅读:
    ubuntu下如何更改mysql数据存放路径
    collection_select
    发现星期六日的电视比较好看
    rails
    系统抢救10.04
    劫后重生,痛定思痛,ubuntu 10.04=>10.10
    随机查询N条记录
    which linux your like
    kindeditor的使用
    array
  • 原文地址:https://www.cnblogs.com/ccbloom/p/11063264.html
Copyright © 2020-2023  润新知