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 付出的代价。。