官方文档

mysqladmin 是管理 MySQL 服务器的客户端,可以用来检测服务器的配置和当前状态、创建和删除数据库等。

1. mysqladmin 的调用语法

shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...

2.mysqladmin 支持的命令

mysqladmin 中支持同时使用多个命令,结果按照命令顺序依次输出

下面示例同时使用了 processlist(对应输出的表格)和 status 命令(对应输出的最后一行):

[root@VM_120_242_centos ~]# mysqladmin -uroot -p proc stat
Enter password:
+--------+------+-----------+--------------------+---------+-------+----------+------------------+
| Id     | User | Host      | db                 | Command | Time  | State    | Info             |
+--------+------+-----------+--------------------+---------+-------+----------+------------------+
| 320665 | root | localhost | information_schema | Sleep   | 15032 |          |                  |
| 321368 | root | localhost |                    | Query   | 0     | starting | show processlist |
+--------+------+-----------+--------------------+---------+-------+----------+------------------+
Uptime: 6734749  Threads: 2  Questions: 1507498  Slow queries: 0  Opens: 2290  Flush tables: 1  Open tables: 1772  Queries per second avg: 0.223

命令支持简写(不会重名才行)

下面是 status 命令的输出:

[root@VM_120_242_centos ~]# mysqladmin -uroot -p status
Enter password:
Uptime: 6734779  Threads: 2  Questions: 1507568  Slow queries: 0  Opens: 2290  Flush tables: 1  Open tables: 1772  Queries per second avg: 0.223

mysqladmin 的可用命令列表及解释

  • create db_name:创建名为 db_name 的新数据库
  • debug:让服务器把 debug 信息写入 error log。用户需要具有特权才可以执行。这些信息的格式和内容可能会发生变化。
    这包括有关事件调度程序 Event Scheduler 的信息,参考 Event Scheduler Status。
  • drop db_name:删除数据库及库中的所有表。
  • extended-status:显示服务器的状态变量及值。
  • flush-hosts:刷新主机缓存中的所有信息。
  • flush-logs [log_type …]:刷新所有日志。
    MySQL 5.7.5,mysqladmin flush-logs 命令支持可选的日志类型,以指定要刷新的日志。在 flush-logs 命令之后,可以提供一个或多个空格分隔的日志类型列表:binary, engine, error, general, relay, slow。这些日志类型也可以用于 FLUSH LOGS SQL 语句。
  • flush-privileges:重新加载 grant 表(与 reload 相同)。
  • flush-status:清空 status 变量。
  • flush-tables: 清空所有表。
  • flush-threads:清空线程的缓存。
  • kill id,id,…:杀掉服务器线程。如果给出多个线程ID值,则列表中不能有空格。如果要杀死其他用户的线程,则需要特权。
  • old-password new_password:废弃。类似于下面的 password 命令,但是用旧的密码哈希格式(4.1 之前的版本)。可以参考 Section 6.1.2.4, “Password Hashing in MySQL”。
  • password new_password:设置新密码。将当前通过 mysqladmin 连接到服务器的用户的密码从 password 改为 new_password。

    警告:
    用 mysqladmin 设置密码是不安全的。在某些操作系统上,密码对对系统状态程序(例如 Linux 的 ps 命令)可见,导致可以被其他用户获取密码。MySQL 客户端通常在其初始化序列中用零覆盖命令行密码参数。但是,仍然有一个短暂的时间间隔,可以看到该值。另外,在某些系统上,这种覆盖策略是无效的,密码对 ps 仍然可见。
    如果 new_password 包含空格或其他特殊字符,则需要将其放在引号内。在 Windows 上,一定要使用双引号而不是单引号; 单引号会被解释为密码的一部分。 例如:
    shell> mysqladmin password "my new password"
    在MySQL 5.7中,password 命令后可以省略新密码。在这种情况下,mysqladmin 会提示输入密码值,这样可以避免在命令行上指定密码。 只有在 password 是 mysqladmin 命令行上的最后一个命令时,才应该省略密码值。

    注意:
    如果使用 --skip-grant-tables 选项启动服务器,请勿使用此命令。密码更改命令不会生效。即使在同一命令行上使用带 flush-privileges 选项的 password 命令来重新启用 grant 表,因为连接后会发生刷新操作,情况也是如此。但是,可以使用 mysqladmin flush-privileges 重新启用 grant 表,然后使用单独的 mysqladmin password 命令更改密码。

  • ping:检查服务器是否可用。如果服务器在运行中,返回 0,否则返回 1。即使发生 Access denied 等报错,也会返回 0,因为这表示服务器已经运行了但是拒绝连接。

  • processlist:显示服务器活动线程的列表。就像 SHOW PROCESSLIST 语句的输出一样。如果给出 --verbose 选项,则输出与 SHOW FULL PROCESSLIST 的输出相同。 (请参见第13.7.5.29节“SHOW PROCESSLIST语法”。)
  • reload:重新加载 grant 表。
  • refresh:刷新所有表,关闭并打开日志文件。
  • shutdown:停止服务器。
  • start-slave:在从属服务器上启动副本。
  • status:显示简短的服务器状态信息。
  • stop-slave:停止从属服务器上的副本。
  • variables:显示服务器的系统变量和值。
  • version:显示服务器版本信息。

