MariaDB崩溃恢复后用户权限丢失及备份报错求助
解决MariaDB崩溃后的权限丢失与表报错问题
一、恢复root权限及用户权限
- 停止MariaDB服务
systemctl stop mariadb # 若用sysvinit则执行 service mariadb stop - 启动服务并跳过权限验证
mysqld_safe --skip-grant-tables & - 无密码登录数据库
mysql -u root - 刷新权限表,重置root密码(按需操作)
FLUSH PRIVILEGES; -- 新版本MariaDB用这句 ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; -- 旧版本用这句 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码'); - 恢复用户权限
- 若之前有mysql库备份,直接导入:
source /path/to/你的mysql库备份文件.sql; - 无备份则手动重建用户:
-- 创建用户示例 CREATE USER '原用户名'@'原主机标识' IDENTIFIED BY '用户密码'; -- 赋予权限示例(根据实际需求调整) GRANT ALL PRIVILEGES ON 数据库名.* TO '原用户名'@'原主机标识'; FLUSH PRIVILEGES;
- 若之前有mysql库备份,直接导入:
- 重启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
相关产品推荐
相关产品推荐

