use*_*337 7 createuser mysql-8.0
我安装了Debian Stretch和新安装的Mysql 8.0(配置还没有变化)。当我尝试使用以下内容创建新用户时:
mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'xyz';
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
错误 1726 (HY000):存储引擎“MyISAM”不支持系统表。[mysql.db]
关于问题可能是什么的任何建议?
谢谢
Sarel 建议了这个解决方案,它执行我在下面所做的所有步骤,但它可能是最安全的 MySQL 方式。
mysqld --upgrade=FORCE
Run Code Online (Sandbox Code Playgroud)
https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_upgrade
服务器升级数据字典、Performance Schema 和 INFORMATION_SCHEMA
谢谢,@Sarel!
我以前的历史用途的帖子:
我不假思索地将数据库备份恢复到我的新开发 MySQL 8 系统中,并覆盖了 MySQL 数据库表。修复它并不难,只是花了一段时间对其进行了一些黑客攻击,这就是修复它的原因。
alter table mysql.db ENGINE=InnoDB;
alter table mysql.columns_priv ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
在那之后,我能够毫无问题地创建一个用户。
关键在错误消息中。
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.db]
Run Code Online (Sandbox Code Playgroud)
所以我知道它是 MyISAM 的 mysql.db 并且需要是其他东西,所以我只是将其更改为 InnoDB。
希望对某人有所帮助!
如果你的 MySQL 数据库是错误的类型,或者另一种选择是初始化你的数据库
mysqld --initialize
Run Code Online (Sandbox Code Playgroud)
那将重新创建这一切。如果您可以在执行此操作之前转储 SQL,那总是最好的。
不要运行 alter table 来强制其将 mysql.db 更改为 innodb。您最终会遇到不同的错误,例如“无法从 mysql.db 加载”。该表可能已损坏”。如果您确实这样做了,以下内容也将解决该问题。
我将 5.7 的转储恢复到新的 8.0 服务器中,然后遇到了这个问题。
要修复此问题,请停止 mysql 服务,然后运行以下命令以使 mysql 8 升级内部架构:
mysqld --upgrade=FORCE
Run Code Online (Sandbox Code Playgroud)
您可以查看日志以了解其进度以及是否有任何错误。
在全新安装 MySQl 8.0 然后重新加载旧的(v 5.7)转储文件后,我遇到了同样的问题。解决方案是删除并重新安装 MySQL,这次从 5.7 MySQL 创建了一个新的转储文件,其中仅包含我自己的表(不包括系统表),并将它们导入到 v 8.0 MySQL 中。一切都完美无缺。
| 归档时间: |
|
| 查看次数: |
18143 次 |
| 最近记录: |