Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复损坏的xampp“mysql.user”表?_Mysql_Xampp - Fatal编程技术网

如何修复损坏的xampp“mysql.user”表?

如何修复损坏的xampp“mysql.user”表?,mysql,xampp,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:

昨天我使用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服务甚至无法启动,所以我有点无能为力……

这几乎可以肯定是Mariie mySQL中的一个已知错误。有关说明,请参见。用户密码更改后出现问题-通常是用户根用户

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

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

下面是针对Windows/XAMPP用户的规避/修复。它假设您有一个备份—您可能会这样做。安装过程似乎提供了初始备份。这样做的目的是让你们在不降级的情况下重播,以备下次发布

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

我找到'my.ini'例如c:\xampp\mysql\bin\my.ini 2在标签“[mysqld]”后面的新行中插入“跳过授权表”。请稍后删除此项。 3现在可以从XAMPP控制面板启动mySQL。 4从浏览器启动phpMyAdmin并从数据库“mysql”中选择表“user” 5应该看到:表“user”的1034索引已损坏;试着修理它。 6从左侧面板中选择“mysql”,然后在右侧面板中选中“用户”。 7从“选择”下拉列表中运行“分析”,然后运行“修复表”。 8如果“修复”失败,则别无选择,只能“删除表用户”

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

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

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


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

使用下面的命令,您会像我现在一样高兴

repair table DATABASENAME.TABLENAME use_frm;
我相信您知道,在运行此命令之前,您应该使用存储首选项和备份更改大写字母,不是吗

资料来源:David Malekahmadi

只需使用

REPAIR TABLE mysql.user
运行以下两个查询:

CHECK TABLE `users`

对损坏的表运行以下查询

REPAIR TABLE `users`
和/或

REPAIR TABLE `db`

我在XAMPP 7.3.16版中也遇到了这个“bozo”错误,所以我肯定不会很快升级。我使用SQLYog来管理我的数据库,因此我能够修复错误-mysql.db中列出的特定表。我不知道它的命令行版本是什么,但下面是我在SQLYog中选中的选项的屏幕截图:

这对我很合适

首先从phpmyadmin仪表板导航到SQL查询 复制下面的代码粘贴并执行


第一步。在XAMPP安装目录中,找到\phpMyAdmin\libraries\

第二步。在上面的文件夹中,找到这个文件>check_user_privileges.inc.php

第三步。在您选择的代码编辑器中打开上述文件,并找到第28行 $checkUserPrivileges->analyseShowGrant

第四步。删除行号28并添加以下代码:

$GLOBALS['is_create_db_priv'] = true;
$GLOBALS['is_reload_priv'] = true;
$GLOBALS['db_to_create'] = '';
$GLOBALS['dbs_where_create_table_allowed'] = array('*');
$GLOBALS['dbs_to_test'] = false;
$GLOBALS['db_priv'] = true;
$GLOBALS['col_priv'] = true;
$GLOBALS['table_priv'] = true;
$GLOBALS['proc_priv'] = true;
第五步。保存文件并重新启动XAMPP。

最简单的方法

检查损坏的表,然后选择/单击修复表

试试这个,我希望它能起作用


您可能必须至少删除mysql.user表,然后重新创建它,以克服此错误。如果您不关心整个数据库,那么删除和初始化整个数据库可能会更快。好吧,这是一个全新的东西,我甚至可以在不运行SQL server的情况下初始化数据库吗?您是Windows吗?如果是,上次升级是什么时候?您是在添加用户,还是在发生故障时更改密码?@aytimothy anywhere接受您的DDL和DML sql代码,并且您可以实际执行更改,如PHPmyadmin或DBeaver等。这对我来说非常有用,但我很好奇到底出了什么问题以及如何解决此错误?@DeepakKeynes很高兴您修复了它,当我当时面对同样的问题时,我记得事情突然发生了,我的表实际上是一个WordPress表,我管理了很多网站,没有一个网站有过类似的情况,但我有根据地猜测,所有的数据库都是聪明的文件管理器,硬提交、大更新或频繁读取都有可能使数据库失去对事务历史的跟踪,并使一个表被撤消,当您调用该表时,它会变成80%ok,通过这个命令,你要求mysql清理它的混乱。命令行版本:REPAIR TABLE db EXTENDED USE\u FRMbest低估了答案这很有效!在执行此操作之前,我结束了从控制台运行mysql并跳过授权表的过程。mysqld-console-skip grant tables-skip external locking它对我很有吸引力,但我很好奇到底出了什么问题,以及这个错误是如何解决的?@SidPro Happy coding:工作得很有魅力!在我的例子中,.\mysql\db'已损坏,正在复制。\backup\mysql
\db.MAI文件到。\data\mysql\db.MAI为我修复了它。虽然您可能需要复制另外两个文件,db.frm和db.MAD,但这在我的情况下不是必需的,尽管在Xampp v3.2.4上对我不起作用,但这对我很有效。或者访问[然后单击SQL选项卡,在不使用方括号的情况下运行此查询[REPAIR TABLE user]谢谢,这真的很有帮助,而且很管用……小菜一碟。谢谢。
REPAIR TABLE `db`
repair table DATABASENAME.TABLENAME use_frm;
$GLOBALS['is_create_db_priv'] = true;
$GLOBALS['is_reload_priv'] = true;
$GLOBALS['db_to_create'] = '';
$GLOBALS['dbs_where_create_table_allowed'] = array('*');
$GLOBALS['dbs_to_test'] = false;
$GLOBALS['db_priv'] = true;
$GLOBALS['col_priv'] = true;
$GLOBALS['table_priv'] = true;
$GLOBALS['proc_priv'] = true;