1.7 MySQL实用工具

在MySQL安装目录下的bin目录中存放了很多应用程序,这些应用程序都是MySQL的工具集。本节将介绍其中最实用的5个工具,分别是mysql、mysqladmin、mysqlshow、mysqlbinlog和perror。

1.7.1 查看工具集

查看MySQL系统自带工具集的方法很简单,只需找到MySQL数据库的安装路径下并打开bin目录即可看到,如图1-28所示。

图1-28 bin文件夹下的命令

从图1-28中可以看出,MySQL中自带了多个命令工具,通过执行这些命令可以实现不同的操作,大多数的操作都是通过MySQL命令来实现的。另外,mysqladmin命令主要用来对数据库做一些简单的操作,以及显示服务器状态等。如表1-1所示对图1-28中的实用工具进行了简单说明。

表1-1 MySQL中的常用命令工具

技巧

为了方便在命令下使用这些工具,可以将MySQL 的bin 目录添加到系统的path 变量中,例如,本示例中的路径是“D:\Program Files\MySQL\MySQL Server 5.6\bin”。

1.7.2 mysql工具

在所有工具集中最常用的就是mysql,它其实是一个MySQL的客户端,支持交互式和非交互式使用。交互使用时查询结果采用ASCII表格式。当采用非交互式(例如,用作过滤器)模式时,结果为Tab分隔符格式。

mysql工具基本语法如下:

mysql [options] [database]

执行mysql或“mysql -?”语句可查看详细帮助信息,如表1-2所示对帮助信息中常用的一些选项进行了介绍。

表1-2 mysql工具常用选项

例如,直接在DOS窗口中执行mysql –V命令查看版本信息,输出结果如下。

C:\Users\Administrator>mysql  -V
    mysql  Ver 14.14 Distrib 5.6.19, for Win32 (x86)

【范例10】

使用mysql工具以root身份登录到MySQL服务器,并运行status命令查看当前MySQL服务器的状态,执行语句如下。

C:\Users\Administrator>mysql -u root -p

上述语句执行后会要求用户输入root的登录密码,如果连接成功将显示欢迎信息,并显示当前MySQL的版本号,同时显示有mysql>提示符表示进入命令行状态。此时输入“status”表示运行status命令,将看到返回结果,如图1-29所示。

图1-29 使用mysql工具查看服务器状态

1.7.3 mysqladmin工具

mysqladmin工具主要用来对数据库做一些简单操作,以及显示服务器状态等。mysqladmin的基本语法格式如下:

mysqladmin [option] command [command option] command …

直接在DOS窗口中执行mysqladmin语句或者输入“mysqladmin -?”可以查看详细语法及参数信息。

1.mysqladmin功能选项

mysqladmin的帮助信息包括三部分,第一部分为mysqladmin的功能选项,如表1-3所示对常用的选项进行了说明。

表1-3 mysqladmin的功能选项

【范例11】

例如,要查看当前mysqladmin的版本可用-V选项,执行结果如下。

C:\Users\Administrator>mysqladmin -V
    mysqladmin  Ver 8.42 Distrib 5.6.19, for Win32 on x86

2.mysqladmin命令选项

mysqladmin帮助信息的第二部分表示mysqladmin的相关变量,这里不再对这些变量进行说明。第三部分表示mysqladmin可以执行的相关服务器命令。如表1-4所示针对这些命令进行了详细说明。

表1-4 mysqladmin的命令选项

【范例12】

使用mysqladmin工具连接到MySQL并执行version命令查看MySQL数据库版本。执行结果如下。

C:\Users\Administrator>mysqladmin -u root -p version
    Enter password: ******
    mysqladmin  Ver 8.42 Distrib 5.6.19, for Win32 on x86
    Copyright (c) 2000, 2014, 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.
    Server version          5.6.19
    Protocol version        10
    Connection            localhost via TCP/IP
    TCP port              3306
    Uptime:               2 hours 2 min 39 sec
    Threads: 1  Questions: 2  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.000

【范例13】

使用mysqladmin工具连接到MySQL并执行processlist命令查看MySQL中的活跃线程列表。执行结果如下。

C:\Users\Administrator> mysqladmin -u root -p processlist
    Enter password: ******
    +----+-------+---------+------+---------+--------+-------+----------+
    | Id  | User | Host            | db  | Command  | Time | State  | Info        |
    +----+-------+---------+------+---------+--------+-------+----------+
    | 2   | root | localhost:57182   |    |  Query    | 0    | init   |show processlist |
    +-----+------+---------+------+---------+--------+-------+----------+
    
    Uptime: 7512  Threads: 1  Questions: 5  Slow queries: 0  Opens: 67  Flush tables: 1  Open tables: 60  Queries per second avg: 0.000

无论是在范例12还是范例13中,命令执行完毕后都会输出状态信息,例如MySQL服务器运行的秒数,如下对输出的各项信息进行了说明。

(1)Uptime:表示MySQL服务器已经运行的秒数。

(2)Threads:活动线程(客户)的数量。

(3)Questions:从MySQL启动以来客户问题(查询)的数量。

(4)Slow Queries:执行时间超过long_query_time秒的查询的数量。

(5)Opens:服务器已经打开的数据库表的数量。

(6)Flush tables:服务器已经执行的flush…、refresh和reload命令的数量。

