在OpenShift V3上启动mysql部署时,我遇到以下异常:
mysql.user table is damaged. Please run mysql_upgrade
我无法运行mysql_upgrade
因为pod尚未准备就绪。
我有以下问题
答案 0 :(得分:1)
如果pod无法启动,您可以将包含数据的卷装入另一个pod并下载(oc rsync
,interactive tutorial here)您在{{{ 1}}。然后,您可以尝试从中恢复数据。
通常,如果您在较新的MySQL版本上处理较旧的数据库转储/var/lib/mysql/data/
脚本(使用sql
创建),则可能会发生这种情况。在这种情况下,mysqldump
用户也可能从表中删除(如果它不在旧数据库中)。如果您创建了这样的转储,仍然有旧的转储,并且"足够好" ,您应该能够按照以下步骤再次导入原始数据并防止这种情况:
root
创建先前创建的数据库转储的备份副本,这样如果事情向南,您可以随时返回它。mysqldump
文件并删除操作sql
表的所有内容;也就是说,删除mysql.user
和-- Table structure for table 'user'
部分下的行并保存修改后的文件。我假设您在MySQL部署配置中已在环境变量中指定了您的用户和密码。-- Dumping data for table 'user'
将步骤2中创建的修改后的sql
转储文件(即不影响mysql.user
表的文件)复制到数据库窗格。oc rsync
在应用程序数据库上为您的用户授予所有权限(适当地替换GRANT ALL PRIVILEGES ON <database> TO '<mysql_user>'@'%'
和<database>
。)<mysql_user>
。