mysql - 如何修复损坏的 xampp 'mysql.user' 表?

标签 mysql xampp

我昨天使用 Xampp 创建了一些简单的基于 Web 的实用工具。
今天我想继续研究它,但 xampp 控制面板给了我一些错误。

这是 MySQL 错误日志:

2019-07-20 23:47:13 0 [Note] InnoDB: Uses event mutexes
2019-07-20 23:47:13 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-07-20 23:47:13 0 [Note] InnoDB: Number of pools: 1
2019-07-20 23:47:13 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-07-20 23:47:13 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
2019-07-20 23:47:13 0 [Note] InnoDB: Completed initialization of buffer pool
2019-07-20 23:47:13 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=1819402
2019-07-20 23:47:14 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-07-20 23:47:14 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2019-07-20 23:47:14 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-07-20 23:47:14 0 [Note] InnoDB: Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-07-20 23:47:14 0 [Note] InnoDB: File 'C:\xampp\mysql\data\ibtmp1' size is now 12 MB.
2019-07-20 23:47:14 0 [Note] InnoDB: Waiting for purge to start
2019-07-20 23:47:14 0 [Note] InnoDB: 10.3.16 started; log sequence number 1819411; transaction id 257
2019-07-20 23:47:14 0 [Note] InnoDB: Loading buffer pool(s) from C:\xampp\mysql\data\ib_buffer_pool
2019-07-20 23:47:14 0 [Note] InnoDB: Buffer pool(s) load completed at 190720 23:47:14
2019-07-20 23:47:14 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-07-20 23:47:14 0 [Note] Server socket created on IP: '127.0.0.1'.

2019-07-20 23:47:14 0 [ERROR] mysqld.exe: Table '.\mysql\user' is marked as crashed and should be repaired

2019-07-20 23:47:14 0 [ERROR] mysqld.exe: Index for table '.\mysql\user' is corrupt; try to repair it

2019-07-20 23:47:14 0 [ERROR] Couldn't repair table: mysql.user

2019-07-20 23:47:14 0 [ERROR] Fatal error: Can't open and lock privilege tables: Index for table 'user' is corrupt; try to repair it

已经尝试修复,但mySQL服务甚至无法启动,所以我有点无助......

最佳答案

这几乎可以肯定是 mariaDB(即 mySQL)中的一个已知错误。见 ApacheFriends.org为说明。用户密码更改后出现问题 - 通常是 root 用户。

一般建议似乎是减少损失并将 XAMPP 降级到 7.3.5

否则,即使在完全卸载/重新安装 7.3.7 之后,该问题也可能会再次出现。

接下来是针对 Windows/XAMPP 用户的规避/修复。它假设您有一个备份 - 您可能会这样做。 (似乎安装过程提供了初始备份。)想法是让您重新开始播放,而无需降级足够长的时间以供下一个版本到来。

走出沼泽的最快方法就是进入第 9 步。

(1) 找到“my.ini”(例如 c:\xampp\mysql\bin\my.ini )
(2) 在标签“[mysqld]”后面的新行中插入“skip-grant-tables”。 稍后删除它。
(3) 现在可以从 XAMPP 控制面板启动 mySQL。
(4) 从浏览器启动 phpMyAdmin 并从数据库 'mysql' 中选择表 'user'
(5) 应该看到:#1034 表 'user' 的索引已损坏;尝试修复它。
(6) 从左侧面板中选择“mysql”,然后在右侧面板中选中“user”。
(7) 从'With selected' 下拉菜单中运行'analyze',然后运行'repair table'。
(8) 如果“修复”失败别无选择,只能“删除表用户”....

(9) 通过复制以下 3 个文件,从分发备份重新创建“用户”表。

C:\xampp\mysql\backup\mysql\user.frm 
C:\xampp\mysql\backup\mysql\user.MYD
C:\xampp\mysql\backup\mysql\user.MYI


C:\xampp\mysql\data\mysql\

然后重新启动 XAMPP 并根据需要添加/删除/编辑用户。

最后一点:“用户”和“数据库”表之间似乎存在某种关联。您可能需要按照步骤 (7) 修复“db”表。

关于mysql - 如何修复损坏的 xampp 'mysql.user' 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58513174/

相关文章:

php - Preg_match 的语法

mysql - 没有子查询的查询?数据库

Mysql 选择日期和可能的情况

php - 无法从 PHP 连接到 SQL Server

javascript - 如何根据解析用户命令字符串为 HTML 元素着色

MYSQL 无法启动 - 在 Xampp 上使用 Xibo

php - zoneinfo:新的 right 和 posix 区域名称前缀是什么?

java - java 13.0.1、mysql 5.7 我应该选择哪个版本的 Connector/J?

mysql - 文件未显示在 htdocs 中

xampp - Moodle 安装返回空白页