mysql - 重启后无法在 mysql db 上创建用户或授予权限
问题描述
我有一个在 ubuntu 服务器上运行的 mysql 数据库。原来是v5.7,后来升级到8.0.23版本。我最近重新启动了我的 ubuntu 服务器,现在我似乎无法创建用户或授予权限。我有一个示例,我尝试在下面创建两个测试用户,但我不断收到与 MyISAM 相关的错误。有谁知道问题可能是什么,您能建议如何解决吗?
mysql> create user 'testuser1'@'%%' identified by 'test1';
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.user]
我尝试了这篇文章中的建议:
如何修复 ERROR 1726 (HY000):存储引擎“MyISAM”不支持系统表。在 CREATE USER 之后的 Mysql 8.0
mysql> alter table mysql.db ENGINE=InnoDB;
Query OK, 7 rows affected (0.10 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> alter table mysql.columns_priv ENGINE=InnoDB;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
但它似乎没有解决它
mysql> create user 'test' identified by 'test';
ERROR 1726 (HY000): Storage engine 'MyISAM' does not support system tables. [mysql.user]
解决方案
我遇到过同样的问题。
对我有用的是停止 MySQL 服务。
service mysqld stop
然后运行以下命令以强制升级模式。
mysqld --upgrade=FORCE
然后再次启动 MySQL 服务。
service mysqld start
之后一切都开始正常工作。
推荐阅读
- spring-boot - 与注释关联的签名
- java - 我的代码中有一个语法错误,我找不到它:Java。任何人都可以看到吗?
- python - 如何格式化它,以便在 python 中没有空格
- python - 蟒蛇 | 发出 GET 请求 JSON 文件时出现 KeyError 'totalResults'
- pine-script - 在 calc_on_order_fills = true 和 calc_on_every_tick = true 时,策略未在 Open、High、Low、Close 上执行
- git - 如何从远程存储库中删除文件夹
- mysql - 组织大量列和数据的更好方法?
- python - 过滤掉一个数据框
- c++ - 余数除法有问题,不允许被零除(c++)
- javascript - 如何仅使用变量名访问变量并使用函数调用语法为同一变量设置值?