文章目錄
- 前言
- 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 的更多使用場景。