不同的tidb集群数据迁移时,用户权限怎样迁移复制到下游的tidb集群

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.9 → v8.5.1
【复现路径】
【遇到的问题:问题现象及影响】
如题目描述,想知道 有没有比较明确的好的方案 ,tidb集群之间迁移用户权限。
TiDB 的用户权限存储在 mysql 系统数据库中,具体来说是 mysql.usermysql.db ,是不是复制这两个表的 数据到下游集群,就可以用户复制权限了。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

参考这个看看
image
https://docs.pingcap.com/zh/tidb/stable/privilege-management#权限系统的实现

1 个赞

应该没人搞过,你先尝试下手工复制是否能成功

pt-show-grants 这个工具可以将权限导出到sql文件,然后再目标环境执行就行

嗯嗯,这个方案可行。

OK, 我使用如下方案,好像实现了用户权限的迁移。不知道是否存在潜在的风险,如果有风险,还望有大佬给指出来。
1,导出旧tidb集群权限相关的表。
mysqldump -h node2 -P 4000 -u root -pRootPasswd msyql user db tables_priv columns_priv > old_user_priv.sql
2, 连接新的集群,导入上面导入的权限数据。

alpha@node2:~$ mysql -h node2 -P 4000 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3827302424
Server version: 8.0.11-TiDB-v8.5.0 TiDB Server (Apache License 2.0) Community Edition, MySQL 8.0 compatible

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> source old_user_priv.sql;
Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql>

3, 验证连接有效。

1 个赞

这种只适合两个库权限完全一致的情景了

:+1::+1::+1: