mysql 5.7小版本升级_升级MySQL 5.7版本遇到的一些小问题(转)

本文档记录了从MySQL 5.6到5.7小版本升级过程中遇到的问题,包括用户无密码、系统表字段错误以及无法登录等问题,并提供了详细的解决步骤,如更新用户密码、设置插件类型以及执行`mysql_upgrade`命令来修复系统表。
摘要由CSDN通过智能技术生成

在5.6版本服务器做备份

/usr/local/mysql/bin/mysqldump -S /tmp/mysql3306.sock -A -p --set-gtid-purged=OFF > backup_20160204.sql

在5.7版本服务器操作

mkdir -p /neworiental/data/mysql/mysql3307/{data,logs,relaylog,sock,tmp}

chown -R mysql:mysql /neworiental/data

初始化数据库

/usr/local/mysql/bin/mysqld --defaults-file=/neworiental/data/mysql/mysql3307/my3307.cnf  --initialize-insecure

恢复数据库(全量数据)

/usr/local/mysql/bin/mysql -S /neworiental/data/mysql/mysql3307/sock/mysql3307.sock -p 

查看所有用户没有密码!!!

select user,host,authentication_string,plugin from mysql.user;

修改密码

UPDATE mysql.user SET authentication_string=PASSWORD(‘password‘) WHERE User=‘root‘ and host=‘localhost‘;

FLUSH PRIVILEGES;

验证登入,登出,正常

重启之后,还是正常

只有日志有报错

2016-02-04T08:26:56.700344Z 0 [ERROR] Incorrect definition of table mysql.db: expected column ‘User‘ at position 2 to have type char(32), found type char(16).

2016-02-04T08:26:56.700391Z 0 [ERROR] mysql.user has no `Event_priv` column at position 28

2016-02-04T08:26:56.700574Z 0 [ERROR] Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.

进行数据库升级

/usr/local/mysql/bin/mysqld_safe --defaults-file=/neworiental/data/mysql/mysql3307/my3307.cnf --skip-grant-tables &

/usr/local/mysql/bin/mysql_upgrade --defaults-file=/neworiental/data/mysql/mysql3307/my3307.cnf -p --force

重启之后,日志正常了

问题语句:(5.7.10)

GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘localhost‘ IDENTIFIED BY  ‘password‘   WITH GRANT OPTION;

be2fd6304066f7457d55f75466f59b13.png

系统表字段已乱

916a5a186034ff1d4fc74daa4b2cc0a7.png

日志中记录 noboby can currently load!!!

38b948fcbcf051c69afa70b9c4acb3aa.png

无法登陆

dbb0a0f985f84cb30997c0cffe2b9329.png

无法停止

以下是解决办法:

1baba150a08e30fe1d86d95856242a64.png

解决办法:

UPDATE mysql.user SET authentication_string=PASSWORD(‘password‘) WHERE User=‘root‘ and host=‘localhost‘;

UPDATE mysql.user SET plugin=‘mysql_native_password‘  WHERE User=‘root‘ and host=‘localhost‘;

FLUSH PRIVILEGES;

1.已验证,此语句在5.6.28版本运行正常。(因为是源库,因为是一个版本,因为没有发生迁移)

2.无论是覆盖,还是新建,都不行  (版本问题,后面会说)

之前还残留两个5.7问题

1.恢复之后的数据库,mysql.user所有用户没有密码!!! (见结论)

2.使用全库恢复,会把‘mysql.sys‘@‘localhost‘覆盖,不知是否有影响?->必须有影响! (见结论)

结论&解决办法已验证

因为数据库版本问题,全库恢复之后,系统表会被覆盖,(变相的给降级了!!!)所以夸版本的情况,全库dump,恢复之后,必须做版本update,然后重启数据库!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值