Percona-Tookit工具包之pt-show-grants
- pt-show-grants [OPTIONS] [DSN]
- //Regular parameters.
- --drop //Add "DROP USER" before each user of output,which can be used to get a ddl of droping user.
- --flush //Add "FLUSH PRIVILEGES" after output(version ahead 4.1.1 need).
- --ignore //Speicify the ignore user.
- --only //on the contrary of "--ignore" does,specify the only user you want.
- --include-unused-roles //This options merely for MySQL 8.0 + version which support roles.
- --seperate //List the grant and revoke statement respectively.
- //Dump hearder relevant.
- --no-header //Don't print head information of dump.
- --no-timestamp //Don't add timestam to the head of dump.
- [root@zlm1 :: ~]
- #pt-show-grants
- -- Grants dumped by pt-show-grants
- -- Dumped from server Localhost via UNIX socket, MySQL 5.7.-log at -- ::
- -- Grants for 'bkuser'@'localhost'
- CREATE USER IF NOT EXISTS 'bkuser'@'localhost';
- ALTER USER 'bkuser'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*3DE5D9E4FBC1E464DA1B1172D6333CE89FDE5C61' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
- GRANT LOCK TABLES, PROCESS, RELOAD, REPLICATION CLIENT ON *.* TO 'bkuser'@'localhost';
- -- Grants for 'mysql.session'@'localhost'
- CREATE USER IF NOT EXISTS 'mysql.session'@'localhost';
- ALTER USER 'mysql.session'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT LOCK;
- GRANT SELECT ON `mysql`.`user` TO 'mysql.session'@'localhost';
- GRANT SELECT ON `performance_schema`.* TO 'mysql.session'@'localhost';
- GRANT SUPER ON *.* TO 'mysql.session'@'localhost';
- -- Grants for 'mysql.sys'@'localhost'
- CREATE USER IF NOT EXISTS 'mysql.sys'@'localhost';
- ALTER USER 'mysql.sys'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT LOCK;
- GRANT SELECT ON `sys`.`sys_config` TO 'mysql.sys'@'localhost';
- GRANT TRIGGER ON `sys`.* TO 'mysql.sys'@'localhost';
- GRANT USAGE ON *.* TO 'mysql.sys'@'localhost';
- -- Grants for 'repl'@'192.168.56.%'
- CREATE USER IF NOT EXISTS 'repl'@'192.168.56.%';
- ALTER USER 'repl'@'192.168.56.%' IDENTIFIED WITH 'mysql_native_password' AS '*872ECE72A7EBAC6A183C90D7043D5F359BD85A9E' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
- GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.56.%';
- -- Grants for 'root'@'localhost'
- CREATE USER IF NOT EXISTS 'root'@'localhost';
- ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*DDFB542AA0BD1D251995D81AEBEB96DEEAD1132F' 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;
- [root@zlm1 :: ~]
- #pt-show-grants -hlocalhost -P3306 -uroot -pPassw0rd --only=root
- -- Grants dumped by pt-show-grants
- -- Dumped from server Localhost via UNIX socket, MySQL 5.7.-log at -- ::
- -- Grants for 'root'@'localhost'
- CREATE USER IF NOT EXISTS 'root'@'localhost';
- ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*DDFB542AA0BD1D251995D81AEBEB96DEEAD1132F' 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;
- [root@zlm1 :: ~]
- #pt-show-grants -hlocalhost -P3306 -uroot -pPassw0rd --only=root --separate --revoke
- -- Grants dumped by pt-show-grants
- -- Dumped from server Localhost via UNIX socket, MySQL 5.7.-log at -- ::
- -- Revoke statements for 'root'@'localhost'
- REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'localhost';
- REVOKE GRANT OPTION ON *.* FROM 'root'@'localhost';
- REVOKE PROXY ON ''@'' FROM 'root'@'localhost';
- REVOKE GRANT OPTION ON *.* FROM 'root'@'localhost';
- -- Grants for 'root'@'localhost'
- CREATE USER IF NOT EXISTS 'root'@'localhost';
- ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*DDFB542AA0BD1D251995D81AEBEB96DEEAD1132F' 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;
- [root@zlm1 :: ~]
- # pt-show-grants -hlocalhost -P3306 -uroot -pPassw0rd --only=root --drop
- -- Grants dumped by pt-show-grants
- -- Dumped from server Localhost via UNIX socket, MySQL 5.7.-log at -- ::
- DROP USER 'root'@'localhost';
- DELETE FROM `mysql`.`user` WHERE `User`='root' AND `Host`='localhost';
- -- Grants for 'root'@'localhost'
- CREATE USER IF NOT EXISTS 'root'@'localhost';
- ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*DDFB542AA0BD1D251995D81AEBEB96DEEAD1132F' 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;
- [root@zlm1 :: ~]
- #pt-show-grants -h192.168.56. -P3306 -urepl -prepl4slave --only repl --no-timestamp
- -- Grants dumped by pt-show-grants
- -- Dumped from server 192.168.56.100 via TCP/IP, MySQL 5.7.-log
- -- Grants for 'repl'@'192.168.56.%'
- CREATE USER IF NOT EXISTS 'repl'@'192.168.56.%';
- ALTER USER 'repl'@'192.168.56.%' IDENTIFIED WITH 'mysql_native_password' AS '*872ECE72A7EBAC6A183C90D7043D5F359BD85A9E' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
- GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.56.%';
- [root@zlm1 :: ~]
- #pt-show-grants -h192.168.56. -P3306 -urepl -prepl4slave --only repl --no-header
- -- Grants for 'repl'@'192.168.56.%' //Only message of annotation this time.
- CREATE USER IF NOT EXISTS 'repl'@'192.168.56.%';
- ALTER USER 'repl'@'192.168.56.%' IDENTIFIED WITH 'mysql_native_password' AS '*872ECE72A7EBAC6A183C90D7043D5F359BD85A9E' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;
- GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.56.%';
Distinguish the difference of user privileges between zlm1 & zlm2 and make it be same.
- //Dump the user grans into a file on server zlm1
- [root@zlm1 :: ~]
- #pt-show-grants -h192.168.56. -P3306 -urepl -prepl4slave --only repl > repl_grants.sql
- //Copy the file to zlm2.
- [root@zlm1 :: ~]
- #scp repl_grants.sql 192.168.56.101:~
- repl_grants.sql % .4KB/s :
- [root@zlm1 :: ~]
- //Show user infomation on zlm2.
- root@localhost:mysql.sock [(none)]>select user,host from mysql.user;
- +---------------+--------------+
- | user | host |
- +---------------+--------------+
- | repl | 192.168..% |
- | bkuser | localhost |
- | mysql.session | localhost |
- | mysql.sys | localhost |
- | root | localhost |
- +---------------+--------------+
- rows in set (0.00 sec)
- //Show user grants infomation.
- root@localhost:mysql.sock [(none)]>show grants for repl@'192.168.56.%';
- +---------------------------------------------------------+
- | Grants for repl@192.168..% |
- +---------------------------------------------------------+
- | GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.56.%' |
- +---------------------------------------------------------+
- row in set (0.00 sec)
- //Revoke the privileges from repl user to mimic difference.
- root@localhost:mysql.sock [(none)]>revoke all on *.* from repl@'192.168.56.%';
- Query OK, rows affected (0.00 sec)
- root@localhost:mysql.sock [(none)]>show grants for repl@'192.168.56.%';
- +---------------------------------------------+
- | Grants for repl@192.168..% |
- +---------------------------------------------+
- | GRANT USAGE ON *.* TO 'repl'@'192.168.56.%' |
- +---------------------------------------------+
- row in set (0.00 sec)
- //Check difference with zlm1.
- [root@zlm2 :: ~]
- #pt-show-grants -hlocalhost -P3306 -uroot -pPassw0rd --only repl | diff repl_grants.sql -
- 2c2
- < -- Dumped from server 192.168.56.100 via TCP/IP, MySQL 5.7.-log at -- ::
- ---
- > -- Dumped from server Localhost via UNIX socket, MySQL 5.7.-log at -- ::
- 6c6
- < GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.56.%'; //User privileges in dump file.
- ---
- > GRANT USAGE ON *.* TO 'repl'@'192.168.56.%'; //User privileges in local server.
- [root@zlm2 :: ~]
- #mysql -hlocalhost -S /var/lib/mysql/mysql.sock -uroot -pPassw0rd < repl_grants.sql >/dev/null //Import the user grants from dump file.
- //Check the privileges of user repl again.
- [root@zlm2 :: ~]
- #mysql
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is
- Server version: 5.7.-log MySQL Community Server (GPL)
- Copyright (c) , , Oracle and/or its affiliates. All rights reserved.
- 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.
- root@localhost:mysql.sock [(none)]>show grants for repl@'192.168.56.%';
- +------------------------------------------------------+
- | Grants for repl@192.168..% |
- +------------------------------------------------------+
- | GRANT ALL PRIVILEGES ON *.* TO 'repl'@'192.168.56.%' | //The privileges are same with zlm1 now.
- +------------------------------------------------------+
- row in set (0.00 sec)
- pt-show-grants helps us dba to manager user privileges better than MySQL command line "show grant for ... ;" does.
- pt-show-grants is convenient to use even with any options specified.
- pt-show-grants can be used to check the difference of user privileges between the servers.
- pt-show-grants is not a intrusive tool like pt-pmp,you can run it at any time you need.
Percona-Tookit工具包之pt-show-grants的更多相关文章
- Linux后台开发工具箱
https://files-cdn.cnblogs.com/files/aquester/Linux后台开发工具箱.pdf 目录 目录 1 1. 前言 3 2. 脚本类工具 3 2.1. sed命令- ...
- Mysql: pt-table-checksum 和 pt-table-sync 检查主从一致性,实验过程
一.安装 percona 包 1.安装仓库的包 https://www.percona.com/doc/percona-repo-config/yum-repo.html sudo yum insta ...
- Linux后台开发工具箱-葵花宝典
Linux后台开发工具箱-葵花宝典 一见 2016/11/4 目录 目录 1 1. 前言 4 2. 脚本类工具 4 2.1. 双引号和单引号 4 2.2. 取脚本完整文件路径 5 2.3. 环境变量和 ...
- 推荐几款MySQL相关工具
前言: 随着互联网技术的不断发展, MySQL 相关生态也越来越完善,越来越多的工具涌现出来.一些公司或个人纷纷开源出一些不错的工具,本篇文章主要介绍几款 MySQL 相关实用工具.提醒下,这里并不介 ...
- [知识库分享系列] 二、.NET(ASP.NET)
最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...
- SQL慢查询安装过程
SQL慢查询 基本操作 打开防火墙 firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload 安 ...
- 快速安装Percona pt工具
yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-Time-HiRes perl-IO-Socket-SSLwget http://pk ...
- Percona 工具包 pt-online-schema-change 简介
mysql的在线表结构修改,因为低效和阻塞读写.一直被诟病.至于ALTER TABLE 的原理,参看我上一篇文章.MySQL在线修改大表结构.看完后,发现的问题是还是会锁的,且对于在线更新的这块也是不 ...
- 安装percona工具包
1.安装percona源 sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona- ...
- percona pt toolkit 总结
##=====================================================##pt-osc之工作流程:1.检查更改表是否有主键或唯一索引,是否有触发器2.检查修改表 ...
随机推荐
- 支持触屏的zepto轮播图插件
占个座,有时间再写,呵呵 关于zepto.js,官方标准版是不支持touch的.可以去github下载压缩包,里面有所有支持的模块.我用的zepto.js,是经过打包的,包括polyfill zept ...
- JavaScript中双叹号(!!)作用
经常看到这样的例子: var a: var b=!!a a默认是undefined.!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判 ...
- 原生js封装十字参考线插件(一)
需求来源: 拓扑图之机房平面图,显示机房长宽比例尺,房间内标注各种设备间距不易实现,特在机房平面图上层加一个十字参考线 横竖两条线垂直,在鼠标指针处交叉,显示鼠标指针坐标(相对机房平面图的坐标,不是相 ...
- 嵌入式开发 MCU
From: http://www.infoq.com/cn/articles/intelligent-embedded-os-Internet-of-things-and-robots 嵌入式开发是一 ...
- .NET开源工作流RoadFlow-表单设计-数据字典选择
添加数字字典选择框: 选择范围:指定可选择的字典范围. 是否多选:指定是否可以多选.
- keras 自定义 custom 函数
转自: https://kexue.fm/archives/4493/,感谢分享! Keras是一个搭积木式的深度学习框架,用它可以很方便且直观地搭建一些常见的深度学习模型.在tensorflow出来 ...
- OFFICE_EXCEL_Combine text from two or more cells into one cell.
Excel Enter and format data Layout Combine text from two or more cells into one cell Combine t ...
- 获取v$latch数据源实验
实验环境:Oracle Rac 11.2.0.3 首先获取v$latch的定义:通过PL/SQL或者get ddl等常规途径只能获取到v_$latch相关的视图信息.需要通过特殊方法获取v$latch ...
- May 14th 2017 Week 20th Sunday
A smooth sea never made a skillful mariner. 平静的海洋练不出熟练的水手. A smooth sea never made a skillful marine ...
- wireshark抓取本地回环数据包
linux环境下,用tcpdump,可以用-i lo参数抓取环回接口的包.如果服务端和客户端安装在同一台机器上,调试时是很方便的.linux版的wireshark,选取网卡的菜单里也有lo选项,也 ...