降级后无法启动mysql,无法运行mysql_upgrade,无法更改root密码

时间:2016-08-02 17:01:22

标签: mysql

我将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]

有什么建议吗?感谢

2 个答案:

答案 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 DowngradePerforming a Logical Downgrade

注意我的粗体。您唯一支持的选项是使用mysqldump提取数据库副本,然后将其导入旧版本。希望你有一些备份!

答案 1 :(得分:0)

我试图进行就地降级而不是逻辑降级。

我能够恢复5.7.14组件,并尝试进行逻辑降级的操作。

但是,由于this更改了用户表结构,因此也无效。最终,我必须在降级,恢复,使用skip-grant-tables选项启动服务之后修改mysql.user表,然后重新创建表,重新添加我的用户,并重新授予权限。这是一个有趣的一天。