(7)Open tables:目前打开的表的数量。

(8)Queries per second avg:执行平均用时秒数。

1.7.4 mysqlshow工具

mysqlshow工具可以快速地查找存在哪些数据库、数据库中的表,以及表中的列或者索引。基本语法如下:

mysqlshow[options] [db_name [tal_name [col_name]]]

在上述所示的语法中,如果没有指定数据库,则显示所有匹配的数据库;如果没有指定数据库表,则显示数据库中所有匹配的表;如果没有给出列,则显示表中所有匹配的列和列类型。

mysqlshow命令的常用选项及说明如表1-5所示。

表1-5 mysqlshow选项

【范例14】

下面通过几个语句演示mysqlshow工具的简单应用。

(1)使用mysqlshow工具连接到MySQL,如果不带其他选项默认将显示出MySQL上的所有数据库,执行结果如下。

C:\Users\Administrator >mysqlshow -u root -p
    Enter password: ******
    +----------------------------+
    |     Databases      |
    +----------------------------+
    | information_schema  |
    | mysql              |
    | performance_schema  |
    | sakila              |
    | test                |
    | world              |
    +----------------------------+

(2)如果要查看world数据库下的所有数据表名称,只需在上述命令的基础上添加world即可,执行结果如下。

C:\Users\Administrator>mysqlshow world -u root -p
    Enter password: ******
    Database: world
    +----------------------------+
    |     Tables         |
    +----------------------------+
    | city                |
    | country             |
    | +----------------------------+

(3)如果要查看world数据库下的所有数据表中包含的行数,只需在上述命令的基础上为world添加-v选项即可,执行结果如下。

C:\Users\Administrator>mysqlshow world -v -u root -p
    Enter password: ******
    Database: world
    +-------------------------+----------+
    |     Tables        | Columns|
    +-------------------------+----------+
    | city              |      5 |
    | country           |     15 |
    | countrylanguage    |      4 |
    +-------------------------+----------+
    3 rows in set..

(4)如果希望查看world数据库city表中字段的详细信息,只需在world和-v之间添加city即可,执行结果如图1-30所示。

图1-30 查看city表字段信息

1.7.5 mysqlbinlog工具

MySQL数据库将生成的日志文件写成二进制格式,如果要以文本格式查看这些文件可以使用mysqlbinlog工具。语法如下:

mysqlbinlog [options] log-files…

执行mysqlbinlog或“mysqlbinlog -?”命令可以查看它的帮助信息。该命令显示的帮助信息包括两部分,第一部分显示mysqlbinlog的功能选项,常用选项如表1-6所示;第二部分显示了mysqlbinlog命令的相关变量。

表1-6 mysqladmin执行的功能选项

通常情况下,可以使用mysqlbinlog工具直接读取二进制日志文件并将它们用于本地MySQL服务器,也可以使用--read-from-remote-server选项从远程服务器读取二进制日志。当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但是它们经常被忽略掉,除非还指定了--read-from-remote-server选项。还可以使用mysqlbinlog来读取在复制过程中从服务器所写的中继日志文件,中继日志格式与二进制日志文件相同。

【范例15】

例如,下面执行mysqlbinlog工具输出binlog.000003中包含的所有语句以及其他信息。如果指定的文件不存在,则会输入提示信息,提示该文件并不存在,结果如下。

C:\Users\Administrator>mysqlbinlog binlog.000003
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
    /*!40019 SET @@session.max_insert_delayed_threads=0*/;
    /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_
    TYPE=0*/;
    DELIMITER /*!*/;
    mysqlbinlog: File 'binlog.000003' not found (Errcode: 2 - No such file or directory)
    DELIMITER ;
    # End of log file
    ROLLBACK /* added by mysqlbinlog */;
    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
    /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

提示

本节只是简单演示了mysqlbinlog命令的使用,关于该命令查看二进制文件的信息还会在后面进行介绍,这里不再进行具体解释。

1.7.6 perror工具

对于大多数系统错误,除了内部文本信息之外,MySQL还会按下面的风格显示系统错误代码:

message…(errorno:#)
    message…(Errcode:#)

通过检查系统文档或使用perror工具,可以检查错误代码的意义。perror为系统错误代码或存储引擎(表处理)错误代码打印其描述信息。其基本语法如下:

perror [options] errorcode

【范例16】

直接执行perror工具显示的错误信息如下:

C:\Users\Administrator>perror 13 64
    OS error code  13:  Permission denied
    Win32 error code 13: 数据无效。
    Win32 error code 64: 指定的网络名不再可用。

与前面几个工具相比,perror工具要简单得多,这一点从帮助信息中就可以看出来。执行perror工具查看帮助信息,输出的帮助信息如下:

C:\Users\Administrator>perror
    perror Ver 2.11, for Win32 (x86)
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
    
    Usage: perror [OPTIONS] [ERRORCODE [ERRORCODE...]]
      -?, --help          Displays this help and exits.
      -I, --info          Synonym for --help.
      -s, --silent         Only print the error message.
      -v, --verbose       Print error code and message (default).
                       (Defaults to on; use --skip-verbose to disable.)
      -V, --version       Displays version information and exits.
    
    Variables (--variable-name=value)
    and boolean options {false|true}  Value (after reading options)
    --------------------------------- ---------------------------------
    verbose                           true