【MySQL】常见可执行程序

本文使用的版本是MySQL8,5.7可能会有所不同。

MySQL提供了一些重要的程序用来管理和操作数据库。这里会介绍一些常用的程序及其使用。对于MySQL程序的使用,可以查看官方帮助手册来学习。

MySQL :: MySQL 8.0 Reference Manual :: 6 MySQL Programs

程序存放位置

对于Linux,这些程序通常在 /usr/bin目录下

对于Windows,文件则是 安装MySQL目录下的bin中

程序概览

程序名 作用
mysqld MySQL的守护进程,d是daemon。 这个程序就代表着MySQL服务器,只有当它运行起来,MySQL才能提供服务。
mysql MySQL客户端。通常用于交互或者批处理执行sql。
mysqlcheck 检查、修复、分析和优化表。
mysqldump 把MySQL的数据库转存成sql、文本或者xml文件。
mysqlimport 把文本文件导入到数据库。
mysqladmin MySQL的管理工具,用于创建、删除数据库,重新加载授权表,将表刷新到磁盘,重新打开日志文件,检查服务器状态等。
mysqlshow 显示数据库、表、列和索引的客户端。
mysqldumpslow 读取和汇总慢速查询日志。
mysqlbinlog 从二进制日志中读取sql语句。可从崩溃中恢复数据
mysqlslap 客户端负载工具,模拟多个客户端访问服务器,并报告每个阶段使用的时间。

程序的选项说明

由于下面的程序中都会使用到选项,这里对于选项做一个说明。只针对MySQL中的程序

选项介绍

选项通常以一种预定义的格式出现,用户可以通过命令行或者程序接口来指定这些选项。选项可以包括开关选项(Boolean Options)和带值选项(Value Options)两种类型。

开关选项:开关选项是布尔类型的选项,通常用于打开或关闭某些功能。它们通常不需要额外的参数值,只需要指定是否启用即可。例如,-v 表示开启详细输出,--verbose 是它的长格式。

带值选项:带值选项需要一个额外的参数值来指定其设置。这些参数值可以是字符串、数字或其他类型的数据,用于配置程序的某些特性。例如,-o filename 表示指定输出文件名为 filename,--output=filename 是它的长格式。

长短格式

长格式和短格式是命令行选项的两种常见形式,用于向程序传递参数或设置选项。它们的作用相同 ,只是形式不同,适用于不同的使用场景。

长格式:长格式选项通常以两个短横线(--)开头,后跟选项的完整名称。例如,--host、--user、--password 等。长格式选项更具可读性,但在键盘上输入时可能较为繁琐。

短格式:短格式选项通常以单个短横线(-)开头,后跟选项的单个字符缩写。例如,-h、-u、-p 等。短格式选项通常更为紧凑,适合在命令行中快速输入,但可读性稍差。

长格式和短格式选项通常 是可互换的,用户可以根据个人喜好或需求选择使用哪种形式。例如,--host=localhost 和 -h localhost 具有相同的效果,都用于指定连接到 MySQL 服务器的主机名为 localhost。但前导破折号不能转为下划线,例如: --skip-grant-tables 和 --skip_grant_tables 是等价的

带值长短格式

**带值的长格式:**选项通常使用等号(=)分隔选项名称和值,例如:--host=127.0.0.1

**带值的短格式:**选项可以有两种形式,选项值可以紧跟在选项后面,也可以用空格隔开,例如:-h127.0.0.1 和 -h 127.0.0.1 是等价的。

对于密码选项的短格式,如果要指定密码,选项与值之间不能有空格。

如果选项的值中包含空格,那么值需要包含在双引号中。

对于采用数值的选项 ,该值可以带有后缀 K , M 或 G 以指⽰乘数 1024、1024^2或 1024^3,例如,以下命令告诉 mysqladmin对服务器执⾏ 1024 次 ping,每次 ping 之间休眠 3 秒 mysqladmin --count=1K --sleep=3 ping -uroot -p

