MySQL 数据库不仅提供了数据库的服务器端应用程序,同时还提供了大量的客户端工具
程序,如 mysql,mysqladmin,mysqldump 等等,都是大家所熟悉的。虽然有些人对这些工
具的功能都已经比较了解了,但是真正能将这些工具程序物尽其用的人可能并不是太多, 或
者知道的不全,也可能并不完全了解其中的某种特性。所以在这里我也简单地做一个介绍。

1、mysql

相信在所有 MySQL 客户端工具中,读者了解最多的就是 mysql 了,用的最多的应该也非
他莫属。mysql 的功能和 Oracle 的 sqlplus 一样,为用户提供一个命令行接口来操作管理
MySQL 服务器。其基本的使用语法这里就不介绍了,大家只要运行一下“mysql --help”就
会得到如下相应的基本使用帮助信息:
sky@sky:~$ mysql --help
mysql Ver 14.14 Distrib 5.1.26-rc, for pc-linux-gnu (i686) using EditLine
wrapper
Copyright (C) 2000-2008 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Usage: mysql [OPTIONS] [database]
-?, --help Display this help and exit.
... ...
-e, --execute=name Execute command and quit. (Disables --force and history
file)
-E, --vertical Print the output of a query (rows) vertically.
... ...
-H, --html Produce HTML output.
-X, --xml Produce XML output
... ...
--prompt=name Set the mysql prompt to this value.
... ...
--tee=name Append everything into outfile. See interactive help (\h)
also. Does not work in batch mode. Disable with
--disable-tee. This option is disabled by default.
... ...
-U, --safe-updates Only allow UPDATE and DELETE that uses keys.
--select_limit=# Automatic limit for SELECT when using --safe-updates
--max_join_size=# Automatic limit for rows in a join when using
--safe-updates
... ...
--show-warnings Show warnings after every statement.
... ...
上面的内容仅仅只是输出的一部分,省略去掉了大家最常用的一些参数(因为大家应该
已经很熟悉了),留下了部分个人认为可能不是太经常用到,但是在有些情况下却能给我们
带来意料之外的惊喜的一些参数选项。
首先看看“-e, --execute=name”参数,这个参数是告诉 mysql,我只要执行“-e”后
面的某个命令,而不是要通过 mysql 连接登录到 MySQL Server 上面。此参数在我们写一些
基本的 MySQL 检查和监控的脚本中非常有用,我个人就经常在脚本中使用到他。

如果在连接时候使用了 “-E, --vertical”参数,登入之后的所有查询结果都将以纵列
显示,效果和我们在一条 query 之后以 “\G”结尾一样,这个参数的使用场景可能不是特别
多。

“-H, --html”与“-X, --xml”这两个参数很有意思的,在启用这两个参数之后, select
出来的所有结果都会按照“Html”与“Xml”格式来输出,在有些场合之下,比如希望 Xml
或者 Html 文件格式导出某些报表文件的时候,是非常方便的。

“--prompt=name”参数对于做运维的人来说是一个非常重要的参数选项,其主要功能
是定制自己的 mysql 提示符的显示内容。在默认情况下,我们通过 mysql 登入到数据库之后 ,
mysql 的提示符只是一个很简单的内容”mysql>“,没有其他任何附加信息。非常幸运的是
mysql 通过“--prompt=name”参数给我们提供了自定义提示信息的办法,可以通过配置显
示登入的主机地址,登录用户名,当前时间,当前数据库 schema,MySQL Server 的一些信
息等等。我个人强烈建议将登录主机名,登录用户名和所在的 schema 这三项加入提示内容,
因为当大家手边管理的 MySQL 越来越多,操作越来越频繁的时候,非常容易因为操作的时候
没有太在意自己当前所处的环境而造成在错误的环境执行了错误的命令并造成严重后果的
情况。如果我们在提示内容中加入了这几项之后,至少可以更方便的提醒自己当前所处环境 ,
以尽量减少犯错误的概率。

我个人的提示符定义: "\\u@\\h : \\d \\r:\\m:\\s> ",显示效果:
“sky@localhost : test 04:25:45>”

“--tee=name”参数也是对运维人员非常有用的参数选项,用来告诉 mysql,将所有输
入和输出内容都记录进文件。在我们一些较大维护变更的时候,为了方便被查,最好是将整
个操作过程的所有输入和输出内容都保存下来。有了 “--tee=name”参数,就再也不用通过
copy 屏幕来保存操作过程了。

