You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB崩溃恢复后用户权限丢失及备份报错求助

解决MariaDB崩溃后的权限丢失与表报错问题

一、恢复root权限及用户权限

  1. 停止MariaDB服务
    systemctl stop mariadb
    # 若用sysvinit则执行 service mariadb stop
    
  2. 启动服务并跳过权限验证
    mysqld_safe --skip-grant-tables &
    
  3. 无密码登录数据库
    mysql -u root
    
  4. 刷新权限表,重置root密码(按需操作)
    FLUSH PRIVILEGES;
    -- 新版本MariaDB用这句
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    -- 旧版本用这句
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');
    
  5. 恢复用户权限
    • 若之前有mysql库备份,直接导入:
      source /path/to/你的mysql库备份文件.sql;
      
    • 无备份则手动重建用户:
      -- 创建用户示例
      CREATE USER '原用户名'@'原主机标识' IDENTIFIED BY '用户密码';
      -- 赋予权限示例(根据实际需求调整)
      GRANT ALL PRIVILEGES ON 数据库名.* TO '原用户名'@'原主机标识';
      FLUSH PRIVILEGES;
      
  6. 重启MariaDB服务
    systemctl restart mariadb
    

二、修复Table 'crmidentiq.tblactivity_log' doesn't exist in engine报错

1. 检查表物理文件

进入MariaDB数据目录(默认/var/lib/mysql/),查看crmidentiq文件夹下是否有tblactivity_log相关文件(InnoDB为.frm+.ibd,MyISAM为.frm+.MYD+.MYI)。

2. 针对不同存储引擎处理

  • InnoDB表:
    • 若有单表备份,直接恢复;无备份则执行:
      -- 移除损坏表的元数据(谨慎操作,数据无法恢复)
      DROP TABLE IF EXISTS crmidentiq.tblactivity_log;
      
    • 若尝试找回ibd文件,可先执行ALTER TABLE crmidentiq.tblactivity_log DISCARD TABLESPACE;,再将备份的ibd文件放回对应目录,执行ALTER TABLE crmidentiq.tblactivity_log IMPORT TABLESPACE;(成功率较低)
  • MyISAM表:
    用myisamchk工具修复:
    myisamchk /var/lib/mysql/crmidentiq/tblactivity_log.MYI
    

3. 临时跳过损坏表完成备份

如果暂时不需要备份该表,执行:

mysqldump -u root -p --all-databases --ignore-table=crmidentiq.tblactivity_log > mydb.sql

内容的提问来源于stack exchange,提问作者Germano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:15:27