选项命令行

在命令行中使用很简单,格式如下:

MySQL程序名字 选项

选项配置文件

大多数 MySQL 程序都可以从选项文件(配置文件)中读取启动选项。可以在选项文件中指定常用选项,这样就不用在每次运行程序时都在命令行中输入它们。大部分选项文件都是纯⽂本格式,可以使用任何文本编辑器创建。

使用方法

选项 --defaults-file 可以用来指定客户端程序要使用的选项文件,客户端程序会读取并应用选项文件中的相关配置。这个选项允许用户将配置信息保存在一个独立的文件中,而不是通过命令行参数来指定每个配置项,这样可以更方便地管理和维护配置。

格式如下:

--defaults-file=path_to_file

其中,path_to_file 是指定的选项文件的路径和名称。

文件读取顺序

如果启动时没有指定配置文件,MySQL则是按照下面表格的顺序查找并读取文件。读取顺序从上到下,越下面的文件优先级越高。也就是 面的选项值会把上面的选项值覆盖(如果有冲突的话)文件不存在则需要手动创建

对于Windows

%WINDIR%:

%WINDIR% 是一个环境变量,它指示了 Windows 操作系统的安装目录,通常是 C:\Windows。

这个变量可以在命令行或脚本中使用,用于引用 Windows 系统目录的路径,而不必硬编码路径。

例如,%WINDIR%\System32 是指向 Windows 系统目录下的 System32 文件夹。

BASEDIR:

BASEDIR 通常表示某个软件或应用程序的安装基准目录。

在 MySQL 中,BASEDIR 表示 MySQL 服务器的安装目录,例如 C:\Program Files\MySQL\MySQL Server\。

使用 BASEDIR 可以在不同的环境中轻松地指定 MySQL 安装目录,而不必硬编码路径。

%APPDATA%:

%APPDATA% 也是一个环境变量,它指向当前用户的应用程序数据目录。

在 Windows 中,%APPDATA% 通常指向 C:\Users\<username>\AppData\Roaming 目录,其中 <username> 是当前登录用户的用户名。

这个目录用于存储应用程序的用户特定数据,例如配置文件、临时文件等。

对于Linux

~:表示当前用户的主目录。

MYSQL_HOME:是设置的环境变量路径,通常用于指向 MySQL 服务器的安装目录。

DATADIR:代表 MySQL 数据目录,即存储数据库文件的目录。

选项文件语法

当在命令行上指定MySQL程序时,任何长选项都可以在选项文件中指定。以下是选项文件的格式化规则:

  • 选项文件中省略两个前导破折号,并且每一行表示一个选项。例如,--quick 和 --host=127.0.0.1 在选项文件中应表示为 quick 和 host=127.0.0.1。
  • 空行会被忽略,非空行可以采用以下形式:#comment 或 ;comment。注释以 # 或 ; 开头,可以从一行的中间开始。
  • [group] 表示设置选项的程序或组的名称,不区分大小写。如果选项组名称与程序名称相同,则组中的选项专门应用于该程序,例如,[mysqld] 和 [mysql] 组分别适用于 mysqld 服务端程序和 mysql 客户端程序。
  • opt_name 相当于命令行上的选项名。
  • opt_name = value 表示选项名对应的值,可以使用转义序列 \b, \t, \n, \r, \\ 和 \s 来表示退格符、制表符、换行符、回车符、反斜杠和空格字符。

内容大致如下

注意事项:

选项名称和值中的前导和尾随空格会自动删除。

在 Windows 系统中设置路径应该使用转义字符。

!include 指令可以包含其他选项文件,例如:!include /home/mydir/myopt.cnf。

!includedir 指令用来搜索指定目录中的其他选项文件,但不保证目录中选项文件的读取顺序。

只会读取包含文本中当前客户端的组配置,例如当前运行的是 mysql 程序,那么只会读取 [mysql] 组中的选项配置。

在 Windows 中请确保在配置文件的最后一行加一个换行符,否则该行将被忽略。