“-U, --safe-updates”,“--select_limit=#”和“--max_join_size=#”三个参数都
是出于性能相关考虑的参数。使用 “-U, --safe-updates”参数之后,将禁止所有不能使用
索引的 update 和 delete 操作的请求, “--select_limit=#”的使用前提是有“-U, --safe-updates”参数,功能是限制查询记录的条数, “--max_join_size=#”也需要与 “-U, --safe-updates”一起使用,限制参与 join 的最大记录数。

“--show-warnings”参数作用是在执行完每一条 query 之后都会自动执行一次“show
warnings”,显示出最后一次 warning 的内容。

上面仅仅介绍了部分不是太常使用但是很有特点的少数几个参数选项,实际上 mysql
程序支持非常多的参数选项,有其自身的参数,也有提交给 MySQL Server 的。mysql 的所
有参数选项都可以写在 MySQL Server 启动参数文件(my.cnf)的[mysql]参数 group 中,还
有部分连接选项参数会从[client]参数 group 中读取,这样很多参数就可以不用在每次执行
mysql 的时候都手工输入,而由 mysql 程序自己自动从 my.cnf 文件 load 这些参数。
如果读者朋友希望对 mysql 其他参数选项或者 mysql 的其他更国有图有更深入的了解,
可以通过 MySQL 官方参考手册查阅,也可以通过执行 “mysql --help”得到帮助信息之后通
过自行实验来做进一步的深刻认识。当然如果您是一位基本能看懂 c 语言的朋友,那么您完
全可以通过 mysql 程序的源代码来发现其更多有趣的内容。

2、mysqladmin

Usage: mysqladmin [OPTIONS] command command ...
mysqadmin,顾名思义,提供的功能都是与 MySQL 管理相关的各种功能。如 MySQL Server
状态检查,各种统计信息的 flush,创建 /删除数据库,关闭 MySQL Server 等等。 mysqladmin
所能做的事情,虽然大部分都可以通过 mysql 连接登录上 MySQL Server 之后来完成,但是
大部分通过 mysqladmin 来完成操作会更简单更方便。这里我将介绍一下自己经常使用到的
几个常用功能:
ping 命令可以很容易检测 MySQL Server 是否还能正常提供服务
sky@sky:~# mysqladmin -u sky -ppwd -h localhost ping
mysqld is alive
status 命令可以获取当前 MySQL Server 的几个基本的状态值:
sky@sky:~# mysqladmin -u sky -ppwd -h localhost status
Uptime: 20960 Threads: 1 Questions: 75 Slow queries: 0 Opens: 15 Flush
tables: 1 Open tables: 9 Queries per second avg: 0.3
processlist 获取当前数据库的连接线程信息:
sky@sky:~# mysqladmin -u sky -ppwd -h localhost processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 48 | sky | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
上面的这三个功能是我在自己的一些简单监控脚本中经常使用到的,虽然得到的信息还
是比较有限,但是对于完成一些比较基本的监控来说,已经足够胜任了。此外,还可以通过
mysqladmin 来 start slave 和 stop slave,kill 某个连接到 MySQL Server 的线程等等。

3、mysqldump

Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
mysqldump 这个工具我想大部分读者可能都比较熟悉了,其功能就是将 MySQL Server
中的数据以 SQL 语句的形式从数据库中 dump 成文本文件。虽然 mysqldump 是做为 MySQL 的
一种逻辑备份工具为大家所认识,但我个人觉得称他为 SQL 生成导出工具更合适一点,因为
通过 mysqldump 所生成的文件,全部是 SQL 语句,包括数据库和表的创建语句。当然,通过
给 mysqldump 程序加 “-T”选项参数之后,可以生成非 SQL 形式的指定给是的文本文件。 这
个功能实际上是调用了 MySQL 中的“select * into OUTFILE from ...”语句而实现。也可
以通过 “-d,--no-data”仅仅生成结构创建的语句。在声称 SQL 语句的时候,字符集设置这
一项也是比较关键的,建议每次执行 mysqldump 程序的时候都通过尽量做到“--default-character-set=name”显式指定字符集内容,以防止以错误的字符集生成不可用的内容。
mysqldump 所生成的 SQL 文件可以通过 mysql 工具执行。

4、mysqlimport

Usage: mysqlimport [OPTIONS] database textfile ...
mysqlimport 程序是一个将以特定格式存放的文本数据(如通过“select * into
OUTFILE from ...”所生成的数据文件)导入到指定的 MySQL Server 中的工具程序,比如
将一个标准的 csv 文件导入到某指定数据库的指定表中。mysqlimport 工具实际上也只是
“load data infile”命令的一个包装实现。

