MySQL5.6到8.0的账号迁移

Posted 我的二狗呢

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL5.6到8.0的账号迁移相关的知识,希望对你有一定的参考价值。

最近有套测试数据库需要从5.6迁移到8.x,用的是逻辑备份迁移方式。

试了下pt-show-grants,发现它导出的账号授权语句在8.x里面不再那么好用了。因为8.x下用户和授权被拆分成了create user和grant 这2个步骤。


工具不好直接搞,我们还可以用sql拼接下。


1 获取待迁移的账号列表

SELECT CONCAT(create user ",USER,"@",HOST,"; )  
FROM mysql.user
where user
not in (root,mysql.infoschema,mysql.session,mysql.sys)
;

2 获取到授权语句

# 只提取出grant sql,过滤掉创建账号的语句
pt-show-grants -uroot -pxxxxx | egrep -v IDENTIFIED BY PASSWORD | egrep -v -- Grants > grants.sql


3 获取批量刷新权限的sql

select concat(update mysql.user set authentication_string=", password," ,where user=,"",user," and host=","",host,"",; )  
from mysql.user
where user
not in (root,mysql.infoschema,mysql.session,mysql.sys)
;


4 在MySQL8.x执行

将上面几步获取到的结果,在8.x的MySQL上执行,注意最后要 flush privileges; 下,因为我们是直接改用户表的!

以上是关于MySQL5.6到8.0的账号迁移的主要内容,如果未能解决你的问题,请参考以下文章

centos7.2.1511安装jdk1.8.0_151以及mysql5.6.38

升级到 MySQL 8.0,Facebook 付出的代价。。

升级到 MySQL 8.0,Facebook 付出的代价。。

升级到 MySQL 8.0,Facebook 付出的代价。。

从 MySQL 5.6.35 迁移到 MariaDB 10.6.3 - 查询不起作用

centos6.8下安装部署LNMP(备注:nginx1.8.0+php5.6.10+mysql5.6.12)