mysqld

mysqld也被称为MySQL服务器,是一个多线程程序,用来监听客户端的请求。mysqld收到请求后,可以执行相应的操作。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.3.1 mysqld --- The MySQL Server

常用选项

查看http://t.csdnimg.cn/YMtko

mysql

mysql是一个简单的SQL shell,可以输入命令执行SQL语句

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.1 mysql --- The MySQL Command-Line Client

常用选项

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.1.1 mysql Client Options

选项是非常的多,下面将介绍一些比较常用的。

mysqladmin

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

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.2 mysqladmin --- A MySQL Server Administration Program

注意事项

安全性:确保只有授权的用户可以访问mysqladmin。避免将mysqladmin暴露在公共网络中,以防止未经授权的访问。

权限:使用mysqladmin执行管理操作时,确保当前用户具有足够的权限来执行所需的操作,包括创建和删除数据库等敏感操作。

谨慎操作:在执行数据库创建、删除等操作时要谨慎,确认操作无误后再进行执行,以免造成不可逆的损失。

备份:在执行可能影响数据完整性的操作前,建议先进行数据库备份,以便在意外发生时能够恢复数据。

使用

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

command表示命令,有些命令后面需要跟上一个参数

常见命令

常见选项

mysqlcheck

mysqlcheck客户端用于执行表维护,可以对表进行以下操作:

分析:查看表的关键字分布,以便让 SQL 生成正确的执行计划(支持 InnoDB,MyISAM,NDB)。

检查:检查表的完整性以及数据库表和索引是否损坏(支持 InnoDB,MyISAM,ARCHIVE,CSV)。

优化:回收空间、减少碎片、提高I/O(支持 InnoDB,MyISAM,ARCHIVE)。

修复:修复可能已经损坏的表(支持 MyISAM,ARCHIVE,CSV)。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.3 mysqlcheck --- A Table Maintenance Program

注意事项

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

使用

通常可以通过以下三种方法使用mysqlcheck:

mysqlcheck [options] db_name [tbl_name ...]

mysqlcheck [options] --databases db_name ...

mysqlcheck [options] --all-databases

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

特殊使用

对于mysqlcheck的复制改名,可以简化选项操作

这里只是InnoDB不支持修复

常用选项

mysqldump

mysqldump 是一个用于逻辑备份 MySQL 数据库的客户端程序。它可以生成包含原始数据库和表的定义以及表中数据的 SQL 格式的备份文件。除了 SQL 格式外,mysqldump 还可以生成 CSV 格式或 XML 格式的备份文件。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.4 mysqldump --- A Database Backup Program

注意事项

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

使用

mysqldump [options] db_name [tbl_name ...]

mysqldump [options] --databases db_name ...

mysqldump [options] --all-databases

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

常用选项

mysqlshow

mysqlshow是一个用于显示MySQL数据库、表和列的命令行工具。它提供了一种简单的方法来查看数据库服务器中可用的数据库、每个数据库中的表以及每个表中的列

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.7 mysqlshow --- Display Database, Table, and Column Information

使用

mysqlshow [options] [db_name [tbl_name [col_name]]]

当使用mysqlshow命令时,可以使用通配符 * 、 ? 、 % 或 _ 来匹配数据库、表和列的名称。具体规则如下:

  • 如果没有指定数据库,则显示所有数据库名称列表。
  • 如果没有指定表,则显示数据库中所有匹配的表。
  • 如果没有指定列,则显示表中所有匹配的列和列类型。
  • 输出仅显示当前权限可以访问的数据库、表或列的名称。

常用选项

与之前的差不多

mysqldumpslow

在平时使用MySQL数据库时,经常会执行查询操作。有些查询语句执行时间非常长,当执行时间超过设定的阈值时,我们称这个查询为慢查询。为了记录慢查询的相关信息,通常需要将其记录在慢查询日志中。mysqldumpslow是一个工具,可以解析慢查询日志文件并汇总其内容。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.6.10 mysqldumpslow --- Summarize Slow Query Log Files