3. mysqladmin status 命令的结果解析

  • Uptime:MySQL 服务器运行的总时间。
  • Threads:活跃线程数(客户端)。
  • Questions:服务器启动后,从客户端收到的请求(questions,queries)的总个数。
  • Slow queries:查询时长大于 long_query_time 的慢查询的个数。参考 Slow Query Log。
  • Opens:服务器打开的表的总数量。
  • Flush tables:服务器执行过的 flush-*refreshreload 命令。
  • Open tables:当前处于开启状态的表的数量。

4. mysqladmin 支持的选项

如果通过 Unix 套接字文件连接到本地 MySQL 服务器,执行 mysqladmin shutdown 时 mysqladmin 会等待,直到服务器的进程 ID 文件已被删除,以确保服务器已正确停止。

mysqladmin 支持以下选项,可以在命令行或选项文件的 [mysqladmin] 和 [client] 组中指定。有关 MySQL 程序使用的选项文件的信息,可以参考第4.2.6节 “Using Option Files”。

  • --help, -?:显示帮助信息并退出。
  • --bind-address=ip_address:在多网卡的机器上,指定用于连接 MySQL 服务器的接口。
  • --character-sets-dir=dir_name:安装字符集的目录,参考 Section 10.14, “Character Set Configuration”。
  • --compress, -C:如果客户端和服务器端都支持压缩,则压缩二者之间所有的信息。
  • --count=N, -c N:如果给出 --sleep 选项,则命令会重复执行 N 次。
  • --debug[=debug_options], -# [debug_options]:写 debug 日志。典型的 debug_options 字符串是 d:t:o,file_name,默认值是 d:t:o,/tmp/mysqladmin.trace
  • --debug-check:程序退出时打印 debug 信息。
  • --debug-info:程序退出时打印 debug 信息及内存和 CPU 使用情况的统计信息。
  • --default-auth=plugin:关于使用客户端身份验证插件的提示。参见 Section 6.3.9, “Pluggable Authentication”。
  • --default-character-set=charset_name:使用 charset_name 作为默认字符集。参考 Section 10.14, “Character Set Configuration”。
  • --defaults-extra-file=file_name:在全局选项文件之后(Unix)、用户选项文件之前读取这个选项文件。如果文件不存在或不可访问,会报错。
  • --defaults-file=file_name:只使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果使用相对路径,file_name 将相对于当前目录进行解释。
    例外:即使使用 --defaults-file,客户端程序也会读取 .mylogin.cnf
  • --defaults-group-suffix=str:除了读取通常的选项组外,还要读取名称中包含后缀 str 的组。例如,mysqladmin 通常读取 [client] 和 [mysqladmin] 组。如果给出了 --defaults-group-suffix=_other 选项,mysqladmin 也会读取 [client_other] 和 [mysqladmin_other] 组。
  • --enable-cleartext-plugin:启用 mysql_clear_password 明文身份验证插件。参考 Section 6.5.1.5, “Client-Side Cleartext Pluggable Authentication”
  • --force, -fdrop db_name 命令执行时不需再次确认。其他命令时即使发生错误也继续执行。
  • --host=host_name, -h host_name:连接这个 host 上的 MySQL 服务器。
  • --login-path=name:从 .mylogin.cnf 登录路径文件中的指定登录路径读取选项。“login path”是一个选项组,其中包含指定要连接哪台 MySQL 服务器以及要认证哪个帐户的选项。使用 mysql_config_editor 程序可以创建或修改登录路径文件。参考 Section 4.6.6, “mysql_config_editor — MySQL Configuration Utility”
  • --no-beep, -b:抑制默认发出的警告蜂鸣声,例如无法连接到服务器等错误。
  • --no-defaults:不读取默认选项文件。如果由于从选项文件读取未知选项而导致程序启动失败,可以使用 --no-defaults
    .mylogin.cnf 文件是个例外。即使在使用 --no-defaults 时,这也允许以比命令行更安全的方式指定密码。(.mylogin.cnf 由 mysql_config_editor 程序创建,请参见 Section 4.6.6, “mysql_config_editor — MySQL Configuration Utility”)
  • --password[=password], -p[password]:登录服务器的密码。使用 -p 时,密码和 -p 之间不能有空格。如果在命令行上的 --password-p 选项之后省略了密码值,可以在 mysqladmin 启动后根据提示输入密码。通过命令行指定密码是不安全的。可以使用选项文件。参考 Section 6.1.2.1, “End-User Guidelines for Password Security”。
  • --pipe, -W:在 Windows 下使用 named pipe 连接到服务器。需要服务器支持。
  • --plugin-dir=dir_name:在这个目录中查找插件。如果使用 --default-auth 选项指定身份验证插件,但 mysqladmin 找不到它,请指定此选项。参考 Section 6.3.9, “Pluggable Authentication”。
  • --port=port_num, -P port_num:要用于连接的 TCP/IP 端口号。
  • --print-defaults:打印程序名和程序从选项文件中获取的所有选项。
  • --protocol={TCP|SOCKET|PIPE|MEMORY}:用于连接到服务器的协议。需要指定连接协议时非常有用。有关允许值的详细信息,参考 Section 4.2.2, “Connecting to the MySQL Server”。
  • --relative, -r:使用 --sleep 选项时,显示当前值和以前值之间的差异。该选项仅适用于 extended-status 命令。
  • --show-warnings:发送到服务器的语句执行时如果发生警告,则显示警告。这个选项是在 MySQL 5.7.2 中添加的。
  • --secure-auth:废弃。
  • --shared-memory-base-name=name:在 Windows 上使用的共享内存名称,用于使用共享内存连接到本地服务器。默认值是 MYSQL。共享内存名称区分大小写。
    必须使用 --shared-memory 选项启动服务器以启用共享内存连接。
  • --silent, -s:如果无法建立到服务器的连接,安静退出。
  • --sleep=delay, -i delay:重复执行命令,间隔指定的 delay 秒。--count 选项决定命令执行次数。如果没有指定 --count 选项,则 mysqladmin 一直执行下去,直到退出命令。
  • --socket=path, -S path:对于连接到 localhost,要使用的 Unix 套接字文件,或者在 Windows 上,使用的命名管道的名称。
  • --ssl*:以 --ssl 开头的选项指定是否使用 SSL 连接到服务器,并指出在哪里可以找到 SSL 密钥和证书。参考 Section 6.4.2, “Command Options for Encrypted Connections”。
  • --tls-version=protocol_list:客户端允许的加密连接协议。该值是一个逗号分隔列表,包含一个或多个协议名称。可以为这个选项命名的协议取决于用于编译 MySQL 的 SSL 库。参考 Section 6.4.6, “Encrypted Connection Protocols and Ciphers 加密连接协议和密码”。该选项已添加到 MySQL 5.7.10 中。
  • --user=user_name, -u user_name:MySQL 用户名。
  • --verbose, -v:显示冗余信息。Verbose 模式。
  • --version, -V:显示版本信息并退出。
  • --vertical, -E:垂直打印输出。与 --relative 类似,但垂直打印输出。
  • --wait[=count], -w[count]:如果无法建立连接,等待并重试,而不是中止。可以指定重试的次数,默认是 1 次。
  • connect_timeout:连接超时的最大秒数。默认值是 43200(12 小时)。可以通过 --connect_timeout=value 指定。
  • shutdown_timeout:等待服务器关机的最大秒数。默认值是 3600(1 小时)。可以通过 --shutdown_timeout=value 指定。

