【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

常用选项

相关推荐
C吴新科2 小时前
MySQL入门操作详解
mysql
Ai 编码助手4 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员5 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle5 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻5 小时前
MySQL排序查询
数据库·mysql
萧鼎5 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^5 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋35 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
荒川之神5 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师5 小时前
Oracle 23AI创建示例库
数据库·oracle