用法:

pt-show-grants [OPTION ... ] [DSN]
 
例子:
pt-show-grants
pt-show-grants --separate --revoke | diff othergrants.sql -
 
风险:
 
只读工具和写工具
pt-show-grants默认是只读,风险低。如果使用--flush,将执行flush privileges。
至今没有已知bug导致用户的损失。
 
描述:
pt-show-grants提取、排序和打印MySQL 相关账户
 
存在的原因:
1、从一台服务器上将权限复制到另一台机器上;可以很简单地从第一台服务器上抽取相关权限,然后直接导入第二台机器上;
2、将权限信息放在版本控制中。使用自动grant dump到版本控制中,可能会获得一些没有变化的授权。原因在于mysql按照看似随机的顺序打印授权信息。
 
例如:
一天打印如下:
另一天可能打印:
授权没变,但是顺序变了
 
该脚本可以解决该问题,在GRANT和ON之间做排序。如果show grants结果存在多行的话,也会这些行进行排序。
 
3、比较服务器之间的权限,没有规范化的,这样的操作会比较困难。输出结果完全是可对比的。
 
执行pt-show-grans的过程:
命令:
pt-show-grants -u pt -p 213456 -S ./tmp/mysql.sock
 全日志:
从全日志中可以看到:
1、先查找所有用户和Host
2、然后逐个执行show grants
 
输出:
两种不同的方式进行连接
 
选项:
--ask-pass            Prompt for a password when connecting to MySQL
 
--ask-pass 作为密码的提示 在系统中运行出错
出错信息:Enter password: Cannot read response; is Term::ReadKey installed? Can't locate Term/ReadKey.pm in @INC
缺少Term/ReadKey.pm这个模块——在自己测试机上继续练习
 
--charset=s       -A  Default character set
--charset=s -A 连接使用的字符集
例子:
pt-show-grants -upt -hlocalhost -S ./tmp/mysql.sock -p 213456 -A utf8
对应的全日志中多了,37 Query     /*!40101 SET NAMES utf8*/
--config=A            Read this comma-separated list of config files; if  specified, this must be the first option on the command   line
--config 
类型为数组
从特定的文件中读取配置,如果设置,这个选项需要设置在第一行
 
--database=s      -D  The database to use for the connection
--database=s -D 连接数据库使用到的DB
 
--defaults-file=s -F  Only read mysql options from the given file
pt-show-grants --defaults-file=./etc/my.cnf -upt -p213456
--drop                Add DROP USER before each user in the output
添加了两行:
DROP USER 'pt'@'%';
DELETE FROM `mysql`.`user` WHERE `User`='pt' AND `Host`='%';
--flush               Add FLUSH PRIVILEGES after output
在输出最后一行加了如下一行命令:
FLUSH PRIVILEGES;
 
--[no]header          Print dump header (default yes)
 
--help                Show help and exit
 
--host=s          -h  Connect to host
--ignore=a            Ignore this comma-separated list of users 【不起作用??】
参数必须是'root'@'localhost',而不是root
--only=a              Only show grants for this comma-separated list of users
只显示的用户
--password=s      -p  Password to use when connecting
--pid=s               Create the given PID file
--port=i          -P  Port number to use for connection
--revoke              Add REVOKE statements for each GRANT statement
是REVOKE形式,与drop不同,其是delete
 
--separate            List each GRANT or REVOKE separately
--set-vars=s          Set these MySQL variables (default wait_timeout=10000)
用法:--set-vars            wait_timeout=100
 
--socket=s        -S  Socket file to use for connection
--[no]timestamp       Add timestamp to the dump header (default yes)是否添加时间戳
--user=s          -u  User for login if not current user
--version             Show version and exit
 
选项类型:
Option types: s=string, i=integer, f=float, h/H/a/A=comma-separated list, d=DSN, z=size, m=time
s表示string
i表示整数
f表示浮点数
h/H/a/A 表是逗号分隔型取值格式
d表示DSN
z表示大小
m表示time
 
 
参数的默认值:
参数的默认值
 
环境:
使用PTDEBUG可以将debug信息打印到STDERR,也可以重定向到文件中
 
PTDEBUG=1 pt-show-grants ... > FILE 2>&1
 
环境准备:
Perl,DBI,DBD::mysql 以及新版的perl所需要的一些软件包
 
 
研究方法:
1、看帮助
2、开启全日志,查找对应的命令发送哪些SQL语句
3、使用PTDEBUG信息,查找更细节的过程
4、研究代码
 
 

