• mysql数据库中mysql database 数据被破坏产生的一系列问题


    在执行sql脚本时,没有注意到sql脚本文件包含了对mysql 原始数据库的操作,执行了脚本。
    脚本执行成功之后,登录或链接数据库查看数据时报错:

    The user specified as a definer (‘mysql.infoschema’@‘localhost’) does not exist.
    
    • 1

    解决问题思路一:(无效)
    登录到mysql数据库发现,执行 show databases 时报如上错误。
    既然提示在localhost 上缺少 mysql.infoschema用户,那就创建一个:

    create user 'mysql.infoschema'@'localhost' identified by '123456';
    
    • 1

    但是执行此命令时,会报错:

    Storage engine 'MyISAM' does not support system tables. [mysql.user]
    
    • 1

    后来又尝试更改engine类型,继续创建用户,依然不行,此方法行不通。

    解决问题思路二:(无效)
    尝试删除mysql database; 从其他备份的数据库中把mysql 复制过来。

    drop database mysql;
    
    • 1

    无法删除mysql,mysql下的某些表无法拒绝访问。

    解决问题思路三:(亲测可用)
    最终通过强制更新mysql数据库解决,通过强制更新能够修复mysql中的表关系。
    更新过程中没有提示,不知道什么时候更新完,我是过了二十分钟才重新启动的服务。
    问题玩美解决。
    最佳方案,不必重装,原始数据都在,只是修复了mysql 库中的表关系,以及用户信息等。

    net stop mysql;
    mysqld --upgrade=FORCE;
    net start mysql;
    
    • 1
    • 2
    • 3

    之所以执行sql脚本是为了用mycat 实现分库分表,附上mycat 相关命令:
    安装mycat前需要先安装jdk和mysql。mycat1.6版本建议使用的jdk是1.7以上版本,mysql建议使用5.6版本(我这里使用是MySQL8)。

    安装完jdk和mysql后,进入mycat解压目录下的bin目录。

    在打开的cmd命令行窗口中,执行如下命令安装mycat(注意需要管理员账户登录,如果不是请使用管理员身份运行cmd打开命令行窗口,执行如下指令会提示报错):
    mycat.bat install

    可以使用如下命令启动mycat服务
    mycat.bat start

    启动后可以通过如下命令查看mycat的运行状态:
    mycat.bat status

    可以使用如下命令停止mycat服务
    mycat.bat stop

  • 相关阅读:
    提高工程效率的快部署方案
    【paddle】Vision Transformer(attention)
    JAVA+MySQL 图书馆借阅信息管理系统
    java计算机毕业设计基于安卓的城市公交查询小程序 uniapp
    python淘宝商品数据抓取之后数据解析出错怎么办
    phpstudy2016 RCE漏洞验证
    【计算机网络】IP协议(下)
    flink双流join结果数据重复问题排查
    mysql中的各种日志文件redo log、undo log和binlog
    再创佳绩!移远通信RG500U-EA 5G模组获得全球首个紫光展锐V510平台GCF 认证
  • 原文地址:https://blog.csdn.net/shawn0wang/article/details/134451064