5、mysqlbinlog

Usage: mysqlbinlog [OPTIONS] log-files
mysqlbinlog 程序的主要功能就是分析 MySQL Server 所产生的二进制日志(也就是大
家所熟知的 binlog)。当我们希望通过之前备份的 binlog 做一些指定时间之类的恢复的时
候,mysqlbinlog 就可以帮助我们找到恢复操作需要做哪些事情。通过 mysqlbinlog,我们
可以解析出 binlog 中指定时间段或者指定日志起始和结束位置的内容解析成 SQL 语句,并
导出到指定的文件中,在解析过程中,还可以通过指定数据库名称来过滤输出内容。

6、mysqlcheck

Usage: mysqlcheck [OPTIONS] database [tables]
OR mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3...]
OR mysqlcheck [OPTIONS] --all-databases
mysqlcheck 工具程序可以检查(check),修复( repair),分析( analyze)和优化
(optimize)MySQL Server 中的表,但并不是所有的存储引擎都支持这里所有的四个功能,
像 Innodb 就不支持修复功能。实际上, mysqlcheck 程序的这四个功能都可以通过 mysql 连
接登录到 MySQL Server 之后来执行相应命令完成完全相同的任务。

7、myisamchk

Usage: myisamchk [OPTIONS] tables[.MYI]
功能有点类似“mysqlcheck -c/-r”,对检查和修复 MyISAM 存储引擎的表,但只能对
MyISAM 存储引擎的索引文件有效,而且不用登录连接上 MySQL Server 即可完成操作。

8、myisampack

Usage: myisampack [OPTIONS] filename ...
对 MyISAM 表进行压缩处理,以缩减占用存储空间,一般主要用在归档备份的场景下,
而且压缩后的 MyISAM 表会变成只读,不能进行任何修改操作。当我们希望归档备份某些历
史数据表,而又希望该表能够提供较为高效的查询服务的时候,就可以通过 myisampack 工
具程序来对该 MyISAM 表进行压缩,因为即使虽然更换成 archive 存储引擎也能够将表变成
只读的压缩表,但是 archive 表是没有索引支持的,而通过压缩后的 MyISAM 表仍然可以使
用其索引。

9、mysqlhotcopy

Usage: mysqlhotcopy db_name[./table_regex/] [new_db_name | directory]
mysqlhotcopy 和其他的客户端工具程序不太一样的是他不是 c(或者 c++)程序编写的 ,
而是一个 perl 脚本程序,仅能在 Unix/Linux 环境下使用。他的主要功能就是对 MySQL 中
的 MyISAM 存储引擎的表进行在线备份操作,其备份操作实际上就是通过对数据库中的表进
行加锁,然后复制其结构,数据和索引文件来完成备份操作,当然,也可以通过指定 “--noindices”告诉 mysqlhotcopy 不需要备份索引文件。

10、其他工具

除了上面介绍的这些工具程序之外, MySQL 还有自带了其他大量的工具程序,如针对离
线 Innodb 文件做 checksum 的 innochecksum ,转换 mSQL C API 函数的 msql2mysql ,
dumpMyISAM 全文索引的 myisam_ftdump,分析处理 slowlog 的 mysqldumpslow,查询 mysql
相关开发包位置和 include 文件位置的 mysql_config, 向 MySQL AB 报告 bug 的 mysqlbug,
测 试 套 件 mysqltest 和 mysql_client_test , 批 量 修 改 表 存 储 引 擎 类 型 的
mysql_convert_table_format,能从更新日志中提取给定匹配规则的 query 语句的
mysql_find_rows,更改 MyIsam 存储引擎表后缀名的 mysql_fix_extensions,修复系统表
的 mysql_fix_privilege_tables,查看数据库相关对象结构的 mysqlshow,MySQL 升级工具
mysql_upgrade,通过给定匹配模式来 kill 客户端连接线程的 mysql_zap,查看错误号信息
的 perror,文本替换工具 replace,等 等一系列工具程序可供我们使用。如果您希望在 MySQL
源代码的基础上做一些自己的修改,如修改 MyISAM 存储引擎的时候,可以利用 myisamlog
来进行跟踪分析 MyISAM 的 log。

