我将mysql服务器从5.7.14降级到5.6.32。
在这样做之后,根据我遇到的指示,我认为我应该运行mysql_upgrade。
但是,要这样做,我需要提供root用户/ p,我有。但是,当我尝试这样做时,似乎并没有接受这些:
mysql_upgrade -u root -p
输入密码:
寻找' mysql' as:mysql
寻找' mysqlcheck' as:mysqlcheck
错误:获取服务器版本时失败!可能是由于未经授权的访问。
致命错误:升级失败
所以我试图通过创建一个类似于以下内容的init文件来重置密码: 设置密码' root' @' localhost' =密码(' abcd1234'); 然后用mysqld_safe调用它--init-file = / home / root / mysql-init&
但这似乎不起作用,大概是因为mysql无法正确启动并引发错误。
0802 12:50:45 mysqld_safe使用/ var / lib / mysql中的数据库启动mysqld守护程序
2016-08-02 12:50:46 0 [警告]具有隐式DEFAULT值的TIMESTAMP为
2016-08-02 12:50:46 0 [注意] / usr / sbin / mysqld(mysqld 5.6.32)从流程2635开始......
2016-08-02 12:50:46 2635 [注意]插件' FEDERATED'被禁用。
/ usr / sbin / mysqld:未知的存储引擎' InnoDB'
2016-08-02 12:50:46 2635 [错误]无法打开mysql.plugin表。请运行mysql_upgrade来创建它。
2016-08-02 12:50:46 2635 [注意] InnoDB:使用atomics来重新计算缓冲池页面
2016-08-02 12:50:46 2635 [注意] InnoDB:禁用InnoDB内存堆
2016-08-02 12:50:46 2635 [注意] InnoDB:Mutexes和rw_locks使用GCC原子内置
2016-08-02 12:50:46 2635 [注意] InnoDB:未使用内存屏障
2016-08-02 12:50:46 2635 [注意] InnoDB:压缩表使用zlib 1.2.3
2016-08-02 12:50:46 2635 [注意] InnoDB:使用Linux原生AIO
2016-08-02 12:50:46 2635 [注意] InnoDB:使用CPU crc32指令
2016-08-02 12:50:46 2635 [注意] InnoDB:初始化缓冲池,大小= 128.0M
2016-08-02 12:50:46 2635 [注意] InnoDB:完成缓冲池的初始化
2016-08-02 12:50:46 2635 [注意] InnoDB:最支持的文件格式是Barracuda。
2016-08-02 12:50:46 2635 [注意] InnoDB:日志序列号2512357和
ibdata文件中的2512357与$
中的日志序列号2512396不匹配2016-08-02 12:50:46 2635 [注意] InnoDB:数据库没有正常关机!
2016-08-02 12:50:46 2635 [注意] InnoDB:开始崩溃恢复。
2016-08-02 12:50:46 2635 [注意] InnoDB:从.ibd文件中读取表空间信息......
2016-08-02 12:50:46 2635 [注意] InnoDB:恢复可能的半写数据页
2016-08-02 12:50:46 2635 [注意] InnoDB:来自doublewrite缓冲区......
InnoDB:SYS_INDEXES记录中的列数错误
InnoDB:SYS_INDEXES记录中的列数错误
InnoDB:SYS_INDEXES记录中的列数错误
InnoDB:SYS_INDEXES记录中的列数错误
InnoDB:SYS_INDEXES记录中的列数错误 17:50:46 UTC - mysqld收到信号11;
这似乎让我处于循环中,我无法运行mysql_upgrade来升级数据库,但我无法成功重置root密码(虽然我99.9%肯定我&我#39;有正确的root密码,它似乎没有接受它。)
堆栈跟踪..
线程指针:0x0 试图回溯。您可以使用以下信息查找 mysqld去世的地方。如果你在此之后没有看到任何消 非常错误......
stack_bottom = 0 thread_stack 0x40000
/ usr / sbin目录/ mysqld的(my_print_stacktrace + 0x35)[0x8e2375]
/ usr / sbin目录/ mysqld的(handle_fatal_signal + 0x494)[0x666da4]
/lib64/libpthread.so.0 [0x398620f790]
/ usr / sbin目录/ mysqld的[0xac1017]
/ usr / sbin目录/ mysqld的[0xac25fd]
/ usr / sbin目录/ mysqld的[0xa3de77]
/ usr / sbin目录/ mysqld的[0x9822dd]
/ usr / sbin目录/ mysqld的(_Z24ha_initialize_handlertonP13st_plugin_int + 0x48)[0x5aa958]
/ usr / sbin目录/ mysqld的[0x6f01e1]
/ usr / sbin目录/ mysqld的(_Z11plugin_initPiPPci + 0xbb6)[0x6f4046]
/ usr / sbin目录/ mysqld的[0x59ce38]
/ usr / sbin目录/ mysqld的(_Z11mysqld_mainiPPc + 0x425)[0x5a2055]
/lib64/libc.so.6(__ libc_start_main + 0xfd)[0x3985e1ed5d]
/ usr / sbin目录/ mysqld的[0x593ba5]
有什么建议吗?感谢
答案 0 :(得分:0)
你遇到的指示是错误的。唯一重要的说明是那些from MySQL:
支持的降级方法包括:
就地降级:涉及关闭新的MySQL版本,用旧版本替换新的MySQL二进制文件或软件包,并在现有数据目录上重新启动旧的MySQL版本。 同一版本系列中GA版本之间的降级支持就地降级。例如,降级从5.7.10降至5.7.9支持就地降级。
逻辑降级:涉及使用
mysqldump
转储新MySQL版本中的所有表,然后将转储文件加载到旧的MySQL版本中。 同一版本系列中GA版本之间的降级以及版本级别之间的降级都支持降级逻辑降级。例如,降级逻辑降级从5.7.10降至5.7.9,降级支持降级5.7到5.6。有关程序,请参阅Performing an In-place Downgrade和Performing a Logical Downgrade。
注意我的粗体。您唯一支持的选项是使用mysqldump
提取数据库副本,然后将其导入旧版本。希望你有一些备份!
答案 1 :(得分:0)
我试图进行就地降级而不是逻辑降级。
我能够恢复5.7.14组件,并尝试进行逻辑降级的操作。
但是,由于this更改了用户表结构,因此也无效。最终,我必须在降级,恢复,使用skip-grant-tables选项启动服务之后修改mysql.user表,然后重新创建表,重新添加我的用户,并重新授予权限。这是一个有趣的一天。