5. 示例

5.1 使用 mysqladmin extended-status 获取 MySQL 的运行状态

因为没有歧义,mysqladmin extended-status 可以简写为 mysqladmin ext

mysqladmin extended-status 命令可以获取 MySQL 的所有静态性能指标,类似 SHOW GLOBAL STATUS。如果想了解当前的状态,则需要配合下面两个选项:

  • -r(--relative) :进行差值计算,查看各个指标的差值
  • -i(--sleep):指定刷新的频率

每隔 1 秒查看所有指标的差值

-i1 表示每隔 1 秒刷新一次,-r 表示显示差值。每次刷新都显示 SHOW GLOBAL STATUS 下的几百个指标:

[root@VM_120_242_centos ~]# mysqladmin -uroot -p -i1 -r ext
Enter password:
+-----------------------------------------------+--------------------------------------------------+
| Variable_name                                 | Value                                            |
+-----------------------------------------------+--------------------------------------------------+
| Aborted_clients                               | 275                                              |
| Aborted_connects                              | 82339                                            |
| Binlog_cache_disk_use                         | 0                                                |
| Binlog_cache_use                              | 0                                                |
...
+-----------------------------------------------+--------------------------------------------------+...+-----------------------------------------------+--------------------------------------------------+
| Variable_name                                 | Value                                            |
+-----------------------------------------------+--------------------------------------------------+
| Aborted_clients                               | 0                                                |
| Aborted_connects                              | 82339                                            |
| Binlog_cache_disk_use                         | 0                                                |
...
+-----------------------------------------------+--------------------------------------------------+

