mysql - 从 mariadb 迁移到 mysql 5.7 产生了密码重置和列数问题

标签 mysql linux database

我们从我的 fedora 机器上卸载 mariadb 并安装 mysql 5.7 社区服务器,安装后一切正常,但我们在不知不觉中运行 mysql_upgrade --force -uUser -p。

现在我无法对我的数据库做任何事情。请帮助,出现以下错误。

mysql> 使用 mysql; ERROR 1820 (HY000):在执行此语句之前,您必须使用 ALTER USER 语句重置密码。

mysql> SET PASSWORD = PASSWORD('root'); ERROR 1805 (HY000): mysql.user 的列数错误。预期 45,发现 46。表可能已损坏

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'secret'; ERROR 1805 (HY000): mysql.user 的列数错误。预期 45,发现 46。表可能已损坏

最佳答案

我遇到了同样的问题。
我就是这样解决的。

    service mysql stop
    mysqld --skip-grant-tables &
    mysql
    # Delete the extra column
    ALTER TABLE mysql.user DROP COLUMN is_role;
    # Update your password
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
    flush privileges;
    quit

现在,您可以运行命令mysql_upgrade -uroot -p 来升级您的数据库。
完成这些后,重新启动您的 mysql 服务器进程回到正常模式。
问题解决了。

关于mysql - 从 mariadb 迁移到 mysql 5.7 产生了密码重置和列数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49891152/

相关文章:

php - 触发器不更新

php - INSERT 语句中的 GROUP_CONCAT

linux - 运行一个应用程序时启动授权对话框

mysql - 每天数百万新行的数据库架构

mysql - Tecdoc 数据库查询以显示某个类别的产品

android - 我应该使用什么IP地址来连接MySQL和Android设备

php - 使用相关表收集 1 行信息

linux - debian redis update-rc.d 错误 - redis 和 nginx 之间存在循环

linux - 如何包含 OpenCL 库以生成独立应用程序?

php - 将数据库数据放在多维数组中