当前位置: 首页 > news >正文

【MySQL高阶】3.工具包中的其他程序(1)

文章目录

  • 4. 工具包中的其他程序
    • 4.1 mysqlcheck - 表维护程序
      • 4.1.1 作用
      • 4.1.2 注意事项
      • 4.1.3 使用方法
      • 4.1.4 常用选项
      • 4.1.5 mysqlcheck的特殊使用
    • 4.2 Mysqldump - 数据库备份程序
      • 4.2.1 作用
      • 4.2.2 注意事项
      • 4.2.3 使用方法
      • 4.2.4 常用选项
    • 4.3 mysqladmin - MySQL 服务器管理程序
      • 4.3.1 作用
      • 4.3.2 使用方法
      • 4.3.3 常用选项
      • 4.3.4 支持的命令

4. 工具包中的其他程序

在命令行中使用MySQL发行版中的其他工具时,一些选项是公共的,比如用户名和密码,使用方法和mysql相同,在这里统一列出,后面我们在介绍不同的工具时,只讨论个性的选项及作用,公共选项如下所示:

选项–长格式短格式说明
--host-h--host=host_name , -h host_name
连接到指定主机上的MySQL服务
--port-P--port=port_num , -P port_num
TCP/IP连接使用的端口号
--user-u--user=user_name , -u user_name
用于连接到MySQL服务器的用户名
--password-p--password[=password] , -p[password]
用于连接到MySQL服务器的密码。可选,如果没有给出, 会提示用户输入
--defaults-file--defaults-file=file_name
使用指定的选项文件。如果该文件不存在,则会发生错误。
--compress-C--compress , -C
如果可能,压缩客户端和服务器之间传输的所有信息
--protocol`–protocol={TCP
--version-V--version , -V
显示版本信息并退出。
--help-?--help , -?
显示帮助信息并退出。

4.1 mysqlcheck - 表维护程序

4.1.1 作用

mysqlcheck客户端用于执行表维护,可以对表进行:分析、检查、优化或修复操作。

  • 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB
  • 检查的作用是检查表的完整性以及数据库表和索引是否损坏(支持InnoDB,MyISAM,ARCHIVE,CSV
  • 优化的作用是回收空间、减少碎片、提高I/O(支持InnoDB,MyISAM,ARCHIVE
  • 修复的作用是修复可能已经损坏的表(支持MyISAM,ARCHIVE,CSV

4.1.2 注意事项

  1. 当使用mysqlcheck工具时,MySQL服务器必须在运行状态
  2. 执行过程中相应的表将会被锁定,所以其他的操作将会被挂起
  3. 并不是所有的存储引擎都支持以上四种操作,如果遇到不支持的引擎会报出相应的错误
  4. 执行表修复操作之前对表进行备份,在某些情况下可能会导致数据丢失。

4.1.3 使用方法

一般通过以下三种方法使用mysqlcheck

mysqlcheck [options] db_name [tbl_name ...] mysqlcheck [options] --databases db_name ... mysqlcheck [options] --all-databases

如果在db_name后没有指定任何表名,或者使用--databases--all-databases选项,那么整个数据库都会被检查。


4.1.4 常用选项

mysqlcheck有如下常用选项,可以在命令行中指定,也可以在选项文件中通过[mysqlcheck][client]组进行指定

选项说明
--analyze,-a分析表
--auto-repair如果检查的表有损坏,则自动修复它。所有表都检查过之后才进行必要的修复
--check,-c检查表中的错误。mysqlcheck的默认操作
--check-only-changed,-C仅检查自上次检查以来更改过的表
--databases,-B--databases db_name多个数据库名用空格隔开
处理指定数据库中的所有表
--force, -f即使发生SQL错误也要继续
--optimize,-o优化表
--repair,-r执行可能进行的任务修复操作,除了唯一键
--skip-database--skip-database=db_name
不需要执行检查的数据库名(区分大小写)
--tables--tables=table_name多个表名用空格隔开
在选项之后的所有名称参数都被视为表名。
--use-frm对于MyISAM表的修复操作

示例:

root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqlcheck -a test_db Enter password: test_db.classes OK test_db.course OK test_db.score OK test_db.student OK root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqlcheck --check test_db Enter password: test_db.classes OK test_db.course OK test_db.score OK test_db.student OK root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqlcheck -r test_db Enter password: test_db.classes note : The storage engine for the table doesn't support repair test_db.course note : The storage engine for the table doesn't support repair test_db.score note : The storage engine for the table doesn't support repair test_db.student note : The storage engine for the table doesn't support repair root@iZuf68hz06p6s2809gl3i1Z:~/108_class#

这里会报错,是因为我们这个数据库创建的引擎是InnoDB,有的引擎会不支持这个命令。

那么怎么办呢?总不能说放弃这个引擎创建的表吧。

修复不支持InnoDB存储引擎的时候,要把InnoDB存储引擎的表转换成Mylsam存储引擎(这个存储引擎修复优化很厉害)。

root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqlcheck -o test_db Enter password: test_db.classes note : Table does not support optimize, doing recreate + analyze instead # 可以理解为重新开辟一个控件,把原来的数据一个个复制过来 status : OK test_db.course note : Table does not support optimize, doing recreate + analyze instead status : OK test_db.score note : Table does not support optimize, doing recreate + analyze instead status : OK test_db.student note : Table does not support optimize, doing recreate + analyze instead status : OK root@iZuf68hz06p6s2809gl3i1Z:~/108_class#

官网建议不要经常去执行优化操作。比如,一个小时或一天。

一般来说小表可以不优化,大表一个月一次也可以。


4.1.5 mysqlcheck的特殊使用

mysqlcheck程序的默认功能是对数据表进行 检查 操作(相当于指定选项--check),如果想要对表进行修复操作,可以通过复制原来的mysqlcheck程序,并重命名为mysqlrepair,并运行mysqlrepair即可,还可以创建mysqlcheck的快捷方式,并把快捷方式命名为mysqlrepair然后直接运行,这时就执行的是修复操作。

通过下表所示的命名方式可以改变mysqlcheck的默认行为:

程序名说明
mysqlrepair默认行为是修复,相当于选项--repair
mysqlanalyze默认行为是修复,相当于分析--analyze
mysqloptimize默认行为是修复,相当于优化--optimize

4.2 Mysqldump - 数据库备份程序

4.2.1 作用

mysqldump客户端程序可以执行逻辑备份并生成一组SQL语句,其中包含原始数据库和表的定义以及表中的数据,以便实现对数据库的简单备份或复制。mysqldump命令可以生成CSV、或XML格式的文件。


4.2.2 注意事项

  1. 转储表时必须要有SELECT权限
  2. 转储视图时必须要有SHOW VIEW权限
  3. 转储触发器时必须要有TRIGGER权限
  4. 如果没有使用--single-transaction选项时必须要有LOCK TABLES权限
  5. 如果没有使用--no-tablespaces选项时必须要有PROCESS权限
  6. 重新导入转储文件时,也需要有相应的权限
  7. 由于mysqldump是逐行转储数据,所以不适用于大数据量的转储与导入

4.2.3 使用方法

mysqldump的方法通常有以下使用,可以转储一个或多个表或数据库,如下所示:

mysqldump [options] db_name [tbl_name ...] mysqldump [options] --databases db_name ... mysqldump [options] --all-databases

如果在db_name后没有指定任何表名,或者使用--databases--all-databases选项,那么整个数据库都会被转储。


4.2.4 常用选项

mysqldump有如下常用选项,可以在命令行中指定,也可以在选项文件中通过[mysqldump][client]组进行指定。

选项说明
--add-drop-database在每个CREATE DATABASE语句之前添加DROP DATABASE语句
--add-drop-table在每个CREATE TABLE语句之前添加DROP TABLE语句
--add-drop-trigger在每个CREATE TRIGGER语句之前添加DROP TRIGGER语句
--add-locksLOCK TABLESUNLOCK TABLES语句包裹每个表转储
--all-databases,-A转储所有数据库中的所有表
--databases,-B--databases=db_name多个数据库名用空格隔开
将参数解释为数据库名称并转储所有的表
--comments,-i添加注释到转储文件
--compact紧凑格式输出(类似于多个insert语句合并成一条)
--compatible=ansi生成与其他数据库或旧MySQL服务器更兼容的输出
--complete-insert,-c使用包含列名的完整INSERT语句
--events,-E从转储数据库中转储事件
--extended-insert,-e使用多行INSERT语法
--flush-logs,-F在开始转储前刷新日志
--flush-privileges在转储后刷新权限
--force,-f转储期间发生了SQL错误,也要继续
--hex-blob使用十六进制表示法转储二进制列
--ignore-table--ignore-table=db_name.table_name多个表用空格隔开
不转储给定的表
--lock-all-tables,-x锁定所有数据库中的所有表
--lock-tables,-l在转储之前锁定指定要转储的表
--no-autocommit将每个转储表的INSERT语句包含在SET autocommit = 0COMMIT语句中
--no-create-db,-n不要生成CREATE DATABASE语句
--no-create-info,-t不要为每个转储的表生成CREATE TABLE语句
--no-data,-d不转储表内容
--skip-add-drop-table在每个CREATE TABLE语句之前不添加DROP TABLE语句
--skip-add-locks不要添加锁
--skip-comments转储文件中不添加注释
--skip-compact不使用紧凑格式
--skip-triggers不转储触发器
--tables--tables=table_name多个表名用空格隔开
在选项之后的所有名称参数都被视为表名。
--triggers转储每个表中的触发器
--xml,-XXML格式输出

例子1:导出test_db单个数据库

这里的test_db是只导出指定的数据库名。

/root/dump.sql是导出的文件地址

root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqldump test_db>/root/dump.sql # 将名为 test_db 的数据库备份(导出)到 /root/dump.sql 文件中 Enter password: root@iZuf68hz06p6s2809gl3i1Z:~/108_class# cd /root root@iZuf68hz06p6s2809gl3i1Z:~# ls 108_class code dump.sql mysql.cnf root@iZuf68hz06p6s2809gl3i1Z:~#

例子2:导出MySQL所有数据库

将整个MySQL服务器中所有数据库的“表结构(不含数据)”导出到了一个文件中。

  1. -A:转储所有数据库中的所有表。

  2. --add-drop-database:在每个CREATE DATABASE语句之前添加DROP DATABASE语句。

    • 作用是:当你未来拿着这个文件去恢复/导入时,会先把同名的旧数据库删掉再重建,防止新旧结构冲突。
  3. --no-data:不转储表内容。只导出表结构,不导出表里面的具体数据。

root@iZuf68hz06p6s2809gl3i1Z:~# mysqldump -A --add-drop-database --no-data > /root/dump2.sql # 通常这个用于新环境初始化,备份了表结构 Enter password: root@iZuf68hz06p6s2809gl3i1Z:~# ls 108_class code dump2.sql dump.sql mysql.cnf

4.3 mysqladmin - MySQL 服务器管理程序

4.3.1 作用

mysqladmin是一个执行管理操作的客户端。可以用来检查服务器的配置和当前状态,以及创建和删除数据库等。

配合使用mysqladmin的用户必须具备管理员权限。


4.3.2 使用方法

mysqladmin可以使用以下语法:

mysqladmin [options] command [command-arg] [command [command-arg]] ... mysqladmin [选项] 命令 [命令参数] [命令] [命令参数] ...

4.3.3 常用选项

mysqladmin的常用选项参考公共选项部分,可以在命令行中指定,也可以在选项文件中通过[mysqladmin][client]组进行指定。


4.3.4 支持的命令

语法中的command表示命令,有些命令后面需要跟上一个参数,如下列出了mysqladmin的常用命令:

  1. version:显示来自服务器的版本信息。

    • Uptime MySQL:服务器已运行的秒数。
    • Threads:活动线程(客户端)的数量。
    • Questions:自服务器启动以来客户端的问题(查询)数。
    • Slow queries:慢SQL的查询数。
    • Opens:服务器已打开的表数。
    • Flush tables:服务器已执行flush-*refreshreload命令的数量。
    • Open tables:当前打开的表数。
# 查看MySQL版本 root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqladmin version Enter password: mysqladmin Ver 8.0.42 for Linux on x86_64 (MySQL Community Server - GPL) Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 8.0.42 Protocol version 10 Connection 127.0.0.1 via TCP/IP TCP port 3306 Uptime: 181 days 17 hours 32 min 43 sec Threads: 2 Questions: 232001598 Slow queries: 6 Opens: 904 Flush tables: 3 Open tables: 522 Queries per second avg: 14.775 # 查看服务器状态 root@iZuf68hz06p6s2809gl3i1Z:~/108_class# mysqladmin status Enter password: Uptime: 15701590 Threads: 2 Questions: 232001600 Slow queries: 6 Opens: 904 Flush tables: 3 Open tables: 522 Queries per second avg: 14.775 root@iZuf68hz06p6s2809gl3i1Z:~/108_class#
  1. create db_name
    创建一个数据库名为db_name

    创建数据库时使用的编码集是选项文件中配置的编码集,如果没有指定那么使有和当前MYSQL版本默认的编码集。

  1. drop db_name
    删除名为db_name的数据库及其所有表。

  2. extended-status
    显示服务器状态变量的值。

  3. flush-hosts
    刷新主机缓存中的所有信息。

  4. flush-logs [log_type ...]
    刷新所有日志。log_type中可以提供以下一种或多种日志类型binary, engine, error, general, relay, slow,多个类型之间用空格分隔。

  5. flush-privileges
    重新加载授权表

  6. flush-status
    清除状态变量。

  7. flush-tables
    刷新所有表。

  8. flush-threads
    刷新线程缓存。

  9. password new_password

设置新密码。

  • 如果密码中有空格必须用双引号把密码包裹起来

  • password后可以省略新密码,mysqladmin会在之后提示输入新密码

    • password做为最后一个command时才可以省略密码值,否则下一个参数将作为密码被设置。

    • Warning有可能存在安全问题:使用mysqladmin设置密码应被视为不安全的做法。在某些系统上,你的密码对系统状态程序(如ps)是可见的,其他用户可能会调用这些程序来显示命令行。MySQL客户端通常会在其初始化序列期间将命令行密码参数覆盖为零。然而,仍然存在一个短暂的时间窗口,在此期间密码值是可见的。此外,在某些系统上,这种覆盖策略无效,密码对ps仍然可见。(SystemV Unix系统及其他系统可能存在此问题。)

  1. ping
    检查服务器是否可用

  2. processlist
    显示活动服务器线程的列表。

    默认的MYSQL服务器可以维护150个活动连接,如果连接被用完,那么可以通过KILL指定去手结束放休眠时间最长的那个线程。

root@iZuf68hz06p6s2809gl3i1Z:~# mysqladmin processlist Enter password: +------+-----------------+-----------------+----+---------+----------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+-----------------+-----------------+----+---------+----------+------------------------+------------------+ | 5 | event_scheduler | localhost | | Daemon | 15703290 | Waiting on empty queue | | | 2703 | root | localhost:43412 | | Query | 0 | init | show processlist | +------+-----------------+-----------------+----+---------+----------+------------------------+------------------+ root@iZuf68hz06p6s2809gl3i1Z:~#
  1. kill id , id ,...
    终止服务器线程。如果给出了多个线程ID值,则列表中不能有空格。
  2. reload
    重新加载授权表。
  3. refresh
    刷新所有表。
  4. shutdown
    停止服务器。
  5. start-replica
    在副本服务器上开始复制。MySQL 8.0.26及以后的版本使用此命令。
  6. start-slave
    在副本服务器上开始复制。MySQL 8.0.26之前使用此命令。
  7. status
    显示简短的服务器状态消息。
  8. stop-replica
    停止副本服务器上的复制。MySQL 8.0.26及以后的版本使用此命令。
  9. stop-slave
    停止副本服务器上的复制。MySQL 8.0.26之前使用此命令。
  10. variables
    显示服务器系统变量及其值。
http://www.jsqmd.com/news/928320/

相关文章:

  • 2026年5月邯郸黄金变现全攻略:余生黄金回收984元/克领跑,6家正规门店实力排行无死角覆盖 - 余生黄金回收
  • 2026年5月江门黄金回收全域避坑指南:【余生黄金回收】综合实力排行第一 - 余生黄金回收
  • 2026杭州萧山黄金回收推荐,黄金回收商,金丝回收,黄金保管,劳力士回收,范思哲包回收优选指南! - 品牌鉴赏师
  • Hugging Face数据集实战:10大NLP数据集解析与高效应用指南
  • 分享一些日常爱牙小习惯
  • 【字节跳动】豆包的系统对用户各类隐私数据的全面抓取方案,涉及八大核心领域:1.物流信息(实名收寄件、驿站记录、包裹内容);2.健康数据(诊疗记录、用药信息、体检报告);3.职场隐私(薪资、求职意向、同
  • 【大模型对话】大模型对话送审核心知识点
  • 2026年Q2口碑好的合肥防水补漏公司推荐|最新专业防水补漏公司排名官方权威发布 - 安互工业信息
  • 星辰变归来手游官网下载:星辰变归来最新官方下载渠道
  • 2026年5月30日实测|江门黄金回收靠谱测评:【余生黄金回收】星级档位第一 - 余生黄金回收
  • 包头 cppm 培训机构中供国培首选 - 中供国培
  • 解决USB断连终极指南
  • FreePBX不止是内部电话:用它低成本搭建一个小型呼叫中心需要几步?
  • 主流数据库通吃!一款开源实用的数据库备份管理工具!
  • AI教材写作新突破!高效工具助力低查重教材编写,轻松搞定长篇内容!
  • 【MySQL高阶】9.在一台机器上运行多个MySQL实例
  • 2026年|论文求生:AIGC检测走红,全网最全国内外10大免费降AI率工具避坑指南 - 降AI实验室
  • LLM 推理框架大战 2026:谁才是真正的性能王者?
  • 浏览器市场与用户画像分析-数据加工
  • 跨学科共情AI:多模态感知与情感推理的架构设计与工程实践
  • 别死磕 `brctl` 了!一文讲透 Linux 网桥的“前世今生”与避坑指南(本文ai作为编辑)
  • Gemini 英文论文(SCI/EI)写作:从“中式英语”到顶刊表达的实战重构
  • 如何高效使用RePKG:Wallpaper Engine资源提取与TEX转换完整指南
  • # 2026年国内莱赛尔牛仔布公司排行榜:广东佛山等地,五大推荐榜单 - 十大品牌榜
  • 2026 浙江湖州市(全区域服务)本地人必选彩钢瓦金属屋面防水防腐公司避坑指南 TOP5 推荐 - 本地便民网
  • 【C++基础】循环结构
  • 怎么寄快递更划算?普通人的经验与注意事项
  • 【SRC漏洞挖掘系列】第15期:自动化与AI赋能 —— 打造你的专属“漏洞挖掘机”
  • 第二周小学期任务
  • 基于分数阶傅里叶变换与LSTM的AI音乐生成系统:原理、实现与调优