首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openshift 3 mysql.user表损坏。请运行mysql_upgrade openshift

问Openshift 3 mysql.user表损坏。请运行mysql_upgrade openshift
EN

Stack Overflow用户
提问于 2017-10-19 11:48:48
回答 1查看 276关注 0票数 0

问题

在OpenShift V3上启动mysql部署时,我会得到以下异常:

代码语言:javascript
复制
mysql.user table is damaged. Please run mysql_upgrade

我不能运行mysql_upgrade,因为pod还没有准备好。

问题

我有以下问题

  • 我怎么才能解决这个,或者
  • 我如何备份数据?
EN

回答 1

Stack Overflow用户

发布于 2017-10-19 15:01:51

如果吊舱无法启动,您可以使用数据将卷挂载到另一个吊舱,并下载(oc rsync,这里的交互式教程)您在/var/lib/mysql/data/下安装在数据库pod中的内容。然后,您可以尝试从其中恢复数据。

通常,如果您在较新的sql版本上处理旧的数据库转储sql脚本(使用mysqldump创建),则可能会发生这种情况。在这种情况下,root用户也可能被从表中删除(如果不在旧数据库中的话)。如果您创建了这样一个转储,仍然有旧的转储,并且它“足够好”,您应该能够按照以下步骤再次导入原始数据并防止这种情况:

  1. 创建以前使用mysqldump从旧的MySQL数据库版本创建的数据库转储的备份副本,这样,如果情况恶化,始终可以返回数据库转储。
  2. 编辑数据库转储sql文件并删除操作mysql.user表的所有内容;也就是说,删除-- Table structure for table 'user'和-- Dumping data for table 'user'部分下的行并保存修改后的文件。我假设您在环境变量中、在MySQL部署配置中指定了用户和密码)。
  3. 将数据库荚缩小到0副本。
  4. 删除mysql持久卷声明;这将删除您希望在将卷挂载到另一个pod后下载的数据库,如前所述。
  5. 用同样的名字重新创建PVC。
  6. 把你的MySQL吊舱放大到一个副本。这将初始化数据库,并根据环境变量创建用户。
  7. 使用sql将步骤2中创建的修改后的mysql.user转储文件(即不影响mysql.user表的文件)复制到数据库荚中。
  8. 在MySQL pod中,按照本迁移指南(步骤6)的要求,使用上传的文件恢复数据库。
  9. 通过GRANT ALL PRIVILEGES ON <database> TO '<mysql_user>'@'%'将所有权限授予应用程序数据库上的用户(适当替换<database>和<mysql_user> )。
  10. 退出荚上的MySQL CLI,并在shell中运行mysql_upgrade -u root。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46829192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档