如何导出或者备份所有的数据库账号

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.6
  • 【问题描述】:如何导出数据库中的所有账号

我的需求是把一个集群的数据全量导到 网络不通的 新集群中:
目前我是通过两步:mydumper 导出业务库 + 导出账号 ,
在导出账号时遇到了困难

尝试过:
1:mydumper
用 mydumper 导出 mysql 库 , 在导入到新集群时 ,出错,

2:pt-show-grants
在数据库中有建 role, 因为role 账号没密码
用 pt-show-grants工具执行后得到的建 role 语句 , 在新集群中 执行时出错:
SQL为如:
ALTER USER role_xx’@‘localhost’ IDENTIFIED WITH ‘mysql_native_password’ AS ‘’ REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
为role 授权的通配符DB 也无法执行:
GRANT ALL PRIVILEGES ON abc_%.* TO ‘role_xx’@‘localhost’;

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

目前 TiDB 还不支持 pt-show-grants 操作,如果想完整导入所有账号权限,建议将 privileges 表的权限导出,然后成 grant 预计进行一次导入。目前没有很好的办法导出权限,只能手工导出,然后编辑成 SQL ,再做导入。

我已经提 issue 了,可以在上面 comment 一下吧。Support pt-show-grants to export/import privileges of users to other TiDB. · Issue #20125 · pingcap/tidb · GitHub