mysql客户端工具的更多相关文章

  1. 4个mysql客户端工具的比较

    mysql是我以前学习和练习所使用的数据,现在在工作中也在使用,之前公司里用oracle,我在做自己的东西的时候觉得用oracle太不方便,于是就找了mysql(当时也考虑过sqlserver,觉得还 ...

  2. MySQL Server类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...

  3. MySQL Workbench类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Workbench的下载 .MySQL Workbench的安装 .MySQL Workbench的使用 个人推荐,比较好的MySQL客户端工具 注意啊! 对于noi ...

  4. MySQL Server类型之MySQL客户端工具的下载、安装和使用(博主推荐)

    本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...

  5. MySQL客户端工具的使用与MySQL SQL语句

    MySQL客户端工具的使用 1.MySQL程序的组成 客户端 mysql:CLI交互式客户端程序 mycli:CLI交互式客户端程序;使用sql语句时会有提示信息 mysql_secure_insta ...

  6. 个人推荐,比较好的MySQL客户端工具

    关于啊,MySQL客户端,实在是太多了.本人也是正在摸索中. MySQL Workbench phpMyAdmin SQLyog Navicat for MySQL MySQL Server MySQ ...

  7. MySQL客户端工具的选择

    最近因系统云化项目,学习使用MySQL集群,为了找一款顺手的mysql客户端,反复使用了多个工具,并筛选出一个自认为最满意的,在此分享. 先说我的选择:SQLyog. 尝试的客户端:Toad for ...

  8. MySQL客户端工具 SQLyog

    我最喜欢它的History功能,把执行过的操作对应语句都输出出来,一些麻烦的语句用GUI操作后,还能保存对应的sql语句.不错! 官网:http://www.webyog.com 下面是官方的介绍:S ...

  9. 转://MySQL客户端工具的选择

    先说我的选择:SQLyog. 尝试的客户端:Toad for MySQL.MySQL-Front.Navicat for MySQL.SQLyog. 官方下载链接: Toad for MySQL:ht ...

随机推荐

  1. vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

  2. jmm 和线程安全

    Java的内存模型JMM Java的内存模型JMM(Java Memory Model)JMM主要是为了规定了线程和内存之间的一些关系.根据JMM的设计,系统存在一个主内存(Main Memory), ...

  3. 【玩转Golang】 通过组合嵌入实现代码复用

    应用开发中的一个常见情景,为了避免简单重复,需要在基类中实现共用代码,着同样有助于后期维护. 如果在以往的支持类继承的语言中,比如c++,Java,c#等,这很简单!可是go不支持继承,只能mixin ...

  4. DWZ主从表界面唯一性验证(后台验证)(三)

    之前的博客介绍了前台自写js来验证主动表的唯一性,除了前台的验证,我也学习了后台的一些判断. 再次介绍一下背景需求: 利用DWZ的主从表结构批量添加课程信息,在提交表单后,触发Action事件 1.是 ...

  5. jquery方法.serializeArray()获取name和value并转为json数组

    jquery的.serializeArray()方法可以获取形如以下 [ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: ...

  6. 如何获取ABBYY FineReader 12注册码-激活码-序列号

    提及OCR文字识别软件,相信不少人会脱口而出ABBYY FineReader,这款软件当前最新版本为FineReader 12,是市场领先的OCR图文识别软件,不仅可以将纸质文档和PDF文件以及图像文 ...

  7. BarTender出现3702错误怎么办

    很多时候,在我们不经意间,BarTender条码打印软件就会弹出各种错误消息,其实都是一些常见的小问题,是我们操作不当引起的,本文,小编就给大家来讲解BarTender错误消息3702的解决办法. 错 ...

  8. mysql中参数low_case_table_name的使用?不同参数值的设置有什么影响?

    需求描述: 今天一个同事问,在mysql中,默认的表名是大小写区分的吗,默认是什么设置, 如果要设置成大小写不区分的改怎么设置,是否需要进行重启.然后就进行了查询, 对于lower_case_tabl ...

  9. [SLAM] 01. "Simultaneous Localization and Mapping"

    本篇带你认识SLAM,形成客观的认识和体系 一.通过行业招聘初步了解SLAM 发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发 ...

  10. 给一个由n-1个整数组成的未排序的序列,其元素都是1~n中的不同的整数。如何在线性时间复杂度内寻找序列中缺失的整数

    思路分析:尼玛这不就是等差数列么.首先将该n-1个整数相加,得到sum,然后用(1+n)n/2减去sum,得到的差即为缺失的整数.因为1~n一共n个数,n个数的和为(1+n)n/2,而未排序数列的和为 ...