配合 grep 过滤指定行

通过 grep 过滤输出信息后,可以只显示感兴趣的指标:

[root@VM_120_242_centos ~]# mysqladmin -uroot -r -i1 -p ext | grep "Questions\|Queries\|Innodb_rows\|Com_select \|Com_insert \|Com_update \|Com_delete "
Enter password:
| Com_delete                                    | 2352                                             |
| Com_insert                                    | 2466                                             |
| Com_select                                    | 764872                                           |
| Com_update                                    | 31858                                            |
| Innodb_rows_deleted                           | 32                                               |
| Innodb_rows_inserted                          | 2104036                                          |
| Innodb_rows_read                              | 454806700                                        |
| Innodb_rows_updated                           | 12326                                            |
| Queries                                       | 1510593                                          |
| Questions                                     | 1419664                                          |
| Com_delete                                    | 0                                                |
| Com_insert                                    | 0                                                |
| Com_select                                    | 0                                                |
| Com_update                                    | 0                                                |
| Innodb_rows_deleted                           | 0                                                |
| Innodb_rows_inserted                          | 0                                                |
| Innodb_rows_read                              | 0                                                |
| Innodb_rows_updated                           | 0                                                |
| Queries                                       | 1                                                |
| Questions                                     | 1                                                |
| Com_delete                                    | 0                                                |
| Com_insert                                    | 0                                                |
| Com_select                                    | 0                                                |
| Com_update                                    | 0                                                |
| Innodb_rows_deleted                           | 0                                                |
| Innodb_rows_inserted                          | 0                                                |
| Innodb_rows_read                              | 0                                                |
| Innodb_rows_updated                           | 0                                                |
| Queries                                       | 1                                                |
| Questions                                     | 1                                                |
^C

配合 awk

awk 不支持动态变量,需要自己计算。

[root@VM_120_242_centos ~]# mysqladmin -uroot -p -i1 ext | awk '/Queries/{q=$4-qp;qp=$4} /Threads_connected/{tc=$4} /Threads_running/{printf "%5d %5d %5d\n", q, tc, $r}'
Enter password:
1510653     2     01     2     01     2     01     2     01     2     01     2     0
^C

