用法:

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. webpack 的使用2

    实际项目中的配置 要加__dirname 不然会报错 注意path  /dist 前不要加点 结果 将两个文件打包在一起 结果 传入对象 并且单独打包 name为key 加上本次打包的hash has ...

  2. DotNetCore跨平台~配置文件与配置代码如何共存

    回到目录 古人云<一山不容二虎>,而进行dotnet core时代之后,我们可以看到这样的一些官方的DEMO,它将数据连接串和其它配置项都直接硬编码在代码里,即在startup中进行定义, ...

  3. WPF使用资源字典组织资源

    转载:http://blog.163.com/wangzhenguo2005@126/blog/static/371405262010111413321728/     首先在解决方案资源管理器中添加 ...

  4. iOS代码处理横屏问题

    借助通知来控制界面的横竖屏切换.还是整个App中大部分界面都是竖屏,某个界面可以横竖屏切换的情况. 首先,在[General]-->[Device Orientation]设置仅支持竖屏,lik ...

  5. JS全选与不选、反选

    思路: 1.获取元素. 2.用for循环历遍数组,把checkbox的checked设置为true即实现全选,把checkbox的checked设置为false即实现不选. 3.通过if判断,如果ch ...

  6. javaScript基础的基础

    JavaScript是一个脚本语言,需要有宿主文件,他的宿主文件是HTML文件. 与JAVA没有直接关系 一般写在 1.head里面 2.body里面 3.</html>后面 一般写在&l ...

  7. springMvc+hibernate的web application的构建

    闲来没事,想整理下一些知识. 这篇文章是关于spring的web程序的搭建,有什么不对的地方希望大家批评指正. 首先我们要了解什么是spring,这里可能很多大家也都明白,无非是一个管理对象的一个容器 ...

  8. 使用Kotlin开发第一个Android应用

    直奔主题 第一步:为AndroidStudio安装Kotlin插件 在线安装步骤:File—>Settings—>Plugins—>Install JetBrains plugin… ...

  9. IIS配置發佈網站常見問題及設置

    解决方法: 修改.NET Framework 版本为相应版本即可,我以前用的是2.0换成4.0的时候出现这个错误. 我的win7系统, 1.打开IIs点击IIS根节点 2.看右边的“操作”->点 ...

  10. hover与click样式冲突

    如果你的hover事件和click事件的样式不同,如元素背景本来是#fff,如果hover时背景是#ddd,点击时背景是#aaa,那么问题是当你点击后,鼠标再移动到这个元素时背景会变成#ddd,而你希 ...