pt-show-grants的更多相关文章

  1. mysql瑞士军刀–pt工具

    Percona-Toolkits Percona-toolkit 简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql任务和系统任务,这些 ...

  2. PX 和PT的区别

    字体大小的设置单位,常用的有2种:px.pt.这两个有什么区别呢? 先搞清基本概念:px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英 ...

  3. css中单位px、pt、em和rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? px :像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.(引自CSS ...

  4. 快速安装Percona pt工具

    yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-Time-HiRes perl-IO-Socket-SSLwget http://pk ...

  5. ((uchar*)(Img1->imageData + Img1->widthStep*pt.y))[pt.x] 的 具体含义

    widthstep是指图像每行所占的字节数. 主要要和width区别: width是表示图像的每行像素数,widthStep指表示存储一行像素需要的字节数. 在OpenCV里边,widthStep必须 ...

  6. Android中的dp, px, pt

    定义: px是像素,表示屏幕显示的最小元素单位 pt是磅数,一磅等于1/72英寸,一般用来作为字体的单位使用 问题: px和pt不使用于手机,因为同样的px在高低分辨率的手机上显示的比例不同 解决办法 ...

  7. css中font-size的单位总结:px、em、pt

    px:基于像素的单位.像素是一种有用的单位,因为在任何媒体上都可以保证一个像素的差别确实是可见的.em :一般用来测量长度的通用单位(例如元素周转的页边空白和填充),当用于指定字体大小时,em单位是指 ...

  8. UI设计中px、pt、ppi、dpi、dp、sp之间的关系

    UI设计中px.pt.ppi.dpi.dp.sp之间的关系 武汉AAA数字艺术教育 2015-07-24 14:19:50 职业教育 pi px 阅读(3398) 评论(0) 声明:本文由入驻搜狐公众 ...

  9. 关于pt与px

    pt:point,点,是印刷业一个标准的长度单位,1pt=1/72英寸:  在Windows里,默认的显示设置中,把文字定义为96dpi.这说明了:1px=1/96英寸:而1pt=1/72英寸,可以得 ...

  10. Android中dip、dp、sp、pt和px的区别

    1.概述 过去,程序员通常以像素为单位设计计算机用户界面.例如:图片大小为80×32像素.这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小.在有些情况 ...

随机推荐

  1. HDU1024 DP的优化 最大M子段和问题

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  2. asp.net调用Lodop实现页面打印或局部打印,可进行打印设置或预览

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebPrint.aspx.cs ...

  3. 通过ssh秘钥的方式可以连接上CE68交换机

    结论:按照CE68交换机的用户手册中的指导,可以通过ssh 秘钥的方式连接上交换机. 1.先按照eNSP连接到网卡的方式,给CE68配置一个ip地址: 192.168.56.2 2.按照交换机的用户指 ...

  4. win10 UWP 剪贴板 Clipboard

    win10 UWP 剪贴板 Clipboard使用Windows.ApplicationModel.DataTransfer.Clipboard 设置文本 DataPackage dataPackag ...

  5. Python学习笔记(十三)

    Python学习笔记(十三): 模块 包 if name == main 软件目录结构规范 作业-ATM+购物商城程序 1. 模块 1. 模块导入方法 import 语句 import module1 ...

  6. WordPress 4.8 安装配置教程 (基于 centos 7.3, php 7.0, mysql 5.7.19, nginx 1.12.1)

    最近想要整个 blog,记录自己工作.学习中的点滴.Wordpress 自然是首选,因为内容才是关键,所以也就不怕别人说太 low.网上大部份都是讲 wordpress 配合 apache 的安装教程 ...

  7. 怎样在Win10下安装ubuntu双系统

    Win10系统下安装ubuntu系统 安装前准备: 概念 在动手之前,一定要先了解双系统.系统引导.分区这3个概念,这样才能理解安装步骤,应对安装过程中的意外情况. 双系统 双系统就是开机之后,会有一 ...

  8. 【计算机网络】 一个小白的DNS学习笔记

    参考书籍 <计算机网络-自顶向下>  作者 James F. Kurose   DNS的作用   DNS是因特网的目录服务 DNS是因特网的目录服务,它提供了主机名到IP地址映射的查询服务 ...

  9. git 一口气带你走完git之旅

    1.git是目前世界上最先进的分布式版本控制系统.svn是集成式版本控制系统,那么问题来了,什么叫分布式管理和集中式管理? 首先,svn 需要有一个中央服务器,协同开发者需要同中央服务器连接,所有的版 ...

  10. PHP入门,clone和__clone

      前 言 这篇文章主要介绍了PHP编程中的__clone()方法使用详解,__clone()方法相当于一个浅拷贝,是PHP入门学习中的基础知识,需要的朋友可以参考下. 1对象是引用数据类型,当使用= ...