mysqladmin - 管理 MySQL 服务器、获取运行状态相关推荐

  1. MySQL服务器参数介绍

    前面介绍了服务器硬件,操作系统,和数据库引擎对数据库性能的影响,现在我们再来看看,MYSQL服务器配置,是如何影响MYSQL性能的,大家知道,MYSQL有大量可以修改的参数,以我们演示的MYSQL系统 ...

  2. mysql服务器查绑定的域名查_MySQL使用show status查看MySQL服务器状态信息

    MySQL使用show status查看MySQL服务器状态信息 这篇文章主要介绍了MySQL使用show status查看MySQL服务器状态信息,需要的朋友可以参考下 在LAMP架构的网站开发过程 ...

  3. 使用Navicat管理MySQL用户

    课程前言 [前面一篇学习了用SSH客户端远程连接MySQL服务器的情况下,如何使用MySQL命令查询.创建.删除MySQL普通用户,以及修改用户的密码等操作.对于熟悉MySQL命令的开发者来说,自然不 ...

  4. 一、MySql服务器

    一.MySql服务器 1.简介 MySql服务器 MySql服务器就是指MySql数据库,它是一个关系型数据库管理系统 MySql使用的SQL语言是用于访问数据库的最常用标准化语言 MySql有着体积 ...

  5. 知识分享 | mysql服务器启动后,为啥有mysqld_safe和mysqld 2个进程?

    在mysql服务器启动后,有2个进程mysqld_safe和mysqld,这是为啥? 如下: [root@ethanyang bin]# ps -ef | grep mysqld root 6488 ...

  6. MySQL 数据库命令之 mysqladmin -- MySQL 服务器管理客户端

    文章目录 一.介绍 二.语法格式 三.命令参数 (一)参数默认值 (二)默认参数 四.支持的管理命令 五.参考示例 (一)每隔两秒查看一次服务器的状态,总共重复 5 次 (二)修改 root 密码 ( ...

  7. Database基础(一):构建MySQL服务器、 数据库基本管理 、MySQL 数据类型、表结构的调整...

    一.构建MySQL服务器 目标: 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认 ...

  8. easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?

    最近在看<高性能的 Mysql>一书,下面是关于如何学习统计 Mysql 服务器状态的学习总结,主要是学习使用 SHOW STATUS,SHOW ENGINE INNODB STATUS, ...

  9. mysql 服务器 管理工具_Mysql15款最佳管理工具

    [IT168 评论]如今,Web应用程序的响应速度是成功的关键法宝之一.它与用户互动,用户对网站的看法,甚至谷歌网站排名情况都有着密不可分的关系.数据库性能是响应速度最重要的因素之一,一旦出错,所有程 ...

最新文章

  1. Cassandra 总接归纳
  2. Winpcap进行抓包,分析数据包结构并统计IP流量
  3. php 获取所有下周1,用php获取本周,下周,本月,下月,本季度日期(摘)
  4. 【upc5020】 Knight
  5. Linux安装ImageMagick与JMagick完成过程及配置
  6. Storage 使用
  7. 基站寻找邻居节点索引号的MATLAB代码
  8. FastAdmin 开发环境详细设置 (2017)
  9. 机器学习 | 数学基础
  10. PDF转WORD乱码怎么办
  11. Kali最新2020.1版本之U盘启动加密与持久化存储制作流程
  12. js怎样向html中添加内容,使用js向网页中写入html内容
  13. 想让Button带个图片?安排!LVGL『Image button图片按键控件』介绍
  14. 浏览器访问服务器的流程
  15. Win7 X64 SQL SERVER 2000企业管理器无法建立新表
  16. stm32F105的Canable开源usb-can项目
  17. 有关lua,luci的介绍
  18. 《JavaScript高级编程》HTML中的JavaScript
  19. 【网络教程】设置远程开启,主板如何开启网络唤醒,华硕主板网络唤醒 WOL 的设置与实现!
  20. 技术提升了,钱自然就来了:盘点这段时间我挣钱的感受

热门文章

  1. 若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起
  2. 应用程序正常初始化(0xc150002)失败
  3. android studio将一个页面信息传送到另一个页面并显示
  4. MotionLayout MotionScene 动画从未如此简单!
  5. 《WinForm开发系列之控件篇》Item2 BindingNavigator
  6. java设置excel单元格文本右对齐,POI操作Excel--设置单元格对齐方式--day03
  7. Quectel EC200A-CN移植
  8. RGB 颜色透明16进制表示
  9. 锐捷服务器无系统如何进pe,没有u盘怎么进入pe系统,网络启动进PE做系统教程...
  10. hive时间戳函数之unix_timestamp(),from_unixtime,to_utc_timestamp