我已经安装了Debian 和MySQL8.0的新安装(尚未对配置进行任何更改)。当我尝试创建一个新用户时:
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz';
我得到了以下信息:
错误1726 (HY000):存储引擎'MyISAM‘不支持系统表。mysql.db
对这个问题有什么建议吗?
谢谢
发布于 2019-04-24 21:01:36
正如@Mae在下面建议的那样,请确保在执行这些步骤之前停止服务器。
正如@Sarel建议的那样,这个解决方案执行了我在下面所做的所有步骤,但是采用了MySQL方式,这可能是最安全的。
mysqld --upgrade=FORCE
服务器升级数据字典、性能架构和INFORMATION_SCHEMA
谢谢,萨雷尔!
我上一篇用于历史使用的文章:
我在没有考虑的情况下将DB备份还原到我的新的dev MySQL 8系统中,并覆盖了MySQL数据库表。这并不是很难修复,但只是花了一点黑客对它进行了一段时间,这是什么修复了它。
alter table mysql.db ENGINE=InnoDB;
alter table mysql.columns_priv ENGINE=InnoDB;
在那之后,我能够创建一个没有问题的用户。
钥匙在错误信息中。
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.db]
所以我知道是mysql.db,它是MyISAM,需要成为其他的东西,所以我就把它改成了InnoDB。
希望这能帮到别人!
如果您的MySQL数据库是错误的类型将工作或其他选择将是初始化您的db
mysqld --initialize
这一切都会重现的。如果您可以在这样做之前转储SQL,那么总是最好的。
发布于 2021-03-02 17:31:25
不要运行alter来强制它将mysql.db更改为innodb。您将得到一个不同的错误,例如“无法从mysql.db加载。该表可能已损坏”。如果你这样做了,下面也会解决这个问题。
我从5.7恢复了一个转储到一个新的8.0服务器,然后出现了这个问题。
要修复它,请停止mysql服务,然后运行以下命令,使mysql 8升级内部模式:
mysqld --upgrade=FORCE
您可以查看日志以查看其进度,以及是否有任何错误。
发布于 2019-01-21 15:23:57
您也许应该考虑离开MyISAM。InnoDB是MySQL中的默认引擎,从5.6开始,MySQL 8.0将是最后一个对它的支持有限的版本。
您可以阅读这篇Percona博客文章中的详细信息
https://stackoverflow.com/questions/54292491
复制相似问题