• 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

  • 相关阅读:
    CleanMyMac X2024讲解及如何下载?
    万字详解:MySql,Redis,Mq,ES的高可用方案解析
    第四十八章 开发自定义标签 - 在action中使用csr标签
    《设计模式》适配器模式
    深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
    书签收集管理软件悬浮阅读和知识库与浏览器书签之间的数据迁移
    antlr4例子步骤
    Spark和Hadoop的区别和比较
    TCP端口崩溃,msg:socket(): Too many open files
    若依 ruoyi 路径 地址 # 井号去除
  • 原文地址:https://blog.csdn.net/shawn0wang/article/details/134451064