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

(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 并根据需要添加/删除/编辑用户。

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

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

相关文章:

mysql - 通过计算sql中其他列的SUM差值将值插入到第三列

mysql - 尝试导入数据库时​​程序中断

mysql - 我的 SQL 查询没有优化,看起来也不错,请看一下

php - MYSQL 8.0 与 PHP 5.6 的连接

php - 尝试从命令行运行 cURL(xampp/windows 环境)

mysql - 无法在 XAMPP 中启动 MySQL?

php - 单选按钮值未存储在数据库中

c# - BCrypt 根据数据库中的密码验证密码

mysql - 使用sts、maven、mysql和tomcat创建本地环境

php - 更改 php.ini 中的 max_upload_filesize 但在 phpMyAdmin 中保持不变