文章目录
- 前言
- 1. 工具安装
- 1.1 下载安装包
- 1.2 编译安装
- 2. 用户迁移
- 后记
前言
有一个典型的使用场景,就是 RDS 下云大多数都是通过 DTS 进行数据传输的,用户是不会同步到自建数据库的。需要运维人员在自建数据库重新创建用户,如果用户数量很多的话,那么手动创建并不现实。那么就是 pt-show-grants 发挥作用的时候了。
1. 工具安装
pt-show-grants 包含在 Percona Toolkit 工具集中,下面是安装工具集的方法,后续也会介绍更多工具的使用场景和方法。
1.1 下载安装包
从 https://www.percona.com/downloads 地址内,下载 Percona tookit 的安装包。
1.2 编译安装
PT 工具集是基于 perl 语言开发,所以使用前需要安装相关依赖包。
yum install -y perl perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl-Digest-MD5 perl-ExtUtils-MakeMaker
tar -zxvf percona-toolkit-3.3.1_x86_64.tar.gz
cd percona-toolkit-3.3.1
perl Makefile.PL
make
make install
这几步执行完后,PT 工具集就算安装完成了。
2. 用户迁移
该工具用户打印 MySQL 用户创建语句,有一个典型的使用场景,就是 RDS 下云大多数都是通过 DTS 进行数据传输的,用户是不会同步到自建数据库的。需要运维人员在自建数据库重新创建用户,如果用户数量很多的话,那么手动创建并不现实。那么就是 pt-show-grants 发挥作用的时候了。
导出除 MySQL 预留用户 mysql.sys 和 mysql.session 之外的所有用户。
pt-show-grants h=127.0.0.1,P=3306,u=root,p=abc123 --ignore 'mysql.sys'@'localhost','mysql.session'@'localhost'
输出结果:
-- Grants dumped by pt-show-grants
-- Dumped from server 127.0.0.1 via TCP/IP, MySQL 5.7.33-log at 2024-02-29 11:44:25
-- Grants for 'bing'@'%'
CREATE USER IF NOT EXISTS 'bing'@'%';
ALTER USER 'bing'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6691484EA6B50DDDE1926A220DA01FA9E575C18A' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
GRANT ALL PRIVILEGES ON *.* TO 'bing'@'%';
-- Grants for 'root'@'localhost'
CREATE USER IF NOT EXISTS 'root'@'localhost';
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*6691484EA6B50DDDE1926A220DA01FA9E575C18A' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION;
拿着用户创建 SQL 到目标端执行一遍,就完成了用户账号迁移。
常用参数:
- –drop:在 create user 之前打印 DROP USER 操作。
- –flush:在末尾打印 FLUSH PRIVILEGES 操作。
- –revoke:在 create user 之前打印 REVOKE 操作。
- –only:只输出指定用户的创建语句,例如 --only ‘bing’@‘%’
- –ignore:忽略输出指定用户的创建语句。
后记
本篇文章介绍如何使用 pt-show-grants 迁移 MySQL 用户账号的方法,后续还会介绍 Percona tookit 的更多使用场景。