注意事项

通常情况下,mysqldumpslow会将相似的查询分组并显示摘要输出。一般会将数字和字符串用 N 和 "S" 代替。如果想要显示真实的值,可以使用 -a 和 -n 选项。

使用

mysqldumpslow [options] [log_file ...]

如果没有指定数据库,则显示数据库名称列表。

如果没有指定表,则显示数据库中所有匹配的表。

如果没有指定列,则显示表中所有匹配的列和列类型。

常用选项

mysqlbinlog

二进制日志文件是一种记录数据库修改操作的文件格式。对数据库的任何修改,如数据的增加、删除、修改等,都会被描述成一个"事件",每个事件都以二进制形式记录在一个文件中。这个文件称为服务器的二进制日志文件,通常被称为 Binary Log 或者 binlog。mysqlbinlog能够以文本的形式显示二进制日志。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.6.9 mysqlbinlog --- Utility for Processing Binary Log Files

注意事项

binlog 的默认保存路径如下:

在 Linux 下,默认目录是:/var/lib/mysql

在 Windows 下,默认目录是:mysql的安装路径\Data

binlog 文件以 .00000n 结尾命名,其中 n 是一个递增的数字。每三十天进行一次删除

使用

mysqlbinlog [options] log_file ...

常用选项

mysqlslap

mysqlslap 是一个诊断程序,用于模拟 MySQL 服务器的客户端负载,并报告每个阶段的时间,就好比多个客户端正在访问服务器一样。

官方文档:MySQL :: MySQL 8.0 Reference Manual :: 6.5.8 mysqlslap --- A Load Emulation Client

注意事项

  • 可以通过 --create 或 --query 选项,指定包含 SQL 语句的字符串或包含 SQL 语句的文件。
  • 如果指定一个包含 SQL 语句的文件,默认情况下每行必须包含一条语句(也就是说,隐式语句分隔符是换行符)。
  • 如果要把一条语句分为多行书写,可以使用 --delimiter 选项指定不同的分隔符。
  • 不能在文件中包含注释,因为 mysqlslap 不能解析注释。
  • mysqlslap 运行分为三个阶段:
    • a. 创建测试数据阶段:创建用于测试的库、表或数据,这个阶段使用单个客户端连接。
    • b. 运行负载测试阶段:这个阶段可以使用许多客户端连接。
    • c. 清理阶段:执行删除表、断开连接等操作,这个阶段使用单个客户端连接。

使用

mysqlslap [options]
以下是使用自定义创建和查询语句,在50个客户端连接下,每个客户端进行200次select查询的示例:(不要换行输入)

bash 复制代码
mysqlslap -uroot -p --delimiter=";"  --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23);" --query="SELECT * FROM a" --concurrency=50 --iterations=200

常用选项

相关推荐
兩尛1 小时前
订单状态定时处理、来单提醒和客户催单(day10)
java·前端·数据库
web2u1 小时前
MySQL 中如何进行 SQL 调优?
java·数据库·后端·sql·mysql·缓存
Elastic 中国社区官方博客2 小时前
使用 Elasticsearch 导航检索增强生成图表
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
小金的学习笔记2 小时前
RedisTemplate和Redisson的使用和区别
数据库·redis·缓存
新知图书2 小时前
MySQL用户授权、收回权限与查看权限
数据库·mysql·安全
文城5213 小时前
Mysql存储过程(学习自用)
数据库·学习·mysql
沉默的煎蛋3 小时前
MyBatis 注解开发详解
java·数据库·mysql·算法·mybatis
呼啦啦啦啦啦啦啦啦3 小时前
【Redis】事务
数据库·redis·缓存
HaoHao_0103 小时前
AWS Serverless Application Repository
服务器·数据库·云计算·aws·云服务器
C语言扫地僧3 小时前
MySQL 事务及MVCC机制详解
数据库·mysql