目录
本章简要概述了Oracle Corporation提供的MySQL命令行程序。 它还讨论了运行这些程序时指定选项的一般语法。 大多数程序具有特定于其自身操作的选项,但所有选项的语法类似。 最后,本章提供了有关各个程序的更详细说明,包括它们识别的选项。
MySQL安装中有许多不同的程序。 本节简要介绍了它们。 后面的部分提供了每个部分的更详细描述,但NDB Cluster程序除外。 每个程序的描述都指示其调用语法及其支持的选项。 第22.4节“NDB集群程序” 描述了特定于NDB集群的程序。
大多数MySQL发行版都包含所有这些程序,除了那些特定于平台的程序。 (例如,Windows上不使用服务器启动脚本。)例外情况是RPM分发更加专业化。 服务器有一个RPM,客户端程序有另一个RPM,依此类推。 如果您似乎缺少一个或多个程序,请参阅 第2章, 安装和升级MySQL ,以获取有关分发类型及其包含内容的信息。 可能是您的发行版不包含所有程序,您需要安装其他程序包。
每个MySQL程序都有许多不同的选项。
大多数程序提供了一个
--help
选项,您可以使用
该
选项来获取程序的不同选项的描述。
例如,尝试
mysql --help
。
您可以通过在命令行或选项文件中指定选项来覆盖MySQL程序的默认选项值。 有关 调用程序和指定程序选项的一般信息 , 请参见 第4.2节“使用MySQL程序” 。
MySQL服务器 mysqld 是完成MySQL安装中大部分工作的主程序。 服务器附带了几个相关脚本,可帮助您启动和停止服务器:
SQL守护程序(即MySQL服务器)。 要使用客户端程序, 必须运行 mysqld ,因为客户端通过连接到服务器来访问数据库。 请参见 第4.3.1节“ mysqld - MySQL服务器” 。
服务器启动脚本。 mysqld_safe 尝试启动 mysqld 。 请参见 第4.3.2节“ mysqld_safe - MySQL服务器启动脚本” 。
服务器启动脚本。 此脚本用于使用System V样式运行目录的系统,该目录包含为特定运行级别启动系统服务的脚本。 它调用 mysqld_safe 来启动MySQL服务器。 请参见 第4.3.3节“ mysql.server - MySQL服务器启动脚本” 。
服务器启动脚本,可以启动或停止系统上安装的多个服务器。 请参见 第4.3.4节“ mysqld_multi - 管理多个MySQL服务器” 。
多个程序在MySQL安装或升级期间执行设置操作:
该程序在MySQL构建/安装过程中使用。 它编译错误源文件中的错误消息文件。 请参见 第4.4.1节“ comp_err - 编译MySQL错误消息文件” 。
此程序使您可以提高MySQL安装的安全性。 请参见 第4.4.2节“ mysql_secure_installation - 改进MySQL安装安全性” 。
如果缺少这些文件,此程序将创建支持安全连接所需的SSL证书和密钥文件以及RSA密钥对文件。 mysql_ssl_rsa_setup 创建的文件 可用于使用SSL或RSA的安全连接。 请参见 第4.4.3节“ mysql_ssl_rsa_setup - 创建SSL / RSA文件” 。
此程序
mysql
使用主机系统
zoneinfo
数据库(描述时区的文件集)
的内容
加载
数据库中
的时区表
。
请参见
第4.4.4节“
mysql_tzinfo_to_sql
- 加载时区表”
。
该程序在MySQL升级操作后使用。 它使用在较新版本的MySQL中进行的任何更改来更新授权表,并检查表中的不兼容性并在必要时进行修复。 请参见 第4.4.5节“ mysql_upgrade - 检查和升级MySQL表” 。
连接MySQL服务器的MySQL客户端程序:
用于以批处理方式交互式输入SQL语句或从文件执行它们的命令行工具。 请参见 第4.5.1节“ mysql - MySQL命令行客户端” 。
执行管理操作的客户端,例如创建或删除数据库,重新加载授权表,将表刷新到磁盘以及重新打开日志文件。 mysqladmin 还可用于从服务器检索版本,进程和状态信息。 请参见 第4.5.2节“ mysqladmin - 管理MySQL服务器的客户端” 。
表维护客户端,用于检查,修复,分析和优化表。 请参见 第4.5.3节“ mysqlcheck - 表维护程序” 。
将MySQL数据库作为SQL,文本或XML转储到文件中的客户端。 请参见 第4.5.4节“ mysqldump - 数据库备份程序” 。
使用的导出文本文件到其各自表的客户端
LOAD
DATA
。
请参见
第4.5.5节“
mysqlimport
- 数据导入程序”
。
将MySQL数据库作为SQL转储到文件中的客户端。 请参见 第4.5.6节“ mysqlpump - 数据库备份程序” 。
MySQL Shell是MySQL Server的高级客户端和代码编辑器。 请参阅 MySQL Shell 8.0(MySQL 8.0的一部分) 。 除了提供的SQL功能,类似于 mysql ,MySQL Shell还提供了JavaScript和Python的脚本功能,并包含用于MySQL的API。 X DevAPI使您可以使用关系数据和文档数据,请参阅 第20章, 将MySQL用作文档存储 。 AdminAPI使您可以使用InnoDB集群,请参阅 第21章 InnoDB集群 。
显示有关数据库,表,列和索引的信息的客户端。 请参见 第4.5.7节“ mysqlshow - 显示数据库,表和列信息” 。
一个客户端,旨在模拟MySQL服务器的客户端负载并报告每个阶段的时间。 它就像多个客户端正在访问服务器一样。 请参见 第4.5.8节“ mysqlslap - 加载仿真客户端” 。
MySQL管理和实用程序:
脱机
InnoDB
脱机文件校验和实用程序。
请参见
第4.6.2节“
innochecksum
- 离线InnoDB文件校验和实用程序”
。
一种实用程序,用于显示有关
MyISAM
表中
全文索引的信息
。
请参见
第4.6.3节“
myisam_ftdump
- 显示全文索引信息”
。
用于描述,检查,优化和修复
MyISAM
表的
实用程序
。
请参见
第4.6.4节“
myisamchk
- MyISAM表维护实用程序”
。
处理
MyISAM
日志文件
内容的实用程序
。
请参见
第4.6.5节“
myisamlog
- 显示MyISAM日志文件内容”
。
压缩
MyISAM
表以生成较小的只读表
的实用程序
。
请参见
第4.6.6节“
myisampack
- 生成压缩,只读MyISAM表”
。
一种实用程序,使您可以将身份验证凭据存储在名为的安全加密登录路径文件中
.mylogin.cnf
。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
用于从二进制日志中读取语句的实用程序。 二进制日志文件中包含的已执行语句的日志可用于帮助从崩溃中恢复。 请参见 第4.6.8节“ mysqlbinlog - 处理二进制日志文件的实用程序” 。
用于读取和汇总慢查询日志内容的实用程序。 请参见 第4.6.9节“ mysqldumpslow - 汇总慢速查询日志文件” 。
MySQL程序开发实用程序:
一个shell脚本,用于生成编译MySQL程序时所需的选项值。 请参见 第4.7.1节“ mysql_config - 用于编译客户端的显示选项” 。
一个实用程序,显示选项文件的选项组中存在哪些选项。 请参见 第4.7.2节“ my_print_defaults - 从选项文件显示选项” 。
杂项工具:
一个实用程序,用于解压缩 使用LZ4压缩创建的 mysqlpump 输出。 请参见 第4.8.1节“ lz4_decompress - 解压缩mysqlpump LZ4压缩输出” 。
显示系统或MySQL错误代码含义的实用程序。 请参见 第4.8.2节“ perror - 显示MySQL错误消息信息” 。
一个实用程序,用于解压缩 使用ZLIB压缩创建的 mysqlpump 输出。 请参见 第4.8.3节“ zlib_decompress - 解压缩mysqlpump ZLIB压缩输出” 。
Oracle Corporation还提供 MySQL Workbench GUI工具,用于管理MySQL服务器和数据库,创建,执行和评估查询,以及从其他关系数据库管理系统迁移模式和数据以供MySQL使用。 其他GUI工具包括 MySQL Notifier 和 MySQL for Excel 。
使用MySQL客户端/服务器库与服务器通信的MySQL客户端程序使用以下环境变量。
环境变量 | 含义 |
---|---|
MYSQL_UNIX_PORT |
默认的Unix套接字文件;
用于连接
localhost
|
MYSQL_TCP_PORT |
默认端口号; 用于TCP / IP连接 |
MYSQL_PWD |
默认密码 |
MYSQL_DEBUG |
调试时调试跟踪选项 |
TMPDIR |
创建临时表和文件的目录 |
有关MySQL程序使用的环境变量的完整列表,请参见 第4.9节“MySQL程序环境变量” 。
使用
MYSQL_PWD
是不安全的。
请参见
第6.1.2.1节“密码安全的最终用户指南”
。
要从命令行(即从shell或命令提示符)调用MySQL程序,请输入程序名称,后跟任何选项或其他参数,以指示程序您希望它执行的操作。
以下命令显示了一些示例程序调用。
shell>
表示命令解释器的提示;
它不是你输入的一部分。
您看到的特定提示取决于您的命令解释程序。
典型的提示适用
$
于
sh
,
ksh
或
bash
,
%
适用于
csh
或
tcsh
,
C:\>
适用于Windows
command.com
或
cmd.exe
指挥口译员。
shell>mysql --user=root test
shell>mysqladmin extended-status variables
shell>mysqlshow --help
shell>mysqldump -u root personnel
以单个或双短划线(
-
,
--
)
开头的参数
指定程序选项。
选项通常表示程序应对服务器进行的连接类型或影响其操作模式。
第4.2.2节“指定程序选项”中
介绍了选项语法
。
Nonoption参数(没有前导破折号的参数)为程序提供了附加信息。
例如,
mysql
程序将第一个nonoption参数解释为数据库名称,因此该命令
mysql
--user=root test
指示您要使用该
test
数据库。
后面描述各个程序的部分表明程序支持哪些选项,并描述任何其他非选项参数的含义。
一些选项在许多程序中很常见。
最常用的是
指定连接参数
的
--host
(或
-h
),
--user
(或
-u
)和
--password
(或
-p
)选项。
它们指示运行MySQL服务器的主机以及MySQL帐户的用户名和密码。
所有MySQL客户端程序都了解这些选项;
它们使您能够指定要连接的服务器以及要在该服务器上使用的帐户。
其他连接选项是
--port
(或
-P
)指定TCP / IP端口号和
--socket
(或)
-S
)在Unix上指定Unix套接字文件(或Windows上的命名管道名称)。
有关指定连接选项的选项的更多信息,请参见
第4.2.3节“连接到MySQL服务器”
。
您可能会发现有必要使用路径名调用MySQL程序到
bin
安装它们
的
目录。
如果您
尝试从目录以外的任何目录运行MySQL程序时遇到
“
程序未找到
”
错误,
则可能会出现这种情况
bin
。
为了使用MySQL更方便,可以将
bin
目录
的路径名添加
到
PATH
环境变量设置中。
这使您可以通过仅键入其名称而不是其整个路径名来运行程序。
例如,如果
安装了
mysql
,则
/usr/local/mysql/bin
可以通过将其作为
mysql
调用来运行该程序
,并没有必要将其作为
/ usr / local / mysql / bin / mysql
调用
。
有关设置
PATH
变量的
说明,请参阅命令解释程序的文档
。
设置环境变量的语法是特定于解释器的。
(有些信息在
第4.2.6节“设置环境变量”中给出
。)修改
PATH
设置后,在Windows上打开一个新的控制台窗口或在Unix上再次登录,以使设置生效。
有几种方法可以为MySQL程序指定选项:
在程序名称后面的命令行中列出选项。 这适用于适用于程序特定调用的选项。
列出程序在启动时读取的选项文件中的选项。 这对于您希望程序在每次运行时使用的选项很常见。
列出环境变量中的选项(请参见 第4.2.6节“设置环境变量” )。 此方法对于每次运行程序时要应用的选项都很有用。 实际上,选项文件更常用于此目的,但 第5.8.3节“在Unix上运行多个MySQL实例” 讨论了环境变量非常有用的一种情况。 它描述了一种方便的技术,它使用这些变量来指定服务器和客户端程序的TCP / IP端口号和Unix套接字文件。
选项按顺序处理,因此如果多次指定选项,则最后一次出现优先。
以下命令使
mysql
连接到运行的服务器
localhost
:
外壳> mysql -h example.com -h localhost
如果给出了冲突或相关选项,则后面的选项优先于先前的选项。 以下命令 以 “ 无列名 ” 模式 运行 mysql :
外壳> mysql --column-names --skip-column-names
MySQL程序通过检查环境变量,然后通过处理选项文件,然后通过检查命令行来确定首先给出哪些选项。 这意味着环境变量具有最低优先级,命令行选项最高。
对于服务器,一个例外适用: 数据目录中 的 mysqld-auto.cnf 选项文件最后处理,因此它甚至优先于命令行选项。
您可以通过为选项文件中的程序指定默认选项值来利用MySQL程序处理选项的方式。 这使您可以避免每次运行程序时键入它们,同时允许您通过使用命令行选项覆盖默认值。
命令行中指定的程序选项遵循以下规则:
命令名后面给出了选项。
选项参数以一个破折号或两个破折号开头,具体取决于它是选项名称的简短形式还是长形式。
许多选项都有短形式和长形式。
例如,
-?
并且
--help
是指示MySQL程序,以显示它的帮助消息的选项的短和长的形式。
选项名称区分大小写。
-v
并且
-V
都是合法的,具有不同的含义。
(它们是相应的简短形式
--verbose
和
--version
选项。)
某些选项采用选项名称后面的值。
例如,
-h localhost
或
--host=localhost
指示MySQL服务器主机到客户端程序。
选项值告诉程序运行MySQL服务器的主机的名称。
对于采用值的长选项,请将选项名称和值分隔
=
符号。
对于带有值的短选项,选项值可以紧跟在选项字母后面,或者在:
-hlocalhost
和
之间可以
-h
localhost
有等效
的空格
。
此规则的一个例外是指定MySQL密码的选项。
此选项可以作为
或
以长格式给出
。
在后一种情况下(没有给出密码值),程序会提示您输入密码。
密码选项也可以在短形式给予
或
--password=
pass_val
--password
-p
pass_val
-p
。
但是,对于简短形式,如果给出密码值,则必须遵循选项字母而
没有中间空格
。
原因是如果空格跟在选项字母后面,程序无法判断后面的参数是密码值还是其他类型的参数。
因此,以下两个命令有两个完全不同的含义:
shell>mysql -ptest
shell>mysql -p test
第一个命令指示
mysql
使用密码值
test
,但不指定默认数据库。
第二个指示
mysql
提示输入密码值并
test
用作默认数据库。
在选项名称中,dash(
-
)和underscore(
_
)可以互换使用。
例如,
--skip-grant-tables
并且
--skip_grant_tables
是等价的。
(但是,前导破折号不能作为下划线给出。)
对于采用数字值的选择,该值可以与一个后缀被给予
K
,
M
或者
G
以指示1024一乘法器,1024
2
或1024
3
。
从MySQL 8.0.14的,后缀也可以是
T
,
P
和
E
以指示1024乘法器
4
,1024
5
或1024
6
。
后缀字母可以是大写或小写。
例如,以下命令告诉 mysqladmin ping服务器1024次,每次ping之间休眠10秒:
外壳> mysqladmin --count=1K --sleep=10 ping
将文件名指定为选项值时,请避免使用
~
shell元字符,因为它可能不会按预期解释。
在命令行上给出时,必须引用包含空格的选项值。
例如,
--execute
(或
-e
)选项可以与
mysql
一起
使用,
以将SQL语句传递给服务器。
使用此选项时,
mysql将
执行选项值中的语句并退出。
声明必须用引号括起来。
例如,您可以使用以下命令获取用户帐户列表:
shell>mysql -u root -p --execute="SELECT User, Host FROM mysql.user"
输入密码:******
+ ------ + ----------- + | 用户| 主持人| + ------ + ----------- + | | 吉甘| | 根| 吉甘| | | localhost | | jon | localhost | | 根| localhost | + ------ + ----------- + 外壳>
long form(
--execute
)之后是等号(
=
)。
如果希望在语句中使用带引号的值,则需要转义内部引号,或者在语句中使用与引用语句本身引用的引号不同的引号。 命令处理器的功能决定了您是否可以使用单引号或双引号以及转义引号字符的语法。 例如,如果命令处理器支持使用单引号或双引号引用,则可以在语句周围使用双引号,并在语句中使用任何引用值的单引号。
可以在命令行的选项值中传递多个SQL语句,用分号分隔:
shell>mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
输入密码:******
+ ------------ + | 版本()| + ------------ + | 8.0.11 | + ------------ + + --------------------- + | 现在()| + --------------------- + | 2019-05-17 11:43:57 | + --------------------- +
大多数MySQL程序都可以从选项文件(有时称为配置文件)中读取启动选项。 选项文件提供了一种指定常用选项的便捷方式,因此每次运行程序时都无需在命令行中输入这些选项。
要确定程序是否读取选项文件,请使用该
--help
选项
调用它
。
(对于
mysqld
,请使用
--verbose
和
--help
。)如果程序读取选项文件,则帮助消息指示它查找哪些文件以及它识别哪些选项组。
MySQL程序开始与
--no-defaults
选择读比其他任何选项文件
.mylogin.cnf
。
persisted_globals_load
启用了禁用系统变量的
服务器
无法读取
mysqld-auto.cnf
。
许多选项文件都是纯文本文件,使用任何文本编辑器创建。 例外情况是:
.mylogin.cnf
包含登录路径选项
的
文件。
这是
mysql_config_editor
实用程序
创建的加密文件
。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
一个
“
登录路径
”
是一个选项组只允许特定的选项:
host
,
user
,
password
,
port
和
socket
。
客户端程序
.mylogin.cnf
使用该
--login-path
选项
指定要读取的登录路径
。
要指定备用登录路径文件名,请设置
MYSQL_TEST_LOGIN_FILE
环境变量。
此变量由
mysql-test-run.pl
测试实用程序使用,但也可由
mysql_config_editor
和MySQL客户端(如
mysql
,
mysqladmin
等
)识别
。
mysqld-auto.cnf
数据目录中
的
文件。
此JSON格式文件包含持久系统变量设置。
它由服务器在执行
SET
PERSIST
或
SET
PERSIST_ONLY
语句
时创建
。
请参见
第5.1.9.3节“持久系统变量”
。
管理
mysqld-auto.cnf
应该留给服务器而不是手动执行。
MySQL按照以下讨论中描述的顺序查找选项文件,并读取任何存在的选项。 如果您要使用的选项文件不存在,请使用适当的方法创建它,如上所述。
有关与NDB Cluster程序一起使用的选项文件的信息,请参见 第22.3节“NDB集群的配置” 。
在Windows上,MySQL程序按照指定的顺序从下表中显示的文件中读取启动选项(首先列出的文件首先读取,后面读取的文件优先)。
表4.1在Windows系统上读取的选项文件
文件名 | 目的 |
---|---|
,
|
全球选择 |
C:\my.ini
,
C:\my.cnf
|
全球选择 |
,
|
全球选择 |
defaults-extra-file |
指定的文件
--defaults-extra-file
,如果有的话
|
|
登录路径选项(仅限客户端) |
|
系统变量持久化
SET
PERSIST
或
SET
PERSIST_ONLY
(仅限服务器)
|
在上表中,
%WINDIR%
表示Windows目录的位置。
这通常是
C:\WINDOWS
。
使用以下命令从
WINDIR
环境变量
的值确定其确切位置
:
C:\> echo %WINDIR%
%APPDATA%
表示Windows应用程序数据目录的值。
使用以下命令从
APPDATA
环境变量
的值确定其确切位置
:
C:\> echo %APPDATA%
BASEDIR
代表MySQL基本安装目录。
当MySQL 8.0已经使用MySQL Installer安装的,这通常是
其中
代表项目目录(通常
在Windows的英语语言版本),参见
2.3.3节,“MySQL的安装程序的Windows”
。
C:\
PROGRAMDIR
\MySQL\MySQL
8.0 ServerPROGRAMDIR
Program Files
DATADIR
代表MySQL数据目录。
用于查找时
mysqld-auto.cnf
,其默认值是编译MySQL时内置的数据目录位置,但可以通过
--datadir
指定为处理之前
mysqld-auto.cnf
处理
的选项文件或命令行选项
进行更改
。
在Unix和类Unix系统上,MySQL程序按照指定的顺序从下表中显示的文件中读取启动选项(首先列出的文件首先读取,后面读取的文件优先)。
在Unix平台上,MySQL忽略了世界可写的配置文件。 这是有意作为安全措施。
表4.2在Unix和类Unix系统上读取的选项文件
文件名 | 目的 |
---|---|
/etc/my.cnf |
全球选择 |
/etc/mysql/my.cnf |
全球选择 |
|
全球选择 |
$MYSQL_HOME/my.cnf |
特定于服务器的选项(仅限服务器) |
defaults-extra-file |
指定的文件
--defaults-extra-file
,如果有的话
|
~/.my.cnf |
用户特定选项 |
~/.mylogin.cnf |
用户特定的登录路径选项(仅限客户端) |
|
系统变量持久化
SET
PERSIST
或
SE
PERSIST_ONLY
(仅限服务器)
|
在上表中,
~
表示当前用户的主目录(值
$HOME
)。
SYSCONFDIR
表示在
构建MySQL时
SYSCONFDIR
使用
CMake
选项
指定的目录
。
默认情况下,这是
etc
编译安装目录下的目录。
MYSQL_HOME
是一个环境变量,包含特定于服务器的
my.cnf
文件所在
目录的路径
。
如果
MYSQL_HOME
未设置并使用
mysqld_safe
程序
启动服务器
,则
mysqld_safe
将其设置
BASEDIR
为MySQL基本安装目录。
DATADIR
代表MySQL数据目录。
用于查找时
mysqld-auto.cnf
,其默认值是编译MySQL时内置的数据目录位置,但可以通过
--datadir
指定为处理之前
mysqld-auto.cnf
处理
的选项文件或命令行选项
进行更改
。
如果找到给定选项的多个实例,则最后一个实例优先,但有一个例外:对于
mysqld
,
该
选项
的
第一个
实例
--user
用作安全预防措施,以防止在选项文件中指定的用户被覆盖在命令行。
选项文件语法的以下说明适用于您手动编辑的文件。
这排除
.mylogin.cnf
了使用
mysql_config_editor
创建
并加密,并且
mysqld-auto.cnf
服务器以JSON格式创建。
运行MySQL程序时可以在命令行上给出的任何长选项也可以在选项文件中给出。
要获取程序的可用选项列表,请使用该
--help
选项
运行它
。
(对于
mysqld
,使用
--verbose
和
--help
。)
在选项文件中指定选项的语法类似于命令行语法(请参见
第4.2.2.1节“在命令行上使用选项”
)。
但是,在选项文件中,省略选项名称中的前两个破折号,并且每行只指定一个选项。
例如,
--quick
与
--host=localhost
在命令行上应被指定为
quick
与
host=localhost
上在选项文件单独的行。
要
在选项文件中
指定表单
选项,请将其写为
。
--loose-
opt_name
loose-
opt_name
选项文件中的空行将被忽略。 非空行可以采用以下任何一种形式:
#
,
comment
;
comment
注释行以
#
或
开头
;
。
一个
#
注释也可以从行的中部开始。
[
group
]
group
是要为其设置选项的程序或组的名称。
在组行之后,任何选项设置行都将应用于命名组,直到选项文件的末尾或另一个组行为止。
选项组名称不区分大小写。
opt_name
这相当于
命令行。
--
opt_name
opt_name
=value
这相当于
命令行。
在选项文件中,您可以在
字符
周围
留出
空格
,这在命令行中是不正确的。
值可以包含在单引号或双引号中,如果值包含
注释字符,
则该值很有用
。
--
opt_name
=value
=
#
从选项名称和值中自动删除前导和尾随空格。
您可以使用转义序列
\b
,
\t
,
\n
,
\r
,
\\
,并
\s
在选项值来表示退格,制表符,换行符,回车,回车,和空格字符。
在选项文件中,这些转义规则适用:
反斜杠后跟有效的转义序列字符将转换为序列表示的字符。
例如,
\s
转换为空格。
反斜杠后面没有有效的转义序列字符保持不变。
例如,
\S
保留原样。
前面的规则意味着可以给出一个字面反斜杠
\\
,或者
\
好像它没有后跟一个有效的转义序列字符。
选项文件中的转义序列规则与SQL语句中字符串文字中的转义序列规则略有不同。
在后一种情况下,如果
“
x
”
不是有效的转义序列字符,则
变为
“
”
而不是
。
请参见
第9.1.1节“字符串文字”
。
\
x
x
\
x
选项文件值的转义规则尤其适用于Windows路径名,它
\
用作路径名分隔符。
必须写入Windows路径名中的分隔符,就
\\
好像后面跟一个转义序列字符一样。
它可以写成
\\
或者
\
如果它不是。
或者,
/
可以在Windows路径名中使用,并将其视为
\
。
假设您要
C:\Program
Files\MySQL\MySQL Server 8.0
在选项文件中
指定基目录
。
这可以通过几种方式完成。
一些例子:
basedir =“C:\ Program Files \ MySQL \ MySQL Server 8.0” basedir =“C:\\ Program Files \\ MySQL \\ MySQL Server 8.0” basedir =“C:/ Program Files / MySQL / MySQL Server 8.0” BASEDIR = C:\\程序\ sFiles \\ \\的MySQL的MySQL \ sServer \ S8.0
如果选项组名称与程序名称相同,则组中的选项将专门应用于该程序。
例如,
[mysqld]
和
[mysql]
组分别应用于
mysqld
服务器和
mysql
客户端程序。
该
[client]
选项组是由MySQL分发提供(但所有的客户端程序读取
未
通过
的mysqld
)。
要了解使用C API的第三方客户端程序如何使用选项文件,请参见
第28.7.7.50节“mysql_options()”中
的C API文档
。
该
[client]
组使您可以指定适用于所有客户端的选项。
例如,
[client]
是用于指定连接到服务器的密码的适当组。
(但请确保选项文件只能由您自己访问,以便其他人无法发现您的密码。)
[client]
除非
您使用的
所有
客户端程序
都识别
该选项,
否则
请确保不在该
组中添加
选项
。
如果尝试运行错误消息,则在显示错误消息后,不理解该选项的程序将退出。
稍后列出更多通用选项组和更具体的组。
例如,一个
[client]
组更通用,因为它被所有客户端程序读取,而一个
[mysqldump]
组只能由
mysqldump
读取
。
后来指定的选项覆盖在此之前指定的选项,所以把该选项组中的顺序
[client]
,
[mysqldump]
使
mysqldump的
特异性选项覆盖
[client]
选项。
这是一个典型的全局选项文件:
[客户] 端口= 3306 插座= / TMP /的mysql.sock 的[mysqld] 端口= 3306 插座= / TMP /的mysql.sock 的key_buffer_size = 16M max_allowed_packet的= 128M [mysqldump的] 快
这是一个典型的用户选项文件:
[客户] #以下密码将发送给所有标准MySQL客户端 密码=“我的密码” [MySQL的] 无自动翻版 connect_timeout = 2
要创建仅由
特定MySQL发行版系列中
的
mysqld
服务器
读取的选项组
,请使用名称为
[mysqld-5.7]
,
[mysqld-8.0]
等的组。
以下组表示该
sql_mode
设置仅应由具有8.0.x版本号的MySQL服务器使用:
的[mysqld-8.0] 的sql_mode =繁体
可以
!include
在选项文件中
使用
指令来包含其他选项文件,并
!includedir
在特定目录中搜索选项文件。
例如,要包含该
/home/mydir/myopt.cnf
文件,请使用以下指令:
!include /home/mydir/myopt.cnf
要搜索
/home/mydir
目录并读取那里找到的选项文件,请使用以下指令:
!includedir / home / mydir
MySQL不保证读取目录中选项文件的顺序。
!includedir
在Unix操作系统上
使用该
指令
找到和包含的任何文件
都
必须
以
.cnf
。
结尾的文件名
。
在Windows上,此指令检查带有
.ini
或
.cnf
扩展名的
文件
。
像任何其他选项文件一样写入包含的选项文件的内容。
也就是说,它应该包含选项组,每个选项前面都有
一行,表示选项适用的程序。
[
group
]
在处理包含文件时,仅使用当前程序正在查找的组中的那些选项。
其他组被忽略。
假设一个
my.cnf
文件包含这一行:
!include /home/mydir/myopt.cnf
并假设
/home/mydir/myopt.cnf
看起来像这样:
[中mysqladmin] 力 的[mysqld] 的key_buffer_size = 16M
如果
my.cnf
由
mysqld
处理
,则仅使用
[mysqld]
组in
/home/mydir/myopt.cnf
。
如果文件由
mysqladmin
处理
,则仅使用该
[mysqladmin]
组。
如果该文件由任何其他程序处理,则不
/home/mydir/myopt.cnf
使用
任何选项
。
!includedir
除了读取指定目录中的所有选项文件外,
该
指令的处理方式类似。
如果选项文件包含
!include
或
!includedir
指令,则只要处理选项文件,就会处理由这些指令命名的文件,无论它们出现在文件中的哪个位置。
大多数支持选项文件的MySQL程序都处理以下选项。 由于这些选项会影响选项文件处理,因此必须在命令行中提供它们,而不是在选项文件中。 要正常工作,必须在其他选项之前给出每个选项,但有以下例外:
--print-defaults
可以后立即使用
--defaults-file
,
--defaults-extra-file
或
--login-path
。
在Windows上,如果使用
--defaults-file
和
--install
选项
启动服务器
,则
--install
必须先行。
请参见
第2.3.5.8节“将MySQL作为Windows服务启动”
。
将文件名指定为选项值时,请避免使用
~
shell元字符,因为它可能不会按预期解释。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在(在Unix上)用户选项文件之前和(在所有平台上)登录路径文件之前。
(有关使用选项文件的顺序的信息,请参见
第4.2.2.2节“使用选项文件”
。)如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
请参阅本节的介绍,了解可以指定此选项的位置的约束。
只读给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使有
--defaults-file
,
mysqld的
读取
mysqld-auto.cnf
和客户端程序读取
.mylogin.cnf
。
请参阅本节的介绍,了解可以指定此选项的位置的约束。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysql
客户端通常读取
[client]
和
[mysql]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
mysql
也会读取
[client_other]
和
[mysql_other]
组。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
除了程序默认读取的选项组之外,客户端程序还会读取与指定登录路径对应的选项组。 考虑这个命令:
外壳> mysql --login-path=mypath
默认情况下,
mysql
客户端读取
[client]
和
[mysql]
选项组。
因此,对于所示的命令,
MySQL的
读取
[client]
和
[mysql]
其他选项的文件,并
[client]
,
[mysql]
以及
[mypath]
从登录路径文件。
即使使用该
--no-defaults
选项,
客户端程序也会读取登录路径文件
。
要指定备用登录路径文件名,请设置
MYSQL_TEST_LOGIN_FILE
环境变量。
请参阅本节的介绍,了解可以指定此选项的位置的约束。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是客户端程序读取
.mylogin.cnf
登录路径文件(如果存在),即使
--no-defaults
使用
它
也是如此。
这允许以比命令行更安全的方式指定密码,即使存在
--no-defaults
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
打印程序名称以及从选项文件中获取的所有选项。 密码值被屏蔽。
请参阅本节的介绍,了解可以指定此选项的位置的约束。
一些选项是
“
布尔
”
和可以打开或关闭的控制行为。
例如,
mysql
客户端支持一个
--column-names
选项,用于确定是否在查询结果的开头显示一行列名。
默认情况下,启用此选项。
但是,您可能希望在某些情况下禁用它,例如将
mysql
的输出发送
到另一个期望仅查看数据而不是初始标题行的程序时。
要禁用列名,可以使用以下任何一种形式指定选项:
- 禁用列名 --skip-列名 --column-名称= 0
在
--disable
与
--skip
前缀和
=0
后缀都具有相同的效果:它们均关闭选项。
可以通过以下任何方式指定选项 的 “ 启用 ” 形式:
--column-名 --enable-列名 --column-名称= 1
值
ON
,
TRUE
,
OFF
,和
FALSE
也被识别为布尔选项(不区分大小写)。
如果选项以前缀为前缀
--loose
,如果程序无法识别该选项,则程序不会退出并显示错误,而是仅发出警告:
外壳> mysql --loose-no-such-option
mysql:警告:未知选项'--loose-no-such-option'
--loose
当您在同一台计算机上运行MySQL的多个安装程序并在选项文件中列出选项时
,
前缀非常有用。
可以使用
--loose
前缀(或
loose
在选项文件中)
给出可能无法被程序的所有版本识别
的选项。
识别该选项的程序版本正常处理,而不识别它的版本会发出警告并忽略它。
该
--maximum
前缀仅适用于
mysqld,
并允许对大型客户端程序设置会话系统变量的方式进行限制。
为此,请使用
--maximum
带有变量名称
的
前缀。
例如,
--maximum-max_heap_table_size=32M
防止任何客户端使堆表大小限制大于32M。
该
--maximum
前缀旨在用于具有会话值的系统变量。
如果应用于仅具有全局值的系统变量,则会发生错误。
例如,使用
--maximum-back_log=200
,服务器产生此错误:
无法设置'back_log'的最大值
许多MySQL程序都有内部变量,可以使用该
SET
语句
在运行时设置
。
请参见
第13.7.5.1节“变量赋值的SET语法”
和
第5.1.9节“使用系统变量”
。
这些程序变量中的大多数也可以通过使用与指定程序选项相同的语法在服务器启动时设置。
例如,
mysql
有一个
max_allowed_packet
控制其通信缓冲区最大大小的变量。
要将
mysql
的
max_allowed_packet
变量
设置
为16MB的值,请使用以下任一命令:
shell>mysql --max_allowed_packet=16777216
shell>mysql --max_allowed_packet=16M
第一个命令指定以字节为单位的值。
第二个指定以兆字节为单位的值。
对于采用数字值的变量,该值可以与一个后缀被给予
K
,
M
或者
G
以指示1024一乘法器,1024
2
或1024
3
。
(例如,用于设置时
max_allowed_packet
,后缀表示以千字节,兆字节或千兆字节为单位)。如MySQL的8.0.14的,后缀也可以是
T
,
P
和
E
以指示1024乘法器
4
,1024
5
或1024
6
。
后缀字母可以是大写或小写。
在选项文件中,给出的变量设置没有前导破折号:
[MySQL的] max_allowed_packet的= 16777216
要么:
[MySQL的] max_allowed_packet的= 16M
如果您愿意,可以将变量名称中的下划线指定为破折号。 以下选项组是等效的。 两者都将服务器密钥缓冲区的大小设置为512MB:
的[mysqld] 的key_buffer_size = 512M 的[mysqld] 密钥缓冲器大小= 512M
变量可以通过完整写入或任何明确的前缀来指定。
例如,该
max_allowed_packet
变量可以被设置
的MySQL
为
--max_a
,但不作为
--max
,因为后者是不明确的:
外壳> mysql --max=1000000
mysql:模糊选项' - max = 1000000'(max_allowed_packet,max_join_size)
请注意,在为程序实现新变量的情况下,使用变量前缀可能会导致问题。 现在明确无误的前缀可能在将来变得模棱两可。
在服务器启动时设置变量时,可以使用指定值乘数的后缀,但不能
SET
在运行时
设置值
。
另一方面,
SET
使用表达式可以指定变量的值,在服务器启动时设置变量时不是这样。
例如,以下第一行在服务器启动时是合法的,但第二行不是:
shell>mysql --max_allowed_packet=16M
shell>mysql --max_allowed_packet=16*1024*1024
相反,以下第二行在运行时是合法的,但第一行不是:
mysql>SET GLOBAL max_allowed_packet=16M;
mysql>SET GLOBAL max_allowed_packet=16*1024*1024;
按照惯例,分配值的长形式选项使用equals(
=
)符号
写入
,如下所示:
外壳> mysql --host=tonfisk --user=jon
对于需要值的选项(即没有默认值),不需要等号,因此以下内容也有效:
外壳> mysql --host tonfisk --user jon
在这两种情况下, mysql 客户端都尝试 使用用户名为 “ jon ” 的帐户 连接到名为 “ tonfisk ” 的主机上运行的MySQL服务器 。
由于这种行为,当没有为期望的选项提供任何值时,偶尔会出现问题。
看看下面的例子,当用户连接到主机上运行的MySQL服务器
tonfisk
的用户
jon
:
外壳>mysql --host 85.224.35.45 --user jon
欢迎使用MySQL监视器。命令以;结尾; 或\ g。 您的MySQL连接ID是3 服务器版本:8.0.18源代码分发 输入'help;' 或'\ h'寻求帮助。输入'\ c'清除缓冲区。 MySQL的>SELECT CURRENT_USER();
+ ---------------- + | CURRENT_USER()| + ---------------- + | jon @%| + ---------------- + 1排(0.00秒)
省略其中一个选项所需的值会产生错误,例如此处显示的错误:
shell> mysql:选项'--user'需要一个参数mysql --host 85.224.35.45 --user
在这种情况下,
mysql
无法在该
--user
选项
后面找到值,
因为在命令行后没有任何
值
。
但是,如果省略
不是
最后
一个选项的选项的值
,则会获得您可能不期望的其他错误:
shell> ERROR 2005(HY000):未知的MySQL服务器主机'--user'(1)mysql --host --user jon
因为
mysql
假定
--host
命令行
后面的任何字符串
是主机名,
所以解释为
,并且客户端尝试连接到在名为
“
--user
”
的主机上运行的MySQL服务器
。
--host
--user
--host=--user
具有默认值的选项在分配值时始终需要等号;
如果不这样做会导致错误。
例如,MySQL服务器
--log-error
选项具有默认值
,其中
host_name
.errhost_name
是运行MySQL的主机的名称。
假设您在主机名为
“
tonfisk
”
的计算机上运行MySQL
,并考虑以下对
mysqld_safe的
调用
:
外壳> mysqld_safe &
[1] 11699
shell> 080112 12:53:40 mysqld_safe登录到'/usr/local/mysql/var/tonfisk.err'。
080112 12:53:40 mysqld_safe使用/ usr / local / mysql / var中的数据库启动mysqld守护程序
外壳>
关闭服务器后,按如下所示重新启动它:
外壳> mysqld_safe --log-error &
[1] 11699
shell> 080112 12:53:40 mysqld_safe登录到'/usr/local/mysql/var/tonfisk.err'。
080112 12:53:40 mysqld_safe使用/ usr / local / mysql / var中的数据库启动mysqld守护程序
外壳>
结果是相同的,因为
--log-error
命令行上没有任何其他内容,它提供了自己的默认值。
(该
&
字符告诉操作系统在后台运行MySQL; MySQL本身会忽略它。)现在假设您希望将错误记录到名为的文件中
my-errors.err
。
您可以尝试启动服务器
--log-error my-errors
,但这没有预期的效果,如下所示:
外壳> mysqld_safe --log-error my-errors &
[1] 31357
shell> 080111 22:53:31 mysqld_safe登录到'/usr/local/mysql/var/tonfisk.err'。
080111 22:53:32 mysqld_safe使用/ usr / local / mysql / var中的数据库启动mysqld守护程序
080111 22:53:34来自pid文件/usr/local/mysql/var/tonfisk.pid的mysqld_safe mysqld已结束
[1] +完成./mysqld_safe --log-error my-errors
服务器尝试开始
/usr/local/mysql/var/tonfisk.err
用作错误日志,但随后关闭。
检查此文件的最后几行显示原因:
外壳> tail /usr/local/mysql/var/tonfisk.err
2013-09-24T15:36:22.278034Z 0 [ERROR]参数太多(第一个额外的是'my-errors')。
2013-09-24T15:36:22.278059Z 0 [注意]使用--verbose --help获取可用选项列表!
2013-09-24T15:36:22.278076Z 0 [ERROR]中止
2013-09-24T15:36:22.279704Z 0 [注意] InnoDB:开始关机......
2013-09-24T15:36:23.777471Z 0 [注意] InnoDB:关机完成; 日志序列号2319086
2013-09-24T15:36:23.780134Z 0 [注意] mysqld:关闭完成
由于该
--log-error
选项提供默认值,因此必须使用等号为其指定不同的值,如下所示:
外壳> mysqld_safe --log-error=my-errors &
[1] 31437
shell> 080111 22:54:15 mysqld_safe登录到'/usr/local/mysql/var/my-errors.err'。
080111 22:54:15 mysqld_safe使用/ usr / local / mysql / var中的数据库启动mysqld守护程序
外壳>
现在服务器已成功启动,并将错误记录到文件中
/usr/local/mysql/var/my-errors.err
。
在选项文件中指定选项值时可能会出现类似问题。
例如,考虑
my.cnf
包含以下内容
的
文件:
[MySQL的] 主办 用户
当
mysql
客户端读取此文件时,这些条目将被解析为
或
,结果如下所示:
--host
--user
--host=--user
shell> ERROR 2005(HY000):未知的MySQL服务器主机'--user'(1)mysql
但是,在选项文件中,不会假定等号。
假设
my.cnf
文件如下所示:
[MySQL的] 用户jon
在这种情况下 尝试启动 mysql 会导致不同的错误:
shell> mysql:未知选项'--user jon'mysql
如果您要
host
tonfisk
在选项文件中而不是
写入
,
则会发生类似的错误
host=tonfisk
。
相反,您必须使用等号:
[MySQL的] 用户=乔恩
现在登录尝试成功:
外壳>mysql
欢迎使用MySQL监视器。命令以;结尾; 或\ g。 您的MySQL连接ID是5 服务器版本:8.0.18源代码分发 输入'help;' 或'\ h'寻求帮助。输入'\ c'清除缓冲区。 MySQL的>SELECT USER();
+ --------------- + | USER()| + --------------- + | jon @ localhost | + --------------- + 1排(0.00秒)
这与命令行的行为不同,其中不需要等号:
外壳>mysql --user jon --host tonfisk
欢迎使用MySQL监视器。命令以;结尾; 或\ g。 您的MySQL连接ID是6 服务器版本:8.0.18源代码分发 输入'help;' 或'\ h'寻求帮助。输入'\ c'清除缓冲区。 MySQL的>SELECT USER();
+ --------------- + | USER()| + --------------- + | jon @ tonfisk | + --------------- + 1排(0.00秒)
指定需要在选项文件中没有值的值的选项会导致服务器因错误而中止。
假设
my.cnf
包含以下内容:
的[mysqld] 的log_error relay_log relay_log_index
这会导致服务器在启动时失败,如下所示:
外壳> mysqld_safe &
130924 10:41:46 mysqld_safe登录到'/home/jon/bin/mysql/var/tonfisk.err'。
130924 10:41:46 mysqld_safe使用/ home / jon / bin / mysql / var中的数据库启动mysqld守护程序
130924 10:41:47来自pid文件/home/jon/bin/mysql/var/tonfisk.pid的mysqld_safe mysqld已结束
该
--log-error
选项不需要参数;
但是,该
--relay-log
选项需要一个,如错误日志中所示(在没有指定值的情况下,默认为
):
datadir
/hostname
.err
外壳> tail -n 3 ../var/tonfisk.err
130924 10:41:46 mysqld_safe使用/ home / jon / bin / mysql / var中的数据库启动mysqld守护程序
2013-09-24T15:41:47.217180Z 0 [错误] / home / jon / bin / mysql / libexec / mysqld:选项'--relay-log'需要参数
2013-09-24T15:41:47.217479Z 0 [错误]中止
这是对先前行为的更改,其中服务器将示例
my.cnf
文件中
的最后两行解释
为,
--relay-log=relay_log_index
并使用
“
relay_log_index
”
作为基本名称
创建中继日志文件
。
(缺陷号25192)
本节介绍如何建立与MySQL服务器的连接。 有关其他信息,如果无法连接,请参见 第6.2.21节“连接MySQL的疑难解答” 。
要使客户端程序能够连接到MySQL服务器,它必须使用正确的连接参数,例如运行服务器的主机的名称以及MySQL帐户的用户名和密码。 每个连接参数都有一个默认值,但您可以根据需要使用命令行或选项文件中指定的程序选项覆盖它们。
这里的示例使用 mysql 客户端程序,但这些原则适用于其他客户端,如 mysqldump , mysqladmin 或 mysqlshow 。 有关通过指定路径连接MySQL Shell等客户端的更多信息,请参见 第4.2.4节“使用URI或键值对连接” 。
此命令调用 mysql 而不显式指定任何连接参数:
外壳> mysql
由于没有参数选项,因此默认值适用:
默认主机名是
localhost
。
在Unix上,这具有特殊含义,如后所述。
默认用户名
ODBC
在Windows上,或Unix上的Unix登录名。
如果既
-p
没有
--password
给出
也
没有密码
。
对于 mysql ,第一个nonoption参数被视为默认数据库的名称。 如果没有这样的选项, mysql 不会选择默认数据库。
要明确指定主机名和用户名以及密码,请在命令行上提供适当的选项:
shell> shell>mysql --host=localhost --user=myname --password=
password
mydbmysql -h localhost -u myname -p
password
mydb
对于密码选项,密码值是可选的:
如果您使用
-p
或
--password
选项,并指定密码值,必须有
没有空间
之间
-p
或
--password=
以下,并输入密码。
如果使用
-p
或
--password
选项但未指定密码值,则客户端程序会提示您输入密码。
输入密码时不会显示密码。
这比在命令行上提供密码更安全。
系统上的其他用户可以通过执行
ps auxw
等命令来查看命令行中指定的密码
。
请参见
第6.1.2.1节“密码安全的最终用户指南”
。
如上所述,在命令行中包含密码值可能存在安全风险。
要避免此问题,请在
没有任何后续密码值的情况下
指定
--password
或
-p
选项:
shell>mysql --host=localhost --user=myname --password mydb
shell>mysql -h localhost -u myname -p mydb
当密码选项没有密码值时,客户端程序会打印提示并等待您输入密码。
(在这些实例中,
mydb
是
不
解释为密码,因为它是从由空间中的前述密码选项分开。)
在某些系统上,MySQL用来提示输入密码的库例程会自动将密码限制为8个字符。 这是系统库的问题,而不是MySQL。 在内部,MySQL对密码长度没有任何限制。 要解决此问题,请将MySQL密码更改为长度不超过8个字符的值,或将密码放入选项文件中。
在Unix上,MySQL程序
localhost
特别
对待主机名
,其方式可能与您期望的与其他基于网络的程序相比有所不同。
客户端确定要建立的连接类型如下:
如果未指定主机或是
localhost
,则假定与本地主机的连接:
在Windows上,如果服务器启用了共享内存连接,则客户端使用共享内存连接进行连接。
在Unix上,客户端使用Unix套接字文件进行连接。
该
--socket
选项或
MYSQL_UNIX_PORT
环境变量可用于指定套接字名称。
在Windows上,如果
host
是
.
,或TCP / IP未启用
--socket
且未指定或主机为空,则客户端使用命名管道进行连接(如果服务器已启用命名管道连接)。
如果未启用命名管道连接,或者进行连接的用户不是
named_pipe_full_access_group
服务器系统变量
指定的Windows组的成员,
则会发生错误。
否则,使用TCP / IP。
该
--protocol
选项使您可以建立特定类型的连接,即使其他选项通常默认为某些其他协议。
也就是说,
--protocol
可以给出明确指定连接协议并覆盖前面的规则,即使对于
localhost
。
仅使用或检查与所选协议相关的连接选项。
其他连接选项将被忽略。
例如,
--host=localhost
在Unix上,客户端尝试使用Unix套接字文件连接到本地服务器。
即使
给出了指定端口号的选项
--port
或
-P
选项,
也会发生这种情况
。
要确保客户端与本地服务器建立TCP / IP连接,请使用
--host
或
-h
指定主机名值
127.0.0.1
,或本地服务器的IP地址或名称。
您也可以
localhost
使用该
--protocol=TCP
选项
明确指定连接协议,即使是
。
例如:
shell>mysql --host=127.0.0.1
shell>mysql --protocol=TCP
如果服务器配置为接受IPv6连接,则客户端可以使用IPv6进行连接
--host=::1
。
请参见
第5.1.12节“IPv6支持”
。
在Windows上,您可以通过指定
--pipe
或
--protocol=PIPE
选项或指定
.
(句点)作为主机名
来强制MySQL客户端使用命名管道连接
。
如果未启用命名管道连接,或者进行连接的用户不是
named_pipe_full_access_group
服务器系统变量
指定的Windows组的成员,
则会发生错误。
--socket
如果您不想使用默认管道名称,
请使用该
选项指定管道的名称。
与远程服务器的连接始终使用TCP / IP。
此命令
remote.example.com
使用默认端口号
连接到运行的服务器
(3306):
外壳> mysql --host=remote.example.com
要明确指定端口号,请使用
--port
或
-P
选项:
外壳> mysql --host=remote.example.com --port=13306
您也可以为本地服务器的连接指定端口号。
但是,如前所述,
localhost
默认情况下,Unix
上的连接
将使用套接字文件。
您将需要如前所述强制TCP / IP连接,否则将忽略指定端口号的任何选项。
对于此命令,程序在Unix上使用套接字文件,并
--port
忽略
该
选项:
外壳> mysql --port=13306 --host=localhost
要使用端口号,请以下列方式之一调用该程序:
shell>mysql --port=13306 --host=127.0.0.1
shell>mysql --port=13306 --protocol=TCP
以下列表总结了可用于控制客户端程序如何连接到服务器的选项:
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--host=
,
host_name
-h
host_name
运行服务器的主机。
默认值为
localhost
。
--password[=
,
pass_val
]-p[
pass_val
]
MySQL帐户的密码。
如前所述,密码值是可选的,但如果给定的,必须有
没有空间
之间
-p
或
--password=
以下,并输入密码。
默认是不发送密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。
必须使用
--enable-named-pipe
启用命名管道连接
的
选项
启动服务器
。
此外,进行连接的用户必须是
named_pipe_full_access_group
服务器系统变量
指定的Windows组的成员
。
--port=
,
port_num
-P
port_num
用于连接的端口号,用于使用TCP / IP建立的连接。 默认端口号为3306。
--protocol={TCP|SOCKET|PIPE|MEMORY}
此选项显式指定用于连接到服务器的协议。
当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。
例如,Unix上的连接
localhost
默认使用Unix套接字文件:
外壳> mysql --host=localhost
要强制使用TCP / IP连接,请指定一个
--protocol
选项:
外壳> mysql --host=localhost --protocol=TCP
下表显示了允许的
--protocol
选项值,并指出了可以使用每个值的平台。
值不区分大小写。
--protocol
值
|
连接协议 | 允许的操作系统 |
---|---|---|
TCP |
到本地或远程服务器的TCP / IP连接 | 所有 |
SOCKET |
Unix套接字文件连接到本地服务器 | 仅限Unix |
PIPE |
与本地或远程服务器的命名管道连接 | 仅限Windows |
MEMORY |
与本地服务器的共享内存连接 | 仅限Windows |
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
--socket=
,
file_name
-S
file_name
在Unix上,要使用的Unix套接字文件的名称,用于使用命名管道连接到本地服务器。
默认的Unix套接字文件名是
/tmp/mysql.sock
。
在Windows上,用于连接到本地服务器的命名管道的名称。
默认的Windows管道名称是
MySQL
。
管道名称不区分大小写。
必须使用
--enable-named-pipe
启用命名管道连接
的
选项
启动服务器
。
此外,进行连接的用户必须是
named_pipe_full_access_group
服务器系统变量
指定的Windows组的成员
。
--ssl
如果服务器配置了SSL支持,则使用SSL
开头的选项
用于建立与服务器的安全连接。
有关详细信息,请参见
第6.3.2节“加密连接的命令选项”
。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--user=
,
user_name
-u
user_name
要使用的MySQL帐户的用户名。
默认用户名
ODBC
在Windows上,或Unix上的Unix登录名。
可以指定在建立连接时使用的不同默认值,这样每次调用客户端程序时都无需在命令行中输入它们。 这可以通过以下几种方式完成:
您可以在
[client]
选项文件
的
部分中
指定连接参数
。
该文件的相关部分可能如下所示:
[客户] host =host_name
user =user_name
password =your_pass
第4.2.2.2节“使用选项文件” 进一步讨论了选项文件。
您可以使用环境变量指定一些连接参数。
主机可以指定
MySQL的
使用
MYSQL_HOST
。
可以使用
USER
(仅适用于Windows)
指定MySQL用户名
。
密码可以使用
MYSQL_PWD
,虽然这是不安全的;
请参见
第6.1.2.1节“密码安全的最终用户指南”
。
有关变量列表,请参见
第4.9节“MySQL程序环境变量”
。
除了指定 第4.2.3节“连接到MySQL服务器”中 记录的MySQL服务器实例的连接参数外 ,还可以使用URI类型字符串或键值对指定连接。 以下MySQL客户端支持使用URI类型字符串或键值对指定与MySQL服务器实例的连接:
MySQL Shell
MySQL路由器
实现X DevAPI的MySQL连接器
用于以此方式指定连接的许多参数与命令选项中使用的参数类似,本节介绍了所有有效参数。 连接的参数可以指定为:
URI类型字符串,例如
myuser@example.com:3306/main-schema
。
有关
完整语法,
请参阅
使用URI字符串连接
。
键值对,例如
{user:'myuser',
host:'example.com', port:3306,
schema:'main-schema'}
。
有关
完整语法,
请参阅
使用键值对
进行
连接
。
连接参数不区分大小写,只能定义一次。 如果多次定义参数,则会生成错误。
本节包括:
本节介绍指定与MySQL的连接时可用的参数。 以下参数可以作为URI类型字符串或键值对提供。 在URI类型字符串中,它们符合基本URI,请参阅 使用URI字符串连接 。 或者,可以将它们指定为键值对,请参阅 使用键值 对进行 连接 。
scheme
:指定要使用的连接协议。
使用
mysqlx
的X协议连接和
mysql
经典MySQL协议连接。
如果未指定协议,则服务器会尝试猜测协议。
user
:指定用于身份验证过程的MySQL用户帐户。
password
:指定用于身份验证过程的密码。
在连接中存储密码是不安全的,不建议使用。
host
:指定连接引用的服务器实例。
可以是IPv4地址,IPv6地址或主机名。
如果未指定,
则默认使用
localhost
。
port
:指定目标MySQL服务器正在侦听连接的网络端口。
如果未指定,则默认情况下使用33060进行X协议连接,3306是经典MySQL协议连接的默认值。
socket
:Unix套接字或Windows命名管道的路径。
值是本地文件路径,必须使用百分比编码或使用括号括起路径来编码URI类型字符串,这样就不需要对百分比进行编码,例如公共目录分隔符
/
。
要
root@localhost
使用Unix套接字
/tmp/mysqld.sock
进行
连接,请
使用
括号指定路径,例如
root@localhost?socket=(/tmp/mysqld.sock)
,或使用百分比编码
root@localhost?socket=%2Ftmp%2Fmysqld.sock
。
schema
:指定在建立连接时要设置为默认的数据库。
您可以通过附加指定作为URI类型字符串的一部分的连接选项,也可以指定
键值对。
可以使用以下选项:
?
attribute=value
ssl-mode
:用于连接的SSL模式。
以下值有效:
DISABLED
PREFERRED
REQUIRED
VERIFY_CA
VERIFY_IDENTITY
ssl-ca
:PEM格式的X.509证书颁发机构的路径。
ssl-capath
:包含PEM格式的X.509证书颁发机构的目录的路径。
ssl-cert
:PEM格式的X.509证书的路径。
ssl-key
:PEM格式的X.509密钥的路径。
ssl-crl
:包含证书吊销列表的文件路径。
ssl-crlpath
:包含证书吊销列表文件的目录的路径。
ssl-cipher
:要使用的SSL密码。
tls-version
:允许TLS版本进行安全连接。
以下值有效:
TLSv1
TLSv1.1
TLSv1.2
(仅限商业版)
auth-method
:用于连接的身份验证方法。
默认为
AUTO
,意味着服务器尝试猜测。
以下值有效:
AUTO
MYSQL41
SHA256_MEMORY
FROM_CAPABILITIES
FALLBACK
PLAIN
当使用X协议连接,任何配置的
auth-method
被覆盖到的认证方法序列:
MYSQL41
,
SHA256_MEMORY
,
PLAIN
。
get-server-public-key
:从基于RSA密钥对的密码交换所需的服务器请求公钥。
在使用SSL模式的经典MySQL协议上连接到MySQL 8.0服务器时使用
DISABLED
。
在这种情况下,您必须指定协议,例如:
MySQL的://用户@本地:3306弄服务器密钥=真
server-public-key-path
:包含服务器所需的公钥的客户端副本的文件的路径名,用于基于RSA密钥对的密码交换。
在使用SSL模式的经典MySQL协议上连接到MySQL 8.0服务器时使用
DISABLED
。
connect-timeout
:一个整数值,用于配置客户端(如MySQL Shell)的秒数,等待客户端停止尝试连接到无响应的MySQL服务器。
compression
:当设置为
true
(或1)时,如果两者都支持压缩,则此选项可以压缩客户端和服务器之间发送的所有信息。
默认值为无压缩(
false
或0)。
此选项仅适用于使用经典MySQL协议的MySQL Shell连接。
您可以使用URI类型字符串格式指定与MySQL服务器的连接。
这些字符串可以与MySQL Shell一起使用,带有
--uri
命令选项,MySQL Shell
\connect
命令,实现X DevAPI的MySQL连接器,以及MySQL路由器等工具。
URI类型字符串具有以下格式:
[scheme
://] [user
[:[password
]] @]target
[:port
] [/schema
] [?attribute1=value1&attribute2=value2...
百分比编码必须用于URI类型字符串的元素中的保留字符。
例如,如果指定包含该
@
字符
的字符串
,则该字符必须替换为
%40
。
如果在IPv6地址中包含区域ID,则
%
必须将用作分隔符
的
字符替换为
%25
。
您可以在 基本连接参数 的URI类型字符串中使用的 参数 。
如果未使用建议的URI类型字符串指定密码,则会提示输入密码。
以下示例显示如何使用用户名指定URI类型字符串
user
,在每种情况下都会提示输入密码:
与端口3333侦听的本地服务器实例的典型MySQL协议连接。
MySQL的://用户@本地:3333
与端口33065侦听的本地服务器实例的X协议连接。
mysqlx://用户@本地:33065
与远程服务器实例的X协议连接,使用主机名,IPv4地址和IPv6地址。
mysqlx://user@server.example.com/ mysqlx://user@198.51.100.14:123 mysqlx://用户@ [2001:DB8:85±3:8D3:1319:8a2e:370:7348]
使用套接字的X协议连接,路径使用百分比编码或括号提供。
mysqlx://user@/path%2Fto%2Fsocket.sock mysqlx://用户@(/path/to/socket.sock)
可以指定可选路径,该路径表示数据库模式。
mysqlx://user@198.51.100.1/world%5Fx mysqlx://user@198.51.100.2:33060 /世界
可以指定可选查询,包括一
key=value
对
形式的值
或单个值
key
。
该
,
字符用作值的分隔符,可以指定多个对和键的组合。
值可以是类型列表,列表值按外观排序。
字符串必须是百分比编码或用括号括起来。
以下是等同的。
ssluser@127.0.0.1?SSL-CA =%2Froot%2Fclientcert%2Fca-cert.pem \ &SSL证书=%2Froot%2Fclientcert%2Fclient-cert.pem \ &SSL密钥=%2Froot%2Fclientcert%2Fclient密钥 ssluser@127.0.0.1?ssl-ca =(/根/ clientcert / CA-cert.pem)\ &SSL证书=(/根/ clientcert /客户cert.pem)\ &SSL密钥=(/根/ clientcert /客户端密钥)
前面的示例假设连接需要密码,而对于交互式客户端,在登录提示符处请求指定用户的密码。
如果用户拥有无密码帐户(不安全且不推荐),或者正在使用套接字对等凭证身份验证(例如使用Unix套接字连接),则必须在URI类型字符串中明确指定不存在密码提供并且不需要密码提示。
要执行此操作,请
在URI类型字符串
:
后面添加一个
user
,但不要在其后面指定密码。
例如:
mysqlx://用户:@localhost
您可以使用键值对指定与MySQL服务器的连接。
这些键值对以语言自然结构提供,用于实现。
这意味着您可以使用键值对作为JavaScript中的JSON对象提供连接参数,或者在Python中使用字典中的键值对。
无论键值对的提供方式如何,概念都保持不变 - 可以为本节中指定的键分配用于指定连接的值。
您可以使用MySQL Shell
shell.connect()
方法或InnoDB集群
dba.createCluster()
方法中
的键值对指定连接
,也可以使用一些实现X DevAPI的MySQL连接器指定连接。
通常,键值对由
字符和
字符
包围
{
,
}
字符
,
用作键值对之间的分隔符。
:
在键和值之间使用
该
字符,并且必须对字符串进行分隔,例如使用该
'
字符。
与URI类型字符串不同,没有必要对字符串进行百分比编码。
指定为键值对的连接具有以下格式:
{key
:value
,key
:value
,...}
如果未指定密码(建议使用密码),则在交互式客户端中将提示输入密码。
以下示例显示如何使用键值对和用户名指定连接
user
:
与端口33065侦听的本地服务器实例的X协议连接。
{user:'user',host:'localhost',port:33065}
与端口3333侦听的本地服务器实例的典型MySQL协议连接。
{user:'user',host:'localhost',port:3333}
与远程服务器实例的X协议连接,使用主机名,IPv4地址和IPv6地址。
{user:'user',host:'server.example.com'} {user:'user',host:198.51.100.14:123} {user:'user',host:[2001:db8:85a3:8d3:1319:8a2e:370:7348]}
使用套接字的X协议连接。
{user:'user',socket:'/ path / to / socket / file /'}
可以指定可选模式,该模式表示数据库。
{user:'user',host:'localhost',schema:'world'}
前面的示例假设连接需要密码,而对于交互式客户端,在登录提示符处请求指定用户的密码。
如果用户具有无密码帐户(不安全且不推荐),或者正在使用套接字对等凭证身份验证(例如,使用Unix套接字连接),则必须明确指定不提供密码和密码提示不需要。
为此,请
''
在
password
键
后
使用空字符串
。
例如:
{user:'user',密码:'',主机:'localhost'}
与服务器的连接可以使用压缩协议,该协议可减少通过连接发送的字节数。 默认情况下,连接是未压缩的,但如果服务器和客户端都支持压缩,则可以进行压缩。
压缩连接源自客户端,但会影响客户端和服务器端的CPU负载,因为双方都执行压缩和解压缩操作。 由于启用压缩会降低性能,因此其优势主要发生在网络带宽较低时,网络传输时间主导压缩和解压缩操作的成本,结果集很大。
压缩控制适用于客户端程序和参与主/从复制的服务器与服务器的连接。
压缩控件不适用于组复制连接,X协议连接或
FEDERATED
表
连接
。
这些配置参数可用于控制连接压缩:
客户端程序支持
--compress
为服务器连接指定使用压缩
的
选项。
对于使用MySQL C API的程序,启用
MYSQL_OPT_COMPRESS
该
mysql_options()
函数
的
选项
指定使用压缩来连接到服务器。
对于主/服务器复制,启用
slave_compressed_protocol
系统变量指定使用压缩来
实现与主服务器
的从属连接。
在每种情况下,当指定使用
zlib
压缩时,如果双方都支持压缩算法
,则连接使用
压缩算法,否则将回退到未压缩连接。
可以在命令提示符下设置环境变量以影响命令处理器的当前调用,或永久设置以影响将来的调用。 要永久设置变量,可以在启动文件中设置变量,也可以使用系统提供的接口进行设置。 有关具体细节,请参阅命令解释程序的文档。 第4.9节“MySQL程序环境变量” 列出了影响MySQL程序操作的所有环境变量。
要指定环境变量的值,请使用适合命令处理器的语法。
例如,在Windows上,您可以设置
USER
变量以指定您的MySQL帐户名称。
为此,请使用以下语法:
SET USER =your_name
Unix上的语法取决于你的shell。
假设您要使用该
MYSQL_TCP_PORT
变量
指定TCP / IP端口号
。
典型的语法(例如
sh
,
ksh
,
bash
,
zsh
等)如下:
MYSQL_TCP_PORT = 3306 导出MYSQL_TCP_PORT
第一个命令设置变量,命令将变量
export
导出到shell环境,以便MySQL和其他进程可以访问它的值。
对于 csh 和 tcsh ,使用 setenv 使shell变量可用于环境:
setenv MYSQL_TCP_PORT 3306
设置环境变量的命令可以在命令提示符下执行以立即生效,但设置只会在您注销之前保持不变。 要使设置在每次登录时生效,请使用系统提供的界面,或将相应的命令放在命令解释程序每次启动时读取的启动文件中。
在Windows上,您可以使用“系统控制面板”(在“高级”下)设置环境变量。
在Unix上,典型的shell启动文件
.bashrc
或
.bash_profile
用于
庆典
,或
.tcshrc
为
tcsh的
。
假设您的MySQL程序已安装,
/usr/local/mysql/bin
并且您希望可以轻松调用这些程序。
为此,请将
PATH
环境变量
的值设置
为包含该目录。
例如,如果您的shell是
bash
,请将以下行添加到您的
.bashrc
文件中:
PATH = $ {PATH}:在/ usr /本地/ MySQL的/ bin中
bash
对登录和非登录shell使用不同的启动文件,因此您可能希望
.bashrc
为登录shell和
.bash_profile
非
登录shell
添加设置,
以确保
PATH
无论如何设置。
如果您的shell是
tcsh
,请将以下行添加到您的
.tcshrc
文件中:
setenv PATH $ {PATH}:/ usr / local / mysql / bin
如果主目录中不存在相应的启动文件,请使用文本编辑器创建它。
修改
PATH
设置后,在Windows上打开一个新的控制台窗口或在Unix上再次登录,以使设置生效。
本节介绍 mysqld ,MySQL服务器以及用于启动服务器的几个程序。
mysqld ,也称为MySQL Server,是完成MySQL安装中大部分工作的主程序。 MySQL Server管理对包含数据库和表的MySQL数据目录的访问。 数据目录也是其他信息(如日志文件和状态文件)的默认位置。
某些安装包包含名为 mysqld-debug 的服务器的调试版本 。 调用此版本而不是 mysqld 以进行调试支持,内存分配检查和跟踪文件支持(请参见 第29.5.1.2节“创建跟踪文件” )。
当MySQL服务器启动时,它会侦听来自客户端程序的网络连接,并代表这些客户端管理对数据库的访问。
该 mysqld的 程序具有可在启动时指定的许多选项。 有关选项的完整列表,请运行以下命令:
外壳> mysqld --verbose --help
MySQL服务器还有一组系统变量,它们在运行时会影响其操作。 系统变量可以在服务器启动时设置,其中许多可以在运行时更改以实现动态服务器重新配置。 MySQL Server还有一组状态变量,提供有关其操作的信息。 您可以监视这些状态变量以访问运行时性能特征。
有关MySQL服务器命令选项,系统变量和状态变量的完整说明,请参见 第5.1节“MySQL服务器” 。 有关安装MySQL和设置初始配置的信息,请参阅 第2章, 安装和升级MySQL 。
mysqld_safe 是 在Unix上 启动 mysqld 服务器 的推荐方法 。 mysqld_safe 添加了一些安全功能,例如在发生错误时重新启动服务器并将运行时信息记录到错误日志中。 本节后面将给出错误日志记录的说明。
对于某些Linux平台,从RPM或Debian软件包安装MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。 在这些平台上, 没有安装 mysqld_safe, 因为它是不必要的。 有关更多信息,请参见 第2.5.9节“使用systemd管理MySQL服务器” 。
mysqld_safe
尝试启动名为
mysqld
的可执行文件
。
要覆盖默认行为并明确指定要运行的服务器的名称,请指定
mysqld_safe的
选项
--mysqld
或
--mysqld-version
选项
。
您还可以使用它
来指示
mysqld_safe
应该查找服务器
的目录
。
--ledir
mysqld_safe的 许多 选项与 mysqld 的选项相同 。 请参见 第5.1.7节“服务器命令选项” 。
mysqld_safe
未知的选项
如果在命令行中指定,
则传递给
mysqld
,但如果在
[mysqld_safe]
选项文件
的
组
中指定,则忽略它们
。
请参见
第4.2.2.2节“使用选项文件”
。
mysqld_safe的
读取的所有选项
[mysqld]
,
[server]
以及
[mysqld_safe]
选项文件中的部分。
例如,如果您指定这样的
[mysqld]
部分,
mysqld_safe
将查找并使用以下
--log-error
选项:
的[mysqld] 对数误差= error.log中
为了向后兼容,
mysqld_safe
也会读取
[safe_mysqld]
部分,但要成为最新部分,您应该将这些部分重命名为
[mysqld_safe]
。
mysqld_safe 接受命令行和选项文件中的选项,如下表所述。 有关MySQL程序使用的选项文件的信息,请参见 第4.2.2.2节“使用选项文件” 。
表4.3 mysqld_safe选项
格式 | 描述 |
---|---|
--basedir | MySQL安装目录的路径 |
--core文件大小 | mysqld应该能够创建的核心文件的大小 |
--datadir | 数据目录的路径 |
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 |
--defaults文件 | 只读命名选项文件 |
- 救命 | 显示帮助消息并退出 |
--ledir | 服务器所在目录的路径 |
--log错误 | 将错误日志写入命名文件 |
--malloc-LIB | 用于mysqld的备用malloc库 |
--mysqld | 要启动的服务器程序的名称(在ledir目录中) |
--mysqld安全日志,时间戳 | 用于记录的时间戳格式 |
--mysqld版本 | 服务器程序名称的后缀 |
--nice | 使用nice程序设置服务器调度优先级 |
--no-默认 | 不读选项文件 |
--open-文件限制 | mysqld应该能够打开的文件数 |
--pid文件 | 服务器进程标识文件的路径名 |
--plugin-DIR | 安装插件的目录 |
- 港口 | 侦听TCP / IP连接的端口号 |
--skip-杀-的mysqld | 不要试图杀死流浪的mysqld进程 |
--skip-系统日志 | 不要将错误消息写入syslog; 使用错误日志文件 |
- 插座 | 用于侦听Unix套接字连接的套接字文件 |
--syslog | 将错误消息写入syslog |
--syslog标签 | 写入syslog的消息的标签后缀 |
- 时区 | 将TZ时区环境变量设置为命名值 |
- 用户 | 以具有名称user_name或数字用户ID user_id的用户身份运行mysqld |
显示帮助消息并退出。
MySQL安装目录的路径。
mysqld 应该能够创建 的核心文件的大小 。 选项值传递给 ulimit -c 。
该
innodb_buffer_pool_in_core_file
变量可用于减少支持它的操作系统上的核心文件的大小。
有关更多信息,请参见
第15.8.3.8节“从核心文件中排除缓冲池页面”
。
数据目录的路径。
--defaults-extra-file=
file_name
除了常用选项文件外,还请阅读此选项文件。
如果文件不存在或无法访问,则服务器将退出并显示错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
如果使用它,它必须是命令行上的第一个选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则服务器将退出并显示错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
如果使用它,它必须是命令行上的第一个选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
如果 mysqld_safe 找不到服务器,请使用此选项指示服务器所在目录的路径名。
此选项仅在命令行上接受,而不在选项文件中接受。
在使用systemd的平台上,可以在值中指定值
MYSQLD_OPTS
。
请参见
第2.5.9节“使用systemd管理MySQL服务器”
。
将错误日志写入给定文件。 请参见 第5.4.2节“错误日志” 。
此选项控制
mysqld_safe
生成的日志输出中的时间戳格式
。
以下列表描述了允许的值。
对于任何其他值,
mysqld_safe会
记录警告并使用
UTC
格式。
UTC
,
utc
ISO 8601 UTC格式(与
--log_timestamps=UTC
服务器
相同
)。
这是默认值。
SYSTEM
,
system
ISO 8601本地时间格式(与
--log_timestamps=SYSTEM
服务器
相同
)。
HYPHEN
,
hyphen
YY-MM-DD h:mm:ss
格式,如
MySQL 5.6
中的
mysqld_safe
。
LEGACY
,
legacy
YYMMDD hh:mm:ss
格式,如
MySQL 5.6之前的
mysqld_safe
。
用于内存分配而不是系统
malloc()
库的库的名称。
该选项的值必须是一个目录中
/usr/lib
,
/usr/lib64
,
/usr/lib/i386-linux-gnu
,或
/usr/lib/x86_64-linux-gnu
。
该
--malloc-lib
选项的工作原理是修改
LD_PRELOAD
环境值以影响动态链接,以使加载程序在
mysqld
运行
时找到内存分配库
:
如果未给出该选项,或者没有给出值(
--malloc-lib=
),
LD_PRELOAD
则不会修改
该选项
,
也不会尝试使用该选项
tcmalloc
。
如果选项为
--malloc-lib=tcmalloc
,则
mysqld_safe在中
查找
tcmalloc
库
/usr/lib
。
如果
tmalloc
找到,
则将
其路径名添加到
mysqld
的
LD_PRELOAD
值
的开头
。
如果
未找到,则
mysqld_safe将
中止并显示错误。
tcmalloc
如果选项为
,
则将
完整路径添加到
值
的开头
。
如果完整路径指向不存在或不可读的文件,则
mysqld_safe将
中止并显示错误。
--malloc-lib=
/path/to/some/library
LD_PRELOAD
对于
mysqld_safe
添加路径名的情况
LD_PRELOAD
,它将路径添加到变量已有的任何现有值的开头。
在使用systemd管理服务器的系统上,
mysqld_safe
不可用。
而是通过设置
LD_PRELOAD
来
指定分配库
/etc/sysconfig/mysql
。
Linux用户可以
libtcmalloc_minimal.so
在
tcmalloc
安装软件包的
任何平台上
使用该
库,方法
是
/usr/lib
将这些行添加到
my.cnf
文件中:
[mysqld_safe的] 的malloc-LIB = tcmalloc
要使用特定
tcmalloc
库,请指定其完整路径名。
例:
[mysqld_safe的] 的malloc-LIB = /选择/ LIB / libtcmalloc_minimal.so
ledir
要启动
的服务器程序的名称(在
目录中)。
如果您使用MySQL二进制分发但是具有二进制分发之外的数据目录,则需要此选项。
如果
mysqld_safe
找不到服务器,请使用该
--ledir
选项指示服务器所在目录的路径名。
此选项仅在命令行上接受,而不在选项文件中接受。
在使用systemd的平台上,可以在值中指定值
MYSQLD_OPTS
。
请参见
第2.5.9节“使用systemd管理MySQL服务器”
。
此选项与选项类似
--mysqld
,但您只指定服务器程序名称的后缀。
基本名称假定为
mysqld
。
例如,如果使用
--mysqld-version=debug
,
mysqld_safe
将
在
目录中
启动
mysqld-debug
程序
ledir
。
如果参数
--mysqld-version
为空,则
mysqld_safe
在
目录中
使用
mysqld
ledir
。
此选项仅在命令行上接受,而不在选项文件中接受。
在使用systemd的平台上,可以在值中指定值
MYSQLD_OPTS
。
请参见
第2.5.9节“使用systemd管理MySQL服务器”
。
使用该
nice
程序将服务器的调度优先级设置为给定值。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
如果使用它,它必须是命令行上的第一个选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
mysqld 应该能够打开 的文件数 。 选项值传递给 ulimit -n 。
您必须启动
mysqld_safe的
为
root
这个才能正常工作。
mysqld 应该用于其进程ID文件 的路径名 。
插件目录的路径名。
侦听TCP / IP连接时服务器应使用的端口号。
除非服务器
root
系统用户
启动服务器,否则端口号必须为1024或更高
。
不要试图 在启动时 杀死流浪的 mysqld 进程。 此选项仅适用于Linux。
监听本地连接时服务器应使用的Unix套接字文件。
--syslog
导致
syslog
在支持
记录器
程序的
系统
上发送错误消息
。
--skip-syslog
抑制使用
syslog
;
消息将写入错误日志文件。
当
syslog
用于错误日志记录时,
daemon.err
facility / severity用于所有日志消息。
不推荐
使用这些选项来控制
mysqld
日志记录。
要将错误日志输出写入系统日志,请使用
第5.4.2.7节“错误记录到系统日志”中的说明
。
要控制设施,请使用服务器
log_syslog_facility
系统变量。
用于登录到
syslog
,从消息
mysqld_safe的
和
mysqld的
写入用的识别符
mysqld_safe
和
mysqld
分别。
要为标识符指定后缀,请使用
,将标识符修改为
和
。
--syslog-tag=
tag
mysqld_safe-
tag
mysqld-
tag
不推荐
使用此选项来控制
mysqld
日志记录。
请改用服务器
log_syslog_tag
系统变量。
请参见
第5.4.2.7节“记录到系统日志的错误”
。
将
TZ
时区环境变量设置为给定的选项值。
有关合法的时区规范格式,请参阅操作系统文档。
以
具有名称
或数字用户ID的用户身份
运行
mysqld
服务器
。
(
此上下文中的
“
用户
”
是指系统登录帐户,而不是授权表中列出的MySQL用户。)
user_name
user_id
如果
使用
或
选项命令选项文件
执行
mysqld_safe
,则
该选项必须是命令行中给出的第一个选项,否则将不使用选项文件。
例如,此命令将不使用命名选项文件:
--defaults-file
--defaults-extra-file
MySQL的> mysqld_safe --port=port_num
--defaults-file=file_name
而是,使用以下命令:
MySQL的> mysqld_safe --defaults-file=file_name
--port=port_num
该 mysqld_safe的 脚本编写,以便它可以正常启动从一个源或MySQL的一个二进制分发安装在服务器上,即使这些类型的分布通常在稍微不同的地点安装服务器。 (请参见 第2.1.4节“安装布局” 。) mysqld_safe 期望满足下列条件之一:
可以找到相对于工作目录(
调用
mysqld_safe
的目录
)
的服务器和数据库
。
对于二进制发行版,
mysqld_safe
在其工作目录下查找
bin
和
data
目录。
对于源代码分发,它会查找
libexec
和
var
目录。
如果
从MySQL安装目录中
执行
mysqld_safe
(例如,
/usr/local/mysql
对于二进制分发)
,
则应满足此条件
。
如果无法找到相对于工作目录的服务器和数据库,
mysqld_safe会
尝试按绝对路径名找到它们。
典型的位置是
/usr/local/libexec
和
/usr/local/var
。
实际位置由在构建时分配到分布中的值确定。
如果MySQL安装在配置时指定的位置,它们应该是正确的。
因为 mysqld_safe 试图找到相对于其自己的工作目录的服务器和数据库,所以只要 从MySQL安装目录 运行 mysqld_safe ,就可以在 任何地方安装MySQL的二进制发行版 :
shell> shell>cd
mysql_installation_directory
bin/mysqld_safe &
如果
mysqld_safe
失败,即使从MySQL安装目录调用,也请指定
--ledir
和
--datadir
选项以指示服务器和数据库在系统中的目录。
mysqld_safe 尝试使用 睡眠 和 日期 系统实用程序来确定它每秒尝试启动的次数。 如果存在这些实用程序并且每秒尝试的启动次数大于5,则 mysqld_safe将 等待1秒钟后再次启动。 这是为了防止在重复故障时CPU使用率过高。 (Bug#11761530,Bug#54035)
当您使用 mysqld_safe 启动 mysqld时 , mysqld_safe会 安排来自其自身和 mysqld的 错误(和通知)消息 以转到同一目的地。
有几个 mysqld_safe 选项用于控制这些消息的目标:
--log-error=
:将错误消息写入指定的错误文件。
file_name
--syslog
:将错误消息写入
syslog
支持
记录器
程序的
系统上
。
--skip-syslog
:不要写错误消息
syslog
。
消息将写入缺省错误日志文件(
在数据目录中),如果
host_name
.err--log-error
给出选项,则
写入命名文件
。
如果没有给出这些选项,则默认为
--skip-syslog
。
当
mysqld_safe
写入消息时,通知会转到日志记录目标(
syslog
或错误日志文件)和
stdout
。
错误转到记录目标和
stderr
。
不推荐使用
mysqld_safe
控制
mysqld
日志记录
。
请改用服务器的本机
支持。
有关更多信息,请参见
第5.4.2.7节“将错误记录到系统日志”
。
syslog
Unix和类Unix系统上的MySQL发行版包括一个名为 mysql.server 的脚本 ,该 脚本 使用 mysqld_safe 启动MySQL服务器 。 它可以在Linux和Solaris等使用System V样式运行目录来启动和停止系统服务的系统上使用。 它也被macOS Startup Item for MySQL使用。
mysql.server 是MySQL源代码树中使用的脚本名称。 安装的名称可能不同(例如, mysqld 或 mysql )。 在下面的讨论中, 根据您的系统 调整名称 mysql.server 。
对于某些Linux平台,从RPM或Debian软件包安装MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。 在这些平台上, 没有安装 mysql.server 和 mysqld_safe ,因为它们是不必要的。 有关更多信息,请参见 第2.5.9节“使用systemd管理MySQL服务器” 。
要使用
mysql.server
脚本
手动启动或停止服务器,请使用
start
或
stop
参数
从命令行调用它
:
shell>mysql.server start
shell>mysql.server stop
mysql.server
将位置更改为MySQL安装目录,然后调用
mysqld_safe
。
要以某个特定用户身份运行服务器
,请在全局
选项文件
组中
添加适当的
user
选项
,如本节后面所示。
(
如果您在非标准位置安装了MySQL的二进制发行版,则
必须编辑
mysql.server
。修改它以在运行
mysqld_safe
之前将位置更改到正确的目录
。如果这样做,则修改后的
mysql
版本
。服务器
[mysqld]
/etc/my.cnf
如果你将来升级MySQL,可能会被覆盖;
制作您可以重新安装的已编辑版本的副本。)
mysql.server stop 通过向服务器发送信号来停止服务器。 您也可以通过执行 mysqladmin shutdown 手动停止服务器 。
要在服务器上自动启动和停止MySQL,必须将start和stop命令添加到
/etc/rc*
文件中
的相应位置
:
如果您使用Linux服务器RPM软件包(
)或本机Linux软件包安装,则
mysql.server
脚本可能会安装在
名称为
或
的
目录中
。
有关
Linux RPM软件包
的更多信息,
请参见
第2.5.4节“使用Oracle的RPM软件包在Linux上安装MySQL”
。
MySQL-server-
VERSION
.rpm/etc/init.d
mysqld
mysql
如果从源代码发行版安装MySQL或使用不
自动
安装
mysql.server
的二进制分发格式,则
可以手动安装脚本。
它可以
support-files
在MySQL安装目录下
的
目录中
找到,也可以
在MySQL源代码树中找到。
将脚本复制到
/etc/init.d
名为
mysql
的
目录
并使其可执行:
shell>cp mysql.server /etc/init.d/mysql
shell>chmod +x /etc/init.d/mysql
安装脚本后,激活它以在系统启动时运行所需的命令取决于您的操作系统。 在Linux上,您可以使用 chkconfig :
外壳> chkconfig --add mysql
在某些Linux系统上,似乎还需要以下命令才能完全启用 mysql 脚本:
外壳> chkconfig --level 345 mysql on
在FreeBSD上,启动脚本通常应该进入
/usr/local/etc/rc.d/
。
安装
mysql.server
脚本
/usr/local/etc/rc.d/mysql.server.sh
以启用自动启动。
该
rc(8)
手册指出,在这个目录中的脚本只有当他们的基本名称匹配的执行
*.sh
shell文件名模式。
目录中存在的任何其他文件或目录都将被忽略。
作为上述设置的替代方案,某些操作系统也会
在启动时
使用
/etc/rc.local
或
/etc/init.d/boot.local
启动其他服务。
要使用此方法启动MySQL,请将以下命令附加到相应的启动文件中:
/ bin / sh -c'cd / usr / local / mysql; ./bin/mysqld_safe --user = mysql&'
对于其他系统,请参阅操作系统文档以了解如何安装启动脚本。
mysql.server文件
读取的选项
[mysql.server]
和
[mysqld]
的选项文件的部分。
为了向后兼容,它还会读取
[mysql_server]
部分,但要成为最新部分,您应该将这些部分重命名为
[mysql.server]
。
您可以
在全局
文件中
添加
mysql.server的
选项
/etc/my.cnf
。
典型
my.cnf
文件可能如下所示:
的[mysqld] DATADIR =的/ usr /本地/ MySQL的/无功 插座= / var / tmp中/的mysql.sock 端口= 3306 用户= MySQL的 [mysql.server的] BASEDIR =的/ usr /本地/ MySQL的
该
mysql.server的
脚本支持下表中显示的选项。
如果指定,则
必须
将
它们
放在选项文件中,而不是放在命令行中。
mysql.server
仅支持
start
和
stop
作为命令行参数。
表4.4 mysql.server选项 - 文件选项
选项名称 | 描述 | 类型 |
---|---|---|
basedir |
MySQL安装目录的路径 | 目录名称 |
datadir |
MySQL数据目录的路径 | 目录名称 |
pid-file |
服务器应在其中写入其进程ID的文件 | 文件名 |
service-startup-timeout |
等待服务器启动多长时间 | 整数 |
MySQL安装目录的路径。
MySQL数据目录的路径。
服务器应在其中写入其进程ID的文件的路径名。 服务器在数据目录中创建文件,除非给出绝对路径名来指定不同的目录。
如果未给出此选项,则
mysql.server
使用默认值
。
传递给
mysqld_safe
的PID文件值将
覆盖
host_name
.pid[mysqld_safe]
选项文件组中
指定的任何值
。
因为
mysql.server
读取
[mysqld]
选项文件组但不
读取
[mysqld_safe]
组,所以可以确保
mysqld_safe
在从
mysql.server
调用
时获得相同的值,
就像通过
pid-file
在
[mysqld_safe]
和
[mysqld]
组中
设置
相同的
设置
手动调用一样
。
service-startup-timeout=
seconds
等待确认服务器启动的时间长度。 如果服务器在此时间内未启动,则 mysql.server将 退出并显示错误。 默认值为900.值为0表示不等待启动。 负值意味着永远等待(没有超时)。
mysqld_multi 旨在管理几个 侦听不同Unix套接字文件和TCP / IP端口上的连接的 mysqld 进程。 它可以启动或停止服务器,或报告其当前状态。
对于某些Linux平台,从RPM或Debian软件包安装MySQL包括用于管理MySQL服务器启动和关闭的systemd支持。 在这些平台上, 没有安装 mysqld_multi, 因为它是不必要的。 有关使用systemd处理多个MySQL实例的信息,请参见 第2.5.9节“使用systemd管理MySQL服务器” 。
mysqld_multi
搜索
在
(或在
选项
命名的文件中)命名的组
。
可以是任何正整数。
此编号在以下讨论中称为选项组编号,或
。
组号将选项组彼此区分开来,并用作
mysqld_multi的
参数,
以指定要为其启动,停止或获取状态报告的服务器。
这些组中列出的选项与
用于启动
mysqld
的
组中使用的
选项相同
。
(例如,参见
第2.10.5节“自动启动和停止MySQL”
[mysqld
N
]my.cnf
--defaults-file
N
GNR
[mysqld]
但是,当使用多个服务器时,每个服务器都必须使用自己的值来选择Unix套接字文件和TCP / IP端口号等选项。
有关在多服务器环境中每个服务器必须唯一的选项的更多信息,请参见
第5.8节“在一台计算机上运行多个MySQL实例”
。
要调用 mysqld_multi ,请使用以下语法:
外壳> mysqld_multi [options
] {start|stop|reload|report} [GNR
[,GNR
] ...]
start
,
stop
,
reload
(停止和重新启动),和
report
表明要执行哪个操作。
您可以为单个服务器或多个服务器执行指定的操作,具体取决于
GNR
选项名称
后面的
列表。
如果没有列表,
mysqld_multi
将对选项文件中的所有服务器执行操作。
每个
GNR
值表示选项组编号或组编号范围。
该值应该是选项文件中组名称末尾的数字。
例如,
GNR
名为的组
[mysqld17]
是
17
。
要指定数字范围,请用短划线分隔第一个和最后一个数字。
该
GNR
值
10-13
表示组
[mysqld10]
通过
[mysqld13]
。
可以在命令行上指定多个组或组范围,以逗号分隔。
列表中必须没有空格字符(空格或制表符)
GNR
;
忽略空格字符后的任何内容。
此命令使用选项组启动单个服务器
[mysqld17]
:
外壳> mysqld_multi start 17
此命令使用选项组
[mysqld8]
并
[mysqld10]
通过
[mysqld13]
以下方式
停止多个服务器
:
外壳> mysqld_multi stop 8,10-13
有关如何设置选项文件的示例,请使用以下命令:
外壳> mysqld_multi --example
mysqld_multi 搜索选项文件,如下所示:
使用时
--no-defaults
,不会读取任何选项文件。
使用时
,只读取指定的文件。
--defaults-file=
file_name
否则,将读取标准位置列表中的选项文件,包括该
选项
指定的任何文件
(如果有)。
(如果多次给出该选项,则使用最后一个值。)
--defaults-extra-file=
file_name
有关这些选项文件选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
搜索读取的选项文件
[mysqld_multi]
和
选项组。
该
组可用于
mysqld_multi
本身的
选项
。
groups可用于传递给特定
mysqld
实例的
选项
。
[mysqld
N
][mysqld_multi]
[mysqld
N
]
这些
[mysqld]
或
[mysqld_safe]
组可用于
mysqld
或
mysqld_safe的
所有实例读取的公共选项
。
您可以指定一个
选项,以便为该实例使用不同的配置文件,在这种情况下
,该文件中
的
或
组将用于该实例。
--defaults-file=
file_name
[mysqld]
[mysqld_safe]
mysqld_multi 支持以下选项。
显示帮助消息并退出。
显示示例选项文件。
指定日志文件的名称。 如果文件存在,则会将日志输出附加到其中。
用于停止服务器 的 mysqladmin 二进制文件。
要使用
的
mysqld
二进制文件。
请注意,您也可以将
mysqld_safe
指定
为此选项的值。
如果使用
mysqld_safe
启动服务器,则可以
在相应的
选项组中
包含
mysqld
或
ledir
选项
。
这些选项指示
mysqld_safe
应该启动
的服务器的名称以及服务器
所在目录的路径名。
(请参阅
第4.3.2节“
mysqld_safe
- MySQL服务器启动脚本”中
有关这些选项的说明
。)示例:
[mysqld
N
]
[mysqld38] mysqld = mysqld-debug ledir = / opt / local / mysql / libexec
打印日志信息
stdout
而不是日志文件。
默认情况下,输出将转到日志文件。
调用 mysqladmin 时要使用的MySQL帐户的密码 。 请注意,与其他MySQL程序不同,此选项的密码值不是可选的。
静音模式; 禁用警告。
通过TCP / IP端口而不是Unix套接字文件连接到每个MySQL服务器。
(如果缺少套接字文件,服务器可能仍在运行,但只能通过TCP / IP端口访问。)默认情况下,使用Unix套接字文件建立连接。
此选项会影响
stop
和
report
操作。
调用 mysqladmin 时要使用的MySQL帐户的用户名 。
更加冗长。
显示版本信息并退出。
关于 mysqld_multi的 一些注意 事项 :
最重要的是 :在使用 mysqld_multi 之前 ,请确保您了解传递给 mysqld 服务器 的选项的含义 以及 为什么 要使用单独的 mysqld 进程。 注意使用 具有相同数据目录的 多个 mysqld 服务器 的危险 。 使用单独的数据目录,除非您 知道 自己在做什么。 开始用相同的数据目录的多台服务器并 没有 给你一个线程系统额外的性能。 看到 第5.8节“在一台机器上运行多个MySQL实例” 。
确保
启动
特定
mysqld
进程
的Unix帐户完全可以访问每个服务器的数据目录
。
除非你
知道
自己在做什么
,否则
不要
使用Unix
root
帐户
。
请参见
第6.1.5节“如何以普通用户身份运行MySQL”
。
确保用于停止
mysqld
服务器
的MySQL帐户
(使用
mysqladmin
程序)具有与每个服务器相同的用户名和密码。
此外,请确保该帐户具有该
SHUTDOWN
权限。
如果要管理的服务器具有管理帐户的不同用户名或密码,则可能需要在每个具有相同用户名和密码的服务器上创建帐户。
例如,您可以
multi_admin
通过为每个服务器执行以下命令来
设置公共
帐户:
外壳>mysql -u root -S /tmp/mysql.sock -p
输入密码: mysql>CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
mysql>GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';
请参见
第6.2节“访问控制和帐户管理”
。
你必须为每个
mysqld
服务器
执行此操作
。
连接到每个参数时,请适当更改连接参数。
请注意,帐户名的主机名部分必须允许您
multi_admin
从要运行
mysqld_multi
的主机
进行连接
。
每个
mysqld
的Unix套接字文件和TCP / IP端口号必须不同
。
(或者,如果主机具有多个网络地址,则可以设置
bind_address
系统变量以使不同的服务器侦听不同的接口。)
--pid-file
如果您使用
mysqld_safe
启动
mysqld
(例如,
--mysqld=mysqld_safe
)每个
mysqld
应该有自己的进程ID文件
,
那么
该
选项非常重要
。
使用
mysqld_safe
而不是
mysqld
的优点
是
mysqld_safe
监视其
mysqld
进程并在进程由于使用
kill
-9
或由于其他原因(例如分段错误)
发送的信号而终止时重新启动它
。
您可能希望使用
mysqld
--user
选项
,但要执行此操作,您需要以
Unix超级用户(
)
运行
mysqld_multi
脚本
。
选项文件中的选项无关紧要;
如果您不是超级用户,并且
在您自己的Unix帐户下启动
mysqld
进程,则会
收到警告
。
root
以下示例显示了如何设置用于
mysqld_multi
的选项文件
。
其中顺序
mysqld的
程序被启动或停止取决于它们出现在选项文件的顺序。
组号不需要形成完整的序列。
在示例中有意省略了
第一
组
和第五
组,以说明您可以
在选项文件中
包含
“
间隙
”
。
这为您提供了更大的灵活性
[mysqld
N
]
#这是mysqld_multi的my.cnf文件的示例。 #通常这个文件位于home dir~ / .my.cnf或/etc/my.cnf [mysqld_multi的] mysqld = / usr / local / mysql / bin / mysqld_safe mysqladmin = / usr / local / mysql / bin / mysqladmin user = multi_admin password = my_password [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/data2/hostname.pid2 datadir = / usr / local / mysql / data2 language = / usr / local / mysql / share / mysql / english user = unix_user1 [mysqld3] mysqld = / path / to / mysqld_safe ledir = / path / to / mysqld-binary / mysqladmin = / path / to / mysqladmin socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/data3/hostname.pid3 datadir = / usr / local / mysql / data3 language = / usr / local / mysql / share / mysql / swedish user = unix_user2 [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/data4/hostname.pid4 datadir = / usr / local / mysql / data4 language = / usr / local / mysql / share / mysql / estonia user = unix_user3 [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/data6/hostname.pid6 datadir = / usr / local / mysql / data6 language = / usr / local / mysql / share / mysql / japanese user = unix_user4
请参见 第4.2.2.2节“使用选项文件” 。
安装或升级MySQL时使用本节中的程序。
comp_err
创建
mysqld
errmsg.sys
使用
的
文件,
以确定要为不同的错误代码显示的错误消息。
comp_err
通常在构建MySQL时自动运行。
它
从位于
MySQL源代码分发中
的文本文件
编译
文件
。
errmsg.sys
sql/share/errmsg-utf8.txt
comp_err
还生成
mysqld_error.h
,
mysqld_ername.h
和
sql_state.h
头文件。
有关如何定义错误消息的详细信息,请参阅 MySQL Internals Manual 。
像这样 调用 comp_err :
外壳> comp_err [options
]
comp_err 支持以下选项。
--help
,
-?
显示帮助消息并退出。
--charset=
,
dir_name
-C
dir_name
字符集目录。
默认是
../sql/share/charsets
。
--debug=
,
debug_options
-#
debug_options
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:O,
file_name
d:t:O,/tmp/comp_err.trace
--debug-info
,
-T
程序退出时打印一些调试信息。
--header_file=
,
file_name
-H
file_name
错误头文件的名称。
默认是
mysqld_error.h
。
--in_file=
,
file_name
-F
file_name
输入文件的名称。
默认是
../sql/share/errmsg-utf8.txt
。
--name_file=
,
file_name
-N
file_name
错误名称文件的名称。
默认是
mysqld_ername.h
。
--out_dir=
,
dir_name
-D
dir_name
输出基目录的名称。
默认是
../sql/share/
。
--out_file=
,
file_name
-O
file_name
输出文件的名称。
默认是
errmsg.sys
。
--statefile=
,
file_name
-S
file_name
SQLSTATE头文件的名称。
默认是
sql_state.h
。
--version
,
-V
显示版本信息并退出。
此程序使您能够通过以下方式提高MySQL安装的安全性:
您可以为
root
帐户
设置密码
。
您可以删除
root
可从本地主机外部访问的帐户。
您可以删除匿名用户帐户。
您可以删除
test
数据库(默认情况下可以由所有用户访问,甚至是匿名用户),以及允许任何人访问名称以...开头的数据库的权限
test_
。
mysql_secure_installation 可帮助您实现类似于 第2.10.4节“保护初始MySQL帐户”中 所述的安全建议 。
正常用法是连接本地MySQL服务器; 不带参数 调用 mysql_secure_installation :
外壳> mysql_secure_installation
执行时, mysql_secure_installation 会提示您确定要执行的操作。
该
validate_password
组件可用于密码强度检查。
如果未安装插件,
mysql_secure_installation将
提示用户是否安装它。
如果启用了以后输入的任何密码,请使用该插件进行检查。
大多数常见的MySQL客户端选项如
--host
和
--port
可以在命令行和选项文件中使用。
例如,要使用端口3307通过IPv6连接到本地服务器,请使用以下命令:
外壳> mysql_secure_installation --host=::1 --port=3307
mysql_secure_installation
支持下面的选项,可以在命令行或在指定
[mysql_secure_installation]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.5 mysql_secure_installation选项
格式 | 描述 | 介绍 |
---|---|---|
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | |
--defaults文件 | 只读命名选项文件 | |
--defaults基团的后缀 | 选项组后缀值 | |
- 救命 | 显示帮助消息并退出 | |
- 主办 | 要连接的主机(IP地址或主机名) | |
--no-默认 | 不读选项文件 | |
- 密码 | 接受但始终被忽略。 无论何时调用mysql_secure_installation,都会提示用户输入密码。 | |
- 港口 | 用于连接的TCP / IP端口号 | |
--print-默认 | 打印默认选项 | |
- 协议 | 要使用的连接协议 | |
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | |
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | |
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | |
--ssl证书 | 包含X.509证书的文件 | |
--ssl-密码 | 用于连接加密的允许密码列表 | |
--ssl-CRL | 包含证书吊销列表的文件 | |
--ssl-crlpath | 包含证书吊销列表文件的目录 | |
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 |
--ssl键 | 包含X.509密钥的文件 | |
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 |
--tls版本 | 允许加密连接的协议 | |
- 默认情况下使用 | 执行时没有用户交互性 | |
- 用户 | 连接到服务器时使用的MySQL用户名 |
--help
,
-?
显示帮助消息并退出。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysql_secure_installation
通常会读取
[client]
和
[mysql_secure_installation]
组。
如果
--defaults-group-suffix=_other
给出
了该
选项,
mysql_secure_installation
也会读取
[client_other]
和
[mysql_secure_installation_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--password=
,
password
-p
password
此选项已被接受但被忽略。 无论是否使用此选项, mysql_secure_installation 始终会提示用户输入密码。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
非交互式执行。 此选项可用于无人参与的安装操作。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
如果缺少这些文件,此程序将创建SSL证书和密钥文件以及使用SSL进行安全连接所需的RSA密钥对文件以及使用RSA通过未加密连接进行安全密码交换。 如果现有的SSL文件已过期, mysql_ssl_rsa_setup 也可用于创建新的SSL文件。
mysql_ssl_rsa_setup 使用 openssl 命令,因此它的使用取决于在您的机器上安装OpenSSL。
对于使用OpenSSL编译的MySQL发行版,生成SSL和RSA文件的另一种方法是让服务器自动生成它们。 请参见 第6.3.3.1节“使用MySQL创建SSL和RSA证书和密钥” 。
mysql_ssl_rsa_setup 有助于降低使用SSL的障碍,方便生成所需的文件。 但是, mysql_ssl_rsa_setup 生成的 证书 是自签名的,这不是很安全。 获得使用 mysql_ssl_rsa_setup 创建的文件的经验后 ,请考虑从注册的证书颁发机构获取CA证书。
像这样 调用 mysql_ssl_rsa_setup :
外壳> mysql_ssl_rsa_setup [options
]
典型的选项是
--datadir
指定创建文件的位置,以及
--verbose
查看
mysql_ssl_rsa_setup
执行
的
openssl
命令
。
mysql_ssl_rsa_setup 尝试使用一组默认文件名创建SSL和RSA文件。 它的工作原理如下:
mysql_ssl_rsa_setup
在
环境变量
指定的位置
检查
openssl
二进制文件
PATH
。
如果
找不到
openssl
,
mysql_ssl_rsa_setup
什么都不做。
如果
存在
openssl
,
mysql_ssl_rsa_setup
将在该
--datadir
选项
指定的MySQL数据目录中查找默认的SSL和RSA文件,
如果
--datadir
未给出
该
选项
,
则
查找
已编译的数据目录
。
mysql_ssl_rsa_setup 使用以下名称检查数据目录中的SSL文件:
ca.pem 服务器cert.pem 服务器key.pem
如果存在任何这些文件,则 mysql_ssl_rsa_setup不会 创建任何SSL文件。 否则,它会调用 openssl 来创建它们,以及一些额外的文件:
ca.pem自签名CA证书 ca-key.pem CA私钥 server-cert.pem服务器证书 server-key.pem服务器私钥 client-cert.pem客户端证书 client-key.pem客户端私钥
这些文件使用SSL启用安全客户端连接; 请参见 第6.3.1节“配置MySQL以使用加密连接” 。
mysql_ssl_rsa_setup 使用以下名称检查数据目录中的RSA文件:
private_key.pem私钥/公钥对的私有成员 public_key.pem私钥/公钥对的公共成员
如果存在任何这些文件,则
mysql_ssl_rsa_setup不会
创建任何RSA文件。
否则,它会调用
openssl
来创建它们。
这些文件通过未加密的连接使用RSA进行安全密码交换,以便对由
sha256_password
or或
caching_sha2_password
plugin
进行身份验证的帐户进行安全
;
请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
有关 mysql_ssl_rsa_setup 创建的文件特征的信息 ,请参见 第6.3.3.1节“使用MySQL创建SSL和RSA证书和密钥” 。
在启动时,MySQL服务器会自动使用
mysql_ssl_rsa_setup
创建的SSL文件
来启用SSL,如果除了
--ssl
(可能还有
--ssl-cipher
)
之外没有给出明确的SSL选项
。
如果你喜欢明确指定文件,调用与客户
--ssl-ca
,
--ssl-cert
以及
--ssl-key
选择在启动时命名
ca.pem
,
server-cert.pem
和
server-key.pem
分别文件。
如果没有给出明确的RSA选项 ,服务器还会自动使用 mysql_ssl_rsa_setup 创建的RSA文件 来启用RSA。
如果服务器启用了SSL,则客户端默认使用SSL进行连接。
要明确指定证书和密钥文件,使用
--ssl-ca
,
--ssl-cert
和
--ssl-key
选项来命名
ca.pem
,
client-cert.pem
和
client-key.pem
分别文件。
但是,可能首先需要一些其他客户端设置,因为
默认情况下
mysql_ssl_rsa_setup
会在数据目录中创建这些文件。
数据目录的权限通常只允许访问运行MySQL服务器的系统帐户,因此客户端程序无法使用位于那里的文件。
要使文件可用,请将它们复制到可读的目录(但
不是
可写的客户:
对于本地客户端,可以使用MySQL安装目录。 例如,如果数据目录是安装目录的子目录,并且您当前的位置是数据目录,则可以复制如下文件:
cp ca.pem client-cert.pem client-key.pem ..
对于远程客户端,使用安全通道分发文件,以确保它们在传输过程中不被篡改。
如果用于MySQL安装的SSL文件已过期,则可以使用 mysql_ssl_rsa_setup 创建新文件:
停止服务器。
重命名或删除现有的SSL文件。 您可能希望先备份它们。 (RSA文件不会过期,因此您无需删除它们 .mysql_ssl_rsa_setup 会看到它们存在而不会覆盖它们。)
使用
选项
运行
mysql_ssl_rsa_setup
--datadir
以指定创建新文件的位置。
重启服务器。
mysql_ssl_rsa_setup
支持以下命令行选项,可以在命令行或
选项文件
的
[mysql_ssl_rsa_setup]
和
[mysqld]
组中指定。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
--help
,
?
显示帮助消息并退出。
mysql_ssl_rsa_setup 应该检查默认SSL和RSA文件 的目录路径, 如果缺少这些文件,它应该创建文件。 默认值是已编译的数据目录。
X.509证书中Common Name属性的后缀。 后缀值限制为17个字符。 默认值基于MySQL版本号。
--uid=name
,
-v
应该是任何已创建文件的所有者的用户的名称。
该值是用户名,而不是数字用户ID。
如果没有此选项,
mysql_ssl_rsa_setup
创建的文件将由
执行它的用户拥有。
仅当您
root
在支持
chown()
系统调用
的
系统
上
执行程序时,此选项才有效
。
--verbose
,
-v
详细模式。 关于程序的功能产生更多输出。 例如,程序显示 它运行 的 openssl 命令,并生成输出以指示它是否跳过SSL或RSA文件创建,因为某些默认文件已存在。
--version
,
-V
显示版本信息并退出。
该
mysql_tzinfo_to_sql
程序加载的时区表
mysql
的数据库。
它用于具有
zoneinfo
数据库的系统(描述时区的文件集)。
此类系统的示例是Linux,FreeBSD,Solaris和OS X.这些文件的一个可能位置是
/usr/share/zoneinfo
目录(
/usr/share/lib/zoneinfo
在Solaris上)。
如果您的系统没有zoneinfo数据库,则可以使用
第5.1.13节“MySQL服务器时区支持”中
所述的可下载软件包
。
mysql_tzinfo_to_sql 可以通过以下几种方式调用:
shell> shell> shell>mysql_tzinfo_to_sql
tz_dir
mysql_tzinfo_to_sql
tz_file tz_name
mysql_tzinfo_to_sql --leap
tz_file
对于第一个调用语法,将zoneinfo目录路径名传递给 mysql_tzinfo_to_sql 并将输出发送到 mysql 程序。 例如:
外壳> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql_tzinfo_to_sql 读取系统的时区文件并从中生成SQL语句。 mysql 处理这些语句以加载时区表。
第二种语法导致
mysql_tzinfo_to_sql
加载
tz_file
与时区名称对应
的单个时区文件
tz_name
:
外壳> mysql_tzinfo_to_sql tz_file
tz_name
| mysql -u root mysql
如果您的时区需要考虑闰秒,
请
使用第三种语法
调用
mysql_tzinfo_to_sql
,该语法初始化闰秒信息。
tz_file
是您的时区文件的名称:
外壳> mysql_tzinfo_to_sql --leap tz_file
| mysql -u root mysql
运行 mysql_tzinfo_to_sql后 ,最好重新启动服务器,以便它不会继续使用任何以前缓存的时区数据。
从MySQL 8.0.16开始,MySQL服务器执行以前由 mysql_upgrade 处理的升级任务 (有关详细信息,请参见 第2.11.3节“MySQL升级过程升级” )。 因此, mysql_upgrade 是不需要的,并且从该版本开始不推荐使用,并且将在未来的MySQL版本中删除。 由于 mysql_upgrade 不再执行升级任务,因此无条件退出状态为0。
每次升级MySQL时,都应该执行 mysql_upgrade ,它会查找升级的MySQL服务器的不兼容性:
它会升级
mysql
架构中
的系统表,
以便您可以利用可能已添加的新特权或功能。
它升级了性能架构
INFORMATION_SCHEMA
和
sys
架构。
它检查用户模式。
如果 mysql_upgrade 发现某个表可能存在不兼容性,则会执行表检查,如果发现问题,则会尝试进行表修复。 如果表无法修复,请参见 第2.11.13节“重建或修复表或索引” 以获取手动表修复策略。
mysql_upgrade 直接与MySQL服务器通信,向其发送执行升级所需的SQL语句。
在 执行升级 之前, 应始终备份当前的MySQL安装 。 请参见 第7.2节“数据库备份方法” 。
在 升级MySQL安装和运行 mysql_upgrade 之前, 某些升级不兼容性可能需要特殊处理 。 有关 确定是否有任何此类不兼容性适用于您的安装以及如何处理它们的说明 , 请参见 第2.11节“升级MySQL” 。
像这样 使用 mysql_upgrade :
确保服务器正在运行。
调用
mysql_upgrade
以升级
mysql
模式中
的系统表,
并检查和修复其他模式中的表:
外壳> mysql_upgrade [options
]
停止服务器并重新启动它,以便任何系统表更改生效。
如果要升级多个MySQL服务器实例, 请 使用适合连接到每个所需服务器的连接参数 调用 mysql_upgrade 。 例如,如果服务器在部件3306到3308上的本地主机上运行,请通过连接到相应的端口来升级每个服务器:
shell> shell> shell>mysql_upgrade --protocol=tcp -P 3306 [
other_options
]mysql_upgrade --protocol=tcp -P 3307 [
other_options
]mysql_upgrade --protocol=tcp -P 3308 [
other_options
]
对于Unix上的本地主机连接,该
--protocol=tcp
选项强制使用TCP / IP而不是Unix套接字文件进行连接。
默认情况下,
mysql_upgrade
作为MySQL
root
用户
运行
。
如果
root
运行
mysql_upgrade
时密码已过期
,您将看到一条消息,指出您的密码已过期且
mysql_upgrade因此
失败。
要更正此问题,请重置
root
密码以将其
取消,
然后再次
运行
mysql_upgrade
。
首先,连接到服务器
root
:
shell>mysql -u root -p
输入密码:****
< - 在此处输入root密码
使用
ALTER
USER
以下方法
重置密码
MySQL的> ALTER USER USER() IDENTIFIED BY 'root-password
';
然后退出 mysql 并 再次 运行 mysql_upgrade :
外壳> mysql_upgrade [options
]
如果运行服务器并将
disabled_storage_engines
系统变量设置为禁用某些存储引擎(例如,
MyISAM
),则
mysql_upgrade
可能会失败,并显示如下错误:
mysql_upgrade:[ERROR] 3161:存储引擎MyISAM被禁用 (不允许创建表)。
要处理此问题,请在
disabled_storage_engines
禁用时
重新启动服务器
。
然后你应该能够
成功
运行
mysql_upgrade
。
之后,重新启动服务器
disabled_storage_engines
并将其设置为其原始值。
除非使用该
--upgrade-system-tables
选项
调用,否则
mysql_upgrade会
根据需要处理所有用户模式中的所有表。
表检查可能需要很长时间才能完成。
每个表都被锁定,因此在处理其他会话时不可用。
检查和维修操作可能非常耗时,特别是对于大型桌子。
表检查使用
语句
的
FOR UPGRADE
选项
CHECK TABLE
。
有关此选项所需内容的详细信息,请参见
第13.7.3.2节“CHECK TABLE语法”
。
mysql_upgrade 使用当前的MySQL版本号标记所有已检查和修复的表。 这样可以确保下次 使用相同版本的服务器 运行 mysql_upgrade 时,可以确定是否需要再次检查或修复给定的表。
mysql_upgrade
将MySQL版本号保存
mysql_upgrade_info
在数据目录
中指定的文件
中。
这用于快速检查是否已检查此版本的所有表,以便可以跳过表检查。
要忽略此文件并执行检查,请使用该
--force
选项。
该
mysql_upgrade_info
文件已弃用,将在以后的MySQL版本中删除。
mysql_upgrade
检查
mysql.user
系统表行,对于具有空
plugin
列的
任何行,
'mysql_native_password'
如果凭据使用与该插件兼容的哈希格式
,
则将该
列设置为
。
必须手动升级具有4.1之前密码哈希的行。
mysql_upgrade 不会升级时区表或帮助表的内容。 有关升级说明,请参见 第5.1.13节“MySQL服务器时区支持” 和 第5.1.14节“服务器端帮助支持” 。
除非使用该
--skip-sys-schema
选项
调用,否则
mysql_upgrade
将安装
sys
架构(如果未安装),否则将其升级到当前版本。
如果
sys
模式存在但没有
version
视图,
则会发生错误
,前提是缺少它表示用户创建的模式:
存在没有sys.version视图的sys模式。如果 你有一个用户创建的sys模式,必须重命名为 升级成功。
要在这种情况下升级,请先删除或重命名现有
sys
架构。
mysql_upgrade
支持下面的选项,可以在命令行或在指定
[mysql_upgrade]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.7 mysql_upgrade选项
格式 | 描述 | 介绍 |
---|---|---|
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | |
--character集-DIR | 安装字符集的目录 | |
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | |
--debug | 写调试日志 | |
--debug检查 | 程序退出时打印调试信息 | |
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | |
--default-AUTH | 要使用的身份验证插件 | |
--default-字符集 | 指定默认字符集 | |
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | |
--defaults文件 | 只读命名选项文件 | |
--defaults基团的后缀 | 选项组后缀值 | |
- 力 | 即使已经为当前的MySQL版本执行了mysql_upgrade,也强制执行 | |
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 |
- 救命 | 显示帮助消息并退出 | |
- 主办 | 连接到给定主机上的MySQL服务器 | |
--login路径 | 从.mylogin.cnf中读取登录路径选项 | |
--max允许的分组 | 发送到服务器或从服务器接收的最大数据包长度 | |
--net缓冲长度 | TCP / IP和套接字通信的缓冲区大小 | |
--no-默认 | 不读选项文件 | |
- 密码 | 连接到服务器时使用的密码 | |
- 管 | 在Windows上,使用命名管道连接到服务器 | |
--plugin-DIR | 安装插件的目录 | |
- 港口 | 用于连接的TCP / IP端口号 | |
--print-默认 | 打印默认选项 | |
- 协议 | 要使用的连接协议 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | |
--skip-SYS-模式 | 不要安装或升级sys架构 | |
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | |
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | |
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | |
--ssl证书 | 包含X.509证书的文件 | |
--ssl-密码 | 用于连接加密的允许密码列表 | |
--ssl-CRL | 包含证书吊销列表的文件 | |
--ssl-crlpath | 包含证书吊销列表文件的目录 | |
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 |
--ssl键 | 包含X.509密钥的文件 | |
--ssl模式 | 与服务器连接的安全状态 | |
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 |
--tls版本 | 允许加密连接的协议 | |
--upgrade-系统表 | 仅更新系统表,而不更新用户模式 | |
- 用户 | 连接到服务器时使用的MySQL用户名 | |
--verbose | 详细模式 | |
--version检查 | 检查服务器版本是否正确 | |
--write,二进制日志 | 将所有语句写入二进制日志 |
显示简短的帮助消息并退出。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:O,/tmp/mysql_upgrade.trace
程序退出时打印一些调试信息。
--debug-info
,
-T
程序退出时打印调试信息,内存和CPU使用情况统计信息。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysql_upgrade
通常会读取
[client]
和
[mysql_upgrade]
组。
如果
--defaults-group-suffix=_other
给出
了该
选项,
mysql_upgrade
也会读取
[client_other]
和
[mysql_upgrade_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
mysql_upgrade_info
即使
已经为当前版本的MySQL执行了
mysql_upgrade,也要
忽略该
文件并强制执行
。
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
客户端/服务器通信的最大缓冲区大小。 默认值为24MB。 最小值和最大值分别为4KB和2GB。
用于客户端/服务器通信的缓冲区的初始大小。 默认值为1MB - 1KB。 最小值和最大值分别为4KB和16MB。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,则
mysql_upgrade
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysql_upgrade
找不到,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
默认情况下,
如果未安装架构
,则
mysql_upgrade
将安装
sys
架构
,
否则
将其
升级到当前版本。
该
--skip-sys-schema
选项会抑制此行为。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
仅升级
mysql
架构中
的系统表
,不升级用户架构。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
默认用户名是
root
。
详细模式。 打印有关程序功能的更多信息。
--version-check
,
-k
检查
mysql_upgrade
连接到
的服务器的版本,
以验证它与
构建
mysql_upgrade
的版本相同
。
如果没有,
mysql_upgrade
退出。
默认情况下启用此选项;
要禁用检查,请使用
--skip-version-check
。
默认情况下,
mysql_upgrade的
二进制日志记录
被禁用。
--write-binlog
如果您希望将其操作写入二进制日志,请
调用该程序
。
当服务器运行时启用了全局事务标识符(GTID)(
gtid_mode=ON
)时,请不要通过
mysql_upgrade
启用二进制日志记录
。
本节介绍连接到MySQL服务器的客户端程序。
mysql 是一个带有输入行编辑功能的简单SQL shell。 它支持交互式和非交互式使用。 交互使用时,查询结果以ASCII表格式显示。 当非交互式使用时(例如,作为过滤器),结果以制表符分隔格式显示。 可以使用命令选项更改输出格式。
如果由于大型结果集的内存不足而出现问题,请使用该
--quick
选项。
这迫使
mysql
一次一行地从服务器检索结果,而不是检索整个结果集并在显示它之前在内存中缓冲它。
这是通过使用
mysql_use_result()
客户端/服务器库中
的
C API函数
返回结果集
而不是
mysql_store_result()
。
或者,MySQL Shell提供对X DevAPI的访问。 有关详细信息,请参阅 MySQL Shell 8.0(MySQL 8.0的一部分) 。
使用 mysql 非常容易。 从命令解释器的提示符调用它,如下所示:
外壳> mysql db_name
要么:
shell> 输入密码:mysql --user=
user_name
--passworddb_name
your_password
然后输入一个SQL语句,以结束它
;
,
\g
或者
\G
按Enter键。
如果存在,则 键入 Control + C将 中断当前语句,否则将取消任何部分输入行。
您可以在脚本文件(批处理文件)中执行SQL语句,如下所示:
外壳> mysql db_name
< script.sql
> output.tab
在Unix上, mysql 客户端将以交互方式执行的语句记录到历史文件中。 请参见 第4.5.1.3节“mysql客户端日志记录” 。
MySQL的
支持下面的选项,可以在命令行或在指定
[mysql]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.8 mysql客户端选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--auto-翻版 | 启用自动重新散列 | ||
--auto垂直输出 | 启用自动垂直结果集显示 | ||
- 批量 | 不要使用历史文件 | ||
--binary-AS - 己 | 以十六进制表示法显示二进制值 | 8.0.2 | |
--binary模式 | 禁用\ r \ n - 到 - \ n转换和处理\ 0作为查询结束 | ||
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
--character集-DIR | 安装字符集的目录 | ||
--column-名 | 在结果中写入列名称 | ||
--column型信息 | 显示结果集元数据 | ||
- 评论 | 是否在发送到服务器的语句中保留或删除注释 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--connect过期密码 | 指示服务器客户端可以处理过期密码沙箱模式。 | ||
--connect超时 | 连接超时前的秒数 | ||
- 数据库 | 要使用的数据库 | ||
--debug | 写调试日志; 仅当MySQL是使用调试支持构建时才支持 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
对齐和美化--delimiter | 设置语句分隔符 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
- 执行 | 执行该语句并退出 | ||
- 力 | 即使发生SQL错误也继续 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
--histignore | 模式指定要记录的忽略哪些语句 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--html | 生成HTML输出 | ||
- 忽略空间 | 忽略函数名后的空格 | ||
--init命令 | 连接后执行的SQL语句 | ||
--line号码 | 写错误的行号 | ||
--local-infile的 | 启用或禁用LOAD DATA的LOCAL功能 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--max允许的分组 | 发送到服务器或从服务器接收的最大数据包长度 | ||
--max联接尺寸 | 使用--safe-updates时连接中行的自动限制 | ||
--named的命令 | 启用命名的mysql命令 | ||
--net缓冲长度 | TCP / IP和套接字通信的缓冲区大小 | ||
--no-自动翻版 | 禁用自动重新散列 | ||
--no哔 | 发生错误时不要发出蜂鸣声 | ||
--no-默认 | 不读选项文件 | ||
--one数据库 | 忽略除命令行上指定的默认数据库的语句之外的语句 | ||
--pager | 使用给定命令进行分页查询输出 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 提示 | 将提示符设置为指定的格式 | ||
- 协议 | 要使用的连接协议 | ||
- 快 | 不要缓存每个查询结果 | ||
- 生的 | 写入列值而不进行转义转换 | ||
--reconnect | 如果与服务器的连接丢失,则自动尝试重新连接 | ||
--i-am-a-dummy , - 安全更新 | 仅允许指定键值的UPDATE和DELETE语句 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
- 选择限制 | 使用--safe-updates时SELECT语句的自动限制 | ||
--server-公钥路径 | 包含RSA公钥的文件的路径名 | ||
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
--show-警告 | 如果有的话,在每个语句后显示警告 | ||
--sigint,忽视 | 忽略SIGINT信号(通常是键入Control + C的结果) | ||
- 无声 | 静音模式 | ||
--skip-自动翻版 | 禁用自动重新散列 | ||
--skip-列名 | 不要在结果中写入列名 | ||
--skip-行号 | 跳过错误的行号 | ||
--skip-命名命令 | 禁用命名的mysql命令 | ||
--skip-寻呼机 | 禁用分页 | ||
--skip-重新连接 | 禁用重新连接 | ||
- 插座 | 对于连接到localhost,要使用的Unix套接字文件或Windows命名管道 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--syslog | 将交互式语句记录到syslog中 | ||
- 表 | 以表格格式显示输出 | ||
--tee | 将输出的副本附加到命名文件 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
--unbuffered | 每次查询后刷新缓冲区 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 | ||
- 垂直 | 垂直打印查询输出行(每列值一行) | ||
- 等待 | 如果无法建立连接,请等待并重试,而不是中止 | ||
--xml | 生成XML输出 |
--help
,
-?
显示帮助消息并退出。
启用自动重新散列。
默认情况下,此选项处于启用状态,可以使数据库,表和列名称完成。
使用
--disable-auto-rehash
禁用换汤不换药。
这会导致
mysql
启动得更快,但
如果要使用名称完成,则
必须发出
rehash
命令或其
\#
快捷方式。
要填写名称,请输入第一部分,然后按Tab键。 如果名称是明确的,则 mysql 完成它。 否则,您可以再次按Tab键以查看以您目前所输入的内容开头的可能名称。 如果没有默认数据库,则不会完成。
此功能需要使用 readline 库 编译的MySQL客户端 。 通常, Windows上不提供 readline 库。
如果结果集对于当前窗口来说太宽,则会导致垂直显示结果集,否则使用普通的表格格式。
(这适用于以
;
or
结尾的语句
\G
。)
--batch
,
-B
使用制表符作为列分隔符打印结果,每行都在新行上。 使用此选项, mysql 不使用历史记录文件。
批处理模式导致非常规输出格式和特殊字符的转义。
可以使用原始模式禁用转义;
请参阅
--raw
选项
的说明
。
当给出此选项时,
mysql
使用十六进制表示法(
)
显示二进制数据
。
无论整体输出显示格式是表格格式,垂直格式,HTML格式还是XML格式,都会出现这种情况。
0x
value
此选项有助于处理
可能包含
值的
mysqlbinlog
输出
BLOB
。
默认情况下,
mysql
将
\r\n
语句字符串转换
为语句终止符
\n
并将其解释
\0
为语句终止符。
--binary-mode
禁用这两个功能。
它还禁止所有
的MySQL
除了命令
charset
和
delimiter
非交互模式(用于输入管道输送到
的MySQL
或使用所加载的
source
命令)。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
在结果中写入列名称。
显示结果集元数据。
--comments
,
-c
是否在发送到服务器的语句中删除或保留注释。
默认为
--skip-comments
(strip comments),启用
--comments
(保留注释)。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
如果用于连接的帐户具有过期密码,则向服务器指示客户端可以处理沙盒模式。 这对于 mysql的 非交互式调用很有用, 因为通常服务器会断开尝试使用具有过期密码的帐户进行连接的非交互式客户端。 (请参见 第6.2.16节“过期密码的服务器处理” 。)
连接超时前的秒数。
(默认值为
0
。)
--database=
,
db_name
-D
db_name
要使用的数据库。 这主要在选项文件中很有用。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/mysql.trace
只有在使用MySQL构建MySQL时,此选项才可用
WITH_DEBUG
。
Oracle提供的MySQL发布二进制文件
不是
使用此选项构建的。
程序退出时打印一些调试信息。
--debug-info
,
-T
程序退出时打印调试信息,内存和CPU使用情况统计信息。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--default-character-set=
charset_name
使用
charset_name
作为客户端和连接的默认字符集。
如果操作系统使用一个字符集并且 默认情况下 mysql 客户端使用另一个 字符集,则此选项很有 用。 在这种情况下,输出可能格式不正确。 您通常可以通过使用此选项来强制客户端使用系统字符集来修复此类问题。
有关更多信息,请参见 第10.4节“连接字符集和排序规则” 和 第10.14节“字符集配置” 。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysql
通常会读取
[client]
和
[mysql]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
mysql
也会读取
[client_other]
和
[mysql_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
设置语句分隔符。
默认值为分号(
;
)。
禁用命名命令。
\*
仅
使用
表单,或仅在以分号(
;
)
结尾的行的开头使用命名命令
。
mysql
默认
启用
此选项
。
但是,即使使用此选项,长格式命令仍然可以从第一行开始工作。
请参见
第4.5.1.2节“mysql客户端命令”
。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
--execute=
,
statement
-e
statement
执行该语句并退出。
默认输出格式与生成的格式类似
--batch
。
有关
示例
,
请参见
第4.2.2.1节“在命令行上使用选项”
。
使用此选项,
mysql
不使用历史记录文件。
--force
,
-f
即使发生SQL错误也继续。
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
一个或多个冒号分隔模式的列表,指定要为记录目的忽略的语句。
这些模式将添加到默认模式列表(
"*IDENTIFIED*:*PASSWORD*"
)中。
为此选项指定的值会影响写入历史文件的语句的记录,以及
syslog
是否
--syslog
给出
该
选项。
有关更多信息,请参见
第4.5.1.3节“mysql客户端日志记录”
。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
--html
,
-H
生成HTML输出。
--ignore-spaces
,
-i
忽略函数名后的空格。
在
IGNORE_SPACE
SQL模式
的讨论中描述了这种效果
(请参见
第5.1.11节“服务器SQL模式”
)。
连接到服务器后要执行的SQL语句。 如果启用了自动重新连接,则在重新连接后再次执行该语句。
写错误的行号。
禁用此功能
--skip-line-numbers
。
启用或禁用
LOCAL
功能
LOAD
DATA
。
对于
mysql
,默认情况下禁用此功能。
没有值,该选项启用
LOCAL
。
该选项可以作为
--local-infile=0
或
--local-infile=1
明确禁用或启用
LOCAL
。
启用本地数据加载还需要服务器允许它;
请参见
第6.1.6节“LOAD DATA LOCAL的安全问题”
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
客户端/服务器通信的最大缓冲区大小。 默认值为16MB,最大值为1GB。
使用时连接中行的自动限制
--safe-updates
。
(默认值为1,000,000。)
--named-commands
,
-G
启用命名的
mysql
命令。
允许使用长格式命令,而不仅仅是短格式命令。
例如,
quit
并且
\q
两者都认可。
使用
--skip-named-commands
禁用命名的命令。
请参见
第4.5.1.2节“mysql客户端命令”
。
TCP / IP和套接字通信的缓冲区大小。 (默认值为16KB。)
--no-auto-rehash
,
-A
这与效果相同
--skip-auto-rehash
。
请参阅说明
--auto-rehash
。
--no-beep
,
-b
发生错误时不要发出蜂鸣声。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--one-database
,
-o
忽略除默认数据库是命令行上命名的数据时发生的语句。
此选项很简陋,应谨慎使用。
语句过滤仅基于
USE
语句。
最初,
mysql
在输入中执行语句,因为
db_name
在命令行上
指定数据库
等同于
在输入的开头
插入
。
然后,对于
遇到的
每个
语句,
mysql
接受或拒绝以下语句,具体取决于命名数据库是否是命令行中的数据库。
陈述的内容并不重要。
USE
db_name
USE
假设 调用 mysql 来处理这组语句:
从db2.t2中删除; 使用db2; DROP TABLE db1.t1; CREATE TABLE db1.t1(i INT); 使用db1; 插入t1(i)VALUES(1); CREATE TABLE db2.t1(j INT);
如果命令行是 mysql --force --one-database db1 , mysql 将按如下方式处理输入:
DELETE
执行
该
语句是因为默认数据库是
db1
,即使该语句在不同的数据库中命名一个表。
该
DROP
TABLE
和
CREATE
TABLE
语句不被执行,因为默认数据库不
db1
,即使语句命名的表
db1
。
该
INSERT
和
CREATE
TABLE
语句执行,因为默认数据库
db1
,即使
CREATE
TABLE
声明名字在不同的数据库中的表。
使用给定命令进行分页查询输出。
如果省略该命令,则默认分页器是
PAGER
环境变量
的值
。
有效的寻呼机
更少
,
更多
,
cat [> filename]
等等。
此选项仅适用于Unix,仅适用于交互模式。
要禁用分页,请使用
--skip-pager
。
第4.5.1.2节“mysql客户端命令”
进一步讨论了输出分页。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysql
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysql
找不到,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
将提示符设置为指定的格式。
默认是
mysql>
。
第4.5.1.2节“mysql客户端命令”
中描述了提示可以包含的特殊序列
。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--quick
,
-q
不要缓存每个查询结果,在收到时打印每一行。 如果输出暂停,这可能会降低服务器的速度。 使用此选项, mysql 不使用历史记录文件。
--raw
,
-r
对于表格输出,
列周围
的
“
装箱
”
可以将一个列值与另一个列值区分开来。
对于非表格输出(例如在批处理模式下或在
给出
--batch
或
--silent
选项
时生成
),特殊字符将在输出中转义,以便可以轻松识别它们。
换行,制表符,
NUL
和反斜杠被写为
\n
,
\t
,
\0
,和
\\
。
该
--raw
选项禁用此字符转义。
以下示例演示了表格与非表格输出以及使用原始模式禁用转义:
%mysql
mysql> SELECT CHAR(92); + ---------- + | CHAR(92)| + ---------- + | \ | + ---------- + %mysql -s
mysql> SELECT CHAR(92); CHAR(92) \\ %mysql -s -r
mysql> SELECT CHAR(92); CHAR(92) \
如果与服务器的连接丢失,则自动尝试重新连接。
每次连接丢失时都会进行一次重新连接尝试。
要禁止重新连接行为,请使用
--skip-reconnect
。
--safe-updates
,
--i-am-a-dummy
,
-U
如果启用该选项,
UPDATE
并且
DELETE
不中使用的关键语句
WHERE
条款或
LIMIT
条款产生错误。
此外,限制
SELECT
产生(或估计产生)非常大的结果集的语句。
如果在选项文件中设置了此选项,则可以
--skip-safe-updates
在命令行上
使用
它来覆盖它。
有关此选项的更多信息,请参阅
使用安全更新模式(--safe-updates)
。
在MySQL 8.0.3中删除了此选项。
SELECT
使用时语句
的自动限制
--safe-updates
。
(默认值为1,000。)
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
只有在使用OpenSSL构建MySQL时,此选项才可用。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
如果有任何声明,则会在每个声明后显示警告。 此选项适用于交互式和批处理模式。
忽略
SIGINT
信号(通常是输入
Control + C
的结果
)。
--silent
,
-s
静音模式。 产量减少。 可以多次给出此选项以产生越来越少的输出。
此选项会导致非常规输出格式和特殊字符的转义。
可以使用原始模式禁用转义;
请参阅
--raw
选项
的说明
。
--skip-column-names
,
-N
不要在结果中写入列名。
--skip-line-numbers
,
-L
不要为错误写行号。 当您想要比较包含错误消息的结果文件时很有用。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--syslog
,
-j
此选项使
mysql
将交互式语句发送到系统日志记录工具。
在Unix上,这是
syslog
;
在Windows上,它是Windows事件日志。
记录消息的出现位置取决于系统。
在Linux上,目标通常是
/var/log/messages
文件。
以下是使用Linux在Linux上生成的输出示例
--syslog
。
此输出的格式是为了便于阅读;
每条记录的消息实际上只占一行。
3月7日12:39:25 myhost MysqlClient [20824]: SYSTEM_USER:'oscar',MYSQL_USER:'my_oscar',CONNECTION_ID:23, DB_SERVER:'127.0.0.1',DB:' - ',QUERY:'USE test;' 3月7日12:39:28 myhost MysqlClient [20824]: SYSTEM_USER:'oscar',MYSQL_USER:'my_oscar',CONNECTION_ID:23, DB_SERVER:'127.0.0.1',DB:'test',QUERY:'SHOW TABLES;'
有关更多信息,请参见 第4.5.1.3节“mysql客户端日志记录” 。
--table
,
-t
以表格格式显示输出。 这是交互式使用的默认设置,但可用于以批处理模式生成表输出。
将输出的副本附加到给定文件。 此选项仅在交互模式下有效。 第4.5.1.2节“mysql客户端命令” 进一步讨论了tee文件。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--unbuffered
,
-n
每次查询后刷新缓冲区。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
--verbose
,
-v
详细模式。
关于程序的功能产生更多输出。
可以多次给出此选项以产生越来越多的输出。
(例如,
-v -v
-v
即使在批处理模式下也会生成表格输出格式。)
--version
,
-V
显示版本信息并退出。
--vertical
,
-E
垂直打印查询输出行(每列值一行)。
如果没有此选项,您可以通过终止它们来为单个语句指定垂直输出
\G
。
--wait
,
-w
如果无法建立连接,请等待并重试,而不是中止。
--xml
,
-X
生成XML输出。
<field name =“ column_name
”> NULL </ field>
--xml
与
mysql一起
使用
时的输出
与
mysqldump
的输出
匹配
--xml
。
有关
详细信息
,
请参见
第4.5.4节“
mysqldump
- 数据库备份程序”
。
XML输出还使用XML命名空间,如下所示:
外壳> mysql --xml -uroot -e "SHOW VARIABLES LIKE 'version%'"
<?xml version =“1.0”?>
<resultset statement =“SHOW VARIABLES LIKE'version''”xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”>
<行>
<field name =“Variable_name”> version </ field>
<field name =“Value”> 5.0.40-debug </ field>
</行>
<行>
<field name =“Variable_name”> version_comment </ field>
<field name =“Value”>来源分配</ field>
</行>
<行>
<field name =“Variable_name”> version_compile_machine </ field>
<field name =“Value”> i686 </ field>
</行>
<行>
<field name =“Variable_name”> version_compile_os </ field>
<field name =“Value”> suse-linux-gnu </ field>
</行>
</结果集>
mysql
将您发出的每个SQL语句发送到要执行的服务器。
还有一组
mysql
自己解释
的命令
。
有关这些命令的列表,请
在
提示符下
键入
help
或
:
\h
mysql>
MySQL的> help
所有MySQL命令列表:
请注意,所有文本命令必须首先在线并以';'结尾
?(\?)`help'的同义词。
clear(\ c)清除当前的输入语句。
connect(\ r \ n)重新连接到服务器。可选参数是db和host。
分隔符(\ d)设置语句分隔符。
编辑(\ e)使用$ EDITOR编辑命令。
ego(\ G)发送命令到mysql服务器,垂直显示结果。
退出(\ q)退出mysql。和戒烟一样。
go(\ g)发送命令到mysql服务器。
帮助(\ h)显示此帮助。
nopager(\ n)禁用寻呼机,打印到标准输出。
notee(\ t)不要写入outfile。
寻呼机(\ P)设置PAGER [to_pager]。通过PAGER打印查询结果。
print(\ p)打印当前命令。
提示符(\ R)更改您的mysql提示符。
退出(\ q)退出mysql。
rehash(\#)重建完成哈希。
source(\。)执行SQL脚本文件。将文件名作为参数。
status(\ s)从服务器获取状态信息。
system(\!)执行系统shell命令。
tee(\ T)设置outfile [to_outfile]。将所有内容添加到给定内容
OUTFILE。
使用(\ u)使用其他数据库。将数据库名称作为参数。
charset(\ C)切换到另一个charset。可能需要进行处理
具有多字节字符集的binlog。
警告(\ W)在每个语句后显示警告。
nowarning(\ w)每次声明后都不显示警告。
resetconnection(\ x)清理会话上下文。
对于服务器端帮助,请键入“帮助内容”
如果
MySQL的
与被调用的
--binary-mode
选项,所有
的MySQL
命令是无效的,除了
charset
和
delimiter
非交互模式(用于输入管道输送到
的MySQL
或使用所加载的
source
命令)。
每个命令都有长短形式。 长格不区分大小写; 简短的形式是。 长格式后面可以跟一个可选的分号终止符,但是短格式不应该。
/*
... */
不支持
在多行
注释中
使用短格式命令
。
help [
,
,
,
arg
]\h [
arg
]\? [
arg
]? [
arg
]
显示列出可用 mysql 命令 的帮助消息 。
如果为
help
命令
提供参数
,
mysql
将其用作搜索字符串,以从MySQL参考手册的内容访问服务器端帮助。
有关更多信息,请参见
第4.5.1.4节“mysql客户端服务器端帮助”
。
charset
,
charset_name
\C
charset_name
更改默认字符集并发出
SET
NAMES
声明。
如果
在启用自动重新连接的情况下运行
mysql
(不建议这样做),
这使字符集在客户端和服务器上保持同步
,因为指定的字符集用于重新连接。
清除当前输入。 如果您改变主意执行要输入的语句,请使用此选项。
connect [
,
db_name
host_name
]]\r [
db_name
host_name
]]
重新连接到服务器。 可以给出可选的数据库名称和主机名参数,以指定默认数据库或运行服务器的主机。 如果省略,则使用当前值。
更改
mysql
解释为SQL语句之间的分隔符
的字符串
。
默认值为分号(
;
)。
可以在
delimiter
命令行
上将分隔符字符串指定为不带引号或带引号的参数
。
可以使用单引号(
'
),双引号(
"
)或反引号(
`
)字符
来完成引用
。
要在带引号的字符串中包含引号,请使用不同的引号字符引用该字符串,或使用反斜杠(
\
)字符
转义引号
。
应该在带引号的字符串之外避免反斜杠,因为它是MySQL的转义字符。
对于不带引号的参数,分隔符将被读取到第一个空格或行尾。
对于带引号的参数,分隔符将被读取到该行上的匹配引号。
除了在带引号的字符串中,
mysql
将分隔符字符串的实例解释为语句分隔符。
注意定义可能出现在其他单词中的分隔符。
例如,如果将分隔符定义为
X
,则无法
INDEX
在语句中
使用单词
。
mysql
将其解释为
INDE
后跟分隔符
X
。
当
mysql
识别的分隔符
设置为默认值以外的值时
;
,该字符的实例将被发送到服务器而不进行解释。
但是,服务器本身仍然会将其解释
;
为语句分隔符并相应地处理语句。
服务器端的这种行为可用于多语句执行(参见
第28.7.23节“C API多语句执行支持”
),以及解析存储过程和函数体,触发器和事件(参见
第24.1节) ,“定义存储程序”
)。
编辑当前输入语句。
MySQL的
检查值
EDITOR
和
VISUAL
环境变量来确定使用哪个编辑器。
如果未设置任何变量,则
默认编辑器为
vi
。
该
edit
命令仅适用于Unix。
将当前语句发送到要执行的服务器,并使用垂直格式显示结果。
退出 mysql 。
将当前语句发送到要执行的服务器。
禁用输出分页。
请参阅说明
pager
。
该
nopager
命令仅适用于Unix。
禁用输出复制到tee文件。
请参阅说明
tee
。
在每个语句后禁用警告显示。
pager
[
,
command
]\P
[
command
]
启用输出分页。
通过
--pager
在调用
mysql
时
使用该
选项
,可以使用Unix程序(如
less
,
more
或任何其他类似程序)
以交互模式浏览或搜索查询结果
。
如果没有为该选项指定任何值,
mysql将
检查
PAGER
环境变量
的值
并将寻呼机设置为该值。
寻呼机功能仅在交互模式下有效。
输出分页可以使用
pager
命令
以交互方式启用,
并禁用
nopager
。
该命令采用可选参数;
如果给定,则将寻呼程序设置为该。
如果没有参数,则将寻呼机设置为在命令行上设置的寻呼机,或者
stdout
如果未指定寻呼机。
输出分页仅在Unix中有效,因为它使用的
popen()
功能在Windows上不存在。
对于Windows,
tee
可以使用
该
选项来保存查询输出,尽管
pager
在某些情况下
它不如
浏览输出
那么方便
。
打印当前输入语句而不执行它。
将 mysql 提示 重新配置为 给定的字符串。 可在提示中使用的特殊字符序列将在本节后面介绍。
如果指定
prompt
不带参数
的
命令,
mysql
会将提示重置为默认值
mysql>
。
退出 mysql 。
在输入语句时,重建完成哈希,以使数据库,表和列名称完成。
(请参阅
--auto-rehash
选项
说明
。)
重置连接以清除会话状态。
重置连接具有类似于
mysql_change_user()
或自动重新
连接的效果
,但连接未关闭并重新打开,并且未执行重新身份验证。
请参见
第28.7.7.3节“mysql_change_user()”
)并参见
第28.7.28节“C API自动重新连接控制”
)。
这个例子说明了如何
resetconnection
清除会话状态中维护的值:
MySQL的>SELECT LAST_INSERT_ID(3);
+ ------------------- + | LAST_INSERT_ID(3)| + ------------------- + | 3 | + ------------------- + MySQL的>SELECT LAST_INSERT_ID();
+ ------------------ + | LAST_INSERT_ID()| + ------------------ + | 3 | + ------------------ + MySQL的>resetconnection;
MySQL的>SELECT LAST_INSERT_ID();
+ ------------------ + | LAST_INSERT_ID()| + ------------------ + | 0 | + ------------------ +
source
,
file_name
\.
file_name
读取命名文件并执行其中包含的语句。
在Windows上,您可以将路径名称分隔符指定为
/
或
\\
。
引用字符作为文件名本身的一部分。 为获得最佳效果,名称不应包含空格字符。
提供有关您正在使用的连接和服务器的状态信息。
如果使用
--safe-updates
enabled
运行
,
status
还会打印
影响查询
的
mysql
变量
的值
。
使用默认命令解释程序执行给定命令。
该
system
命令仅适用于Unix。
tee
[
,
file_name
]\T [
file_name
]
通过
--tee
在调用
mysql
时
使用该
选项
,您可以记录语句及其输出。
屏幕上显示的所有数据都会附加到给定文件中。
这对于调试目的也非常有用。
mysql
在每个语句之后将结果刷新到文件,就在它打印下一个提示之前。
Tee功能仅在交互模式下有效。
您可以使用该
tee
命令
以交互方式启用此功能
。
如果没有参数,则使用先前的文件。
tee
可以使用该
notee
命令
禁用
该
文件
。
tee
再次
执行
重新启用日志记录。
使用
db_name
作为默认数据库。
在每个语句后启用警告显示(如果有)。
以下是有关该
pager
命令
的一些提示
:
您可以使用它来写入文件,结果只发送到文件:
MySQL的> pager cat > /tmp/log.txt
您还可以传递要用作寻呼机的程序的任何选项:
MySQL的> pager less -n -i -S
在前面的示例中,请注意该
-S
选项。
您可能会发现它对浏览大量查询结果非常有用。
有时,很难在屏幕上阅读非常宽的结果集。
less
的
-S
选项
可以使结果集更具可读性,因为您可以使用左箭头键和右箭头键水平滚动它。
您还可以
在
less中
以
交互方式
使用
以打开和关闭水平浏览模式。
有关更多信息,请阅读
更少
-S
手册页:
外壳> man less
在
-F
和
-X
选项可以与使用
较少
以使其退出,如果输出一个屏幕上,这是方便的,当没有滚动是必要的上配合:
MySQL的> pager less -n -i -S -F -X
您可以指定非常复杂的寻呼机命令来处理查询输出:
MySQL的>pager cat | tee /dr1/tmp/res.txt \
| tee /dr2/tmp/res2.txt | less -n -i -S
在这个例子中,该命令将发送查询结果以两个文件在两个不同的目录在两个不同的文件系统安装
/dr1
和
/dr2
,但仍显示在屏幕上使用结果
少
。
您还可以组合
tee
和
pager
功能。
有一个
tee
启用和文件
pager
设置为
少
,并且你能够浏览使用结果
少
的程序,仍然有一切附加在文件中的同一时间。
tee
与
pager
命令
一起使用
的Unix
与
mysql
内置
命令
之间的区别在于
即使你没有Unix
tee
tee
,内置也能
tee
正常工作
。
内置
还记录了屏幕上打印的所有内容,而Unix
tee则
使用了
tee
pager
不记得那么多。
此外,
tee
可以在
mysql中以
交互方式打开和关闭文件日志记录
。
当您想要将某些查询记录到文件而不是其他查询时,这非常有用。
该
prompt
命令重新配置默认
mysql>
提示。
用于定义提示的字符串可以包含以下特殊序列。
选项 | 描述 |
---|---|
\C |
当前连接标识符 |
\c |
为您发出的每个语句递增的计数器 |
\D |
完整的当前日期 |
\d |
默认数据库 |
\h |
服务器主机 |
\l |
当前的分隔符 |
\m |
当前时间的分钟数 |
\n |
换行符 |
\O |
本月采用三字母格式(1月,2月,...) |
\o |
当前月份的数字格式 |
\P |
上午下午 |
\p |
当前的TCP / IP端口或套接字文件 |
\R |
当前时间,24小时军事时间(0-23) |
\r |
当前时间,标准12小时制(1-12) |
\S |
分号 |
\s |
当前时间的秒数 |
\t |
制表符 |
\U |
您的完整
帐户名称
|
\u |
您的用户名 |
\v |
服务器版本 |
\w |
本周的当前日期采用三字母格式(周一,周二,......) |
\Y |
当年,四位数 |
\y |
当年,两位数 |
\_ |
空间 |
\ |
一个空格(一个空格跟着反斜杠) |
\' |
单引号 |
\" |
双引号 |
\\ |
字面
\
反斜杠字符
|
\ |
|
您可以通过以下几种方式设置提示:
使用环境变量。
你可以设置
MYSQL_PS1
环境变量设置为提示字符串。
例如:
外壳> export MYSQL_PS1="(\u@\h) [\d]> "
使用命令行选项。
您可以
--prompt
在命令行上将选项
设置
为
mysql
。
例如:
外壳> mysql --prompt="(\u@\h) [\d]> "
(user @ host)[数据库]>
使用选项文件。
您可以
prompt
在
[mysql]
任何MySQL选项文件
的
组中
设置
选项
,例如
主目录中
/etc/my.cnf
的
.my.cnf
文件。
例如:
[MySQL的] 提示=(\\ u @ \\ h)[\\ d]> \\ _
在此示例中,请注意反斜杠加倍。
如果使用
prompt
选项文件中的选项
设置提示
,则建议在使用特殊提示选项时加倍反斜杠。
允许的提示选项集和选项文件中识别的特殊转义序列集存在一些重叠。
(选项文件中转义序列的规则在
第4.2.2.2节“使用选项文件”
中列出
。)如果使用单个反斜杠,重叠可能会导致问题。
例如,
\s
被解释为空格而不是当前的秒值。
以下示例显示如何在选项文件中定义提示以包括
格式
的当前时间
:
hh:mm:ss
>
[MySQL的] prompt =“\\ r:\\ m:\\ s>”
以交互方式设置提示。
您可以使用
prompt
(或
\R
)命令以
交互方式更改提示
。
例如:
MySQL的>prompt (\u@\h) [\d]>\_
PROMPT设置为'(\ u @ \ h)[\ d]> \ _' (user
@host
)[database
]> (user
@host
)[database
]>提示 返回mysql的默认PROMPT> MySQL的>
在 MySQL的 客户端可以做这些类型的日志记录,用于交互式执行的语句:
以下讨论描述了适用于所有日志记录类型的特征,并提供特定于每种日志记录类型的信息。
对于每个启用的日志记录目标,语句日志记录如下:
因此,跨越多行的输入语句可以记录两次。 考虑这个输入:
mysql>SELECT
- >'Today is'
- >,
- >CURDATE()
- >;
在这种情况下,
mysql
记录
“
SELECT
”
,
“
'Today is'
”
,
“
,
”
,
“
CURDATE()
”
和
“
;
“
读它们的行。
它还映射完整语句,映射
SELECT\n'Today
is'\n,\nCURDATE()
到
SELECT 'Today is' ,
CURDATE()
后加上分隔符。
因此,这些行显示在记录输出中:
选择 '今天是' , CURDATE() ; SELECT'Today is',CURDATE();
对于日志记录,
mysql
忽略与
“
ignore
”
列表
中的任何模式匹配的语句
。
默认情况下,模式列表
"*IDENTIFIED*:*PASSWORD*"
用于忽略引用密码的语句。
模式匹配不区分大小写。
在模式中,两个字符是特殊的:
?
匹配任何单个字符。
*
匹配零个或多个字符的任何序列。
要指定其他模式,请使用该
--histignore
选项或设置
MYSQL_HISTIGNORE
环境变量。
(如果同时指定了两者,则选项值优先。)该值应该是一个或多个冒号分隔模式的列表,这些模式将附加到默认模式列表中。
命令行中指定的模式可能需要引用或转义,以防止命令解释程序专门处理它们。
例如,
除了引用密码的语句之外
,要禁止记录
UPDATE
和
DELETE
语句,请调用
mysql,
如下所示:
外壳> mysql --histignore="*UPDATE*:*DELETE*"
该
.mysql_history
文件应该以限制性的接入方式进行保护,因为敏感信息可能会被写入到它,如包含口令的SQL语句的文本。
请参见
第6.1.2.1节“密码安全的最终用户指南”
。
当使用
向上箭头
键来调用历史记录
时,
可以从
mysql
客户端
访问文件中的语句
。
见
禁用交互历史
。
如果您不想维护历史记录文件,请先删除(
.mysql_history
如果存在)。
然后使用以下任一技术来防止再次创建它:
将
MYSQL_HISTFILE
环境变量
设置
为
/dev/null
。
要使此设置在每次登录时生效,请将其放在shell的一个启动文件中。
创建
.mysql_history
作为符号链接
/dev/null
;
这只需要做一次:
外壳> ln -s /dev/null $HOME/.mysql_history
如果
--syslog
给出
了该
选项,
mysql
会将交互式语句写入系统日志记录工具。
消息记录具有以下特征。
记录发生在
“
信息
”
级别。
这对应
于Unix / Linux
功能和
Windows事件日志
的
LOG_INFO
优先级
。
有关日志记录功能的配置,请参阅系统文档。
syslog
syslog
EVENTLOG_INFORMATION_TYPE
邮件大小限制为1024字节。
消息由标识符
MysqlClient
后跟这些值组成:
SYSTEM_USER
操作系统用户名(登录名)或
--
用户未知。
MYSQL_USER
MySQL用户名(使用
--user
选项
指定
)或
--
用户未知。
CONNECTION_ID
:
客户端连接标识符。
这
CONNECTION_ID()
与会话中
的
函数值
相同
。
DB_SERVER
服务器主机或
--
主机未知。
DB
默认数据库或未
--
选择任何数据库。
QUERY
记录的语句的文本。
以下是使用Linux在Linux上生成的输出示例
--syslog
。
此输出的格式是为了便于阅读;
每条记录的消息实际上只占一行。
3月7日12:39:25 myhost MysqlClient [20824]: SYSTEM_USER:'oscar',MYSQL_USER:'my_oscar',CONNECTION_ID:23, DB_SERVER:'127.0.0.1',DB:' - ',QUERY:'USE test;' 3月7日12:39:28 myhost MysqlClient [20824]: SYSTEM_USER:'oscar',MYSQL_USER:'my_oscar',CONNECTION_ID:23, DB_SERVER:'127.0.0.1',DB:'test',QUERY:'SHOW TABLES;'
MySQL的> help search_string
如果为
help
命令
提供参数
,
mysql
将其用作搜索字符串,以从MySQL参考手册的内容访问服务器端帮助。
此命令的正确操作要求
mysql
使用帮助主题信息初始化数据库
中的帮助表
(请参见
第5.1.14节“服务器端帮助支持”
)。
如果搜索字符串不匹配,则搜索失败:
MySQL的> help me
什么都没找到
请尝试运行“帮助内容”以获取所有可访问主题的列表
使用 帮助内容 查看帮助类别列表:
MySQL的> help contents
您询问了有关帮助类别的帮助:“内容”
有关更多信息,请键入“help <item>”,其中<item>是其中之一
以下类别:
帐户管理
管理
数据定义
数据操作
数据类型
功能
用于GROUP BY的函数和修饰符
地理特征
语言结构
插件
存储引擎
存储例程
表维护
交易
触发器
如果搜索字符串与多个项匹配,则 mysql 显示匹配主题的列表:
MySQL的> help logs
存在许多针对您的请求的帮助项目。
要提出更具体的请求,请输入“help <item>”,
其中<item>是以下主题之一:
节目
显示二进制日志
SHOW ENGINE
显示日志
使用主题作为搜索字符串以查看该主题的帮助条目:
MySQL的> help show binary logs
名称:'SHOW BINARY LOGS'
描述:
句法:
显示二进制日志
显示主日志
列出服务器上的二进制日志文件。该声明用作
[purge-binary-logs]中描述的过程的一部分,显示了如何
确定可以清除哪些日志。
mysql> SHOW BINARY LOGS;
+ --------------- + ----------- ----------- + +
| Log_name | File_size | 加密|
+ --------------- + ----------- ----------- + +
| binlog.000015 | 724935 | 是的|
| binlog.000016 | 733481 | 是的|
+ --------------- + ----------- ----------- + +
搜索字符串可以包含通配符
%
和
_
。
这些与操作员执行的模式匹配操作具有相同的含义
LIKE
。
例如,
HELP rep%
返回以以下内容开头的主题列表
rep
:
MySQL的> HELP rep%
存在许多针对您的请求的帮助项目。
要提出更具体的请求,请输入“help <item>”,
其中<item>是以下之一
话题:
修理表
重复功能
重复循环
更换
更换功能
在 MySQL的 客户端通常交互使用,如下所示:
外壳> mysql db_name
但是,也可以将SQL语句放在一个文件中,然后告诉
mysql
从该文件中读取其输入。
为此,请创建一个
text_file
包含要执行的语句
的文本文件
。
然后调用
mysql
,如下所示:
外壳> mysql db_name
< text_file
如果将
语句作为文件中的第
一个
语句
放置
,则无需在命令行上指定数据库名称:
USE
db_name
外壳> mysql < text_file
如果您已经在运行
mysql
,则可以使用
source
命令或
\.
命令
执行SQL脚本文件
:
mysql> mysql>source
file_name
\.
file_name
有时您可能希望脚本向用户显示进度信息。 为此,您可以插入如下语句:
SELECT'<info_to_display>'AS'';
声明显示了输出
<info_to_display>
。
您还可以
使用该
选项
调用
mysql
--verbose
,这会导致每个语句在其生成的结果之前显示。
mysql
忽略输入文件开头的Unicode字节顺序标记(BOM)字符。
以前,它会读取它们并将它们发送到服务器,从而导致语法错误。
BOM的存在不会导致
mysql
更改其默认字符集。
为此,
使用诸如的选项
调用
mysql
--default-character-set=utf8
。
有关批处理模式的更多信息,请参见 第3.5节“在批处理模式下使用mysql” 。
本节提供有关更有效地使用 mysql 和 mysql 操作行为的技术的信息。
mysql 支持输入行编辑,使您可以修改当前输入行或调用以前的输入行。 例如, 左箭头 和 右箭头 键当前输入行内水平移动,而 向上箭头 和 向下箭头 键上下移动通过该组以前输入线。 退格键 删除光标前的字符,键入新字符将在光标位置输入。 要输入该行,请按 Enter键 。
在Windows上,编辑键序列与控制台窗口中的命令编辑支持的相同。
在Unix上,键序列取决于用于构建
mysql
的输入库
(例如,
库
libedit
或
readline
库)。
可在线
获取
libedit
和
readline
库的
文档
。
要更改给定输入库允许的键序列集,请在库启动文件中定义键绑定。
这是您的主目录中的文件:
.editrc
for
libedit
和
.inputrc
for
readline
。
例如,在
libedit
,
控制+ W
删除之前的所有当前光标位置和
控制+ U
删除整个线。
在
readline
,
Control + W
删除光标前的单词,
Control + U
删除当前光标位置之前的所有内容。
如果使用
mysql
构建
libedit
,则优先使用
readline
这两个键
的
行为
的用户
可以在
.editrc
文件中
放入以下行
(如果需要,可以创建文件):
绑定“^ W”ed-delete-prev-word 绑定“^ U”vi-kill-line-prev
要查看当前的键绑定集,请暂时添加仅
bind
在结尾处显示的行
.editrc
。
mysql
会在启动时显示绑定。
使用 向上箭头 键可以调用当前和以前会话的输入行。 在共享控制台的情况下,此行为可能不适合。 mysql 支持部分或完全禁用交互式历史记录,具体取决于主机平台。
在Windows上,历史记录存储在内存中。
Alt + F7
删除存储在当前历史缓冲区的内存中的所有输入行。
它还删除用
F7
显示的输入行前面的序列号列表,
并用
F9
调用(按数字)
。
按
Alt + F7
重新填充当前历史记录缓冲区
后输入的新输入行
。
如果
--syslog
选项用于启动
mysql
,则清除缓冲区不会阻止记录到Windows事件查看器
。
关闭控制台窗口也会清除当前历史记录缓冲区。
要在Unix上禁用交互式历史记录,请首先删除该
.mysql_history
文件(如果存在)(否则将调用先前的条目)。
然后
使用
选项
启动
mysql
--histignore="*"
以忽略所有新输入行。
要重新启用调用(和日志记录)行为,请在
不使用该选项的情况下
重新启动
mysql
。
如果阻止
.mysql_history
创建文件(请参阅
控制历史记录文件
)并使用
--histignore="*"
启动
mysql
客户端,则会完全禁用交互式历史记录撤回工具。
或者,如果省略该
--histignore
选项,则可以调用在当前会话期间输入的输入行。
Windows提供基于UTF-16LE的API,用于读取和写入控制台;
Windows
的
mysql
客户端能够使用这些API。
Windows安装程序在名为的MySQL菜单中创建一个项目
MySQL command line
client - Unicode
。
此项调用
mysql
客户端,其属性设置为使用Unicode通过控制台与MySQL服务器进行通信。
要手动利用此支持,请 在使用兼容Unicode字体的控制台中 运行 mysql ,并将默认字符集设置为支持与服务器通信的Unicode字符集:
打开控制台窗口。
转到控制台窗口属性,选择字体选项卡,然后选择Lucida Console或其他一些兼容的Unicode字体。 这是必要的,因为控制台窗口默认使用不适合Unicode的DOS光栅字体启动。
使用
(或
)选项
执行
mysql.exe
。
此选项是必需的,因为
其中一个字符集不能用作客户端字符集。
请参见
不允许的客户端字符集
。
--default-character-set=utf8
utf8mb4
utf16le
通过这些更改, mysql 将使用Windows API使用UTF-16LE与控制台通信,并使用UTF-8与服务器通信。 (前面提到的菜单项设置了刚刚描述的字体和字符集。)
要在每次运行
mysql
时避免这些步骤
,可以创建一个调用
mysql.exe
的快捷方式
。
快捷方式应将控制台字体设置为Lucida Console或其他一些兼容的Unicode字体,并将
--default-character-set=utf8
(或
utf8mb4
)选项
传递
给
mysql.exe
。
或者,创建仅设置控制台字体的快捷方式,并在
文件
[mysql]
组中
设置字符集
my.ini
:
[MySQL的] 默认字符集= UTF8
垂直显示时,某些查询结果更易读,而不是通常的水平表格式。 通过使用\ G而不是分号终止查询,可以垂直显示查询。 例如,包含换行符的较长文本值通常使用垂直输出更容易阅读:
MySQL的> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1。排******************** *******
msg_nro:3068
日期:2000-03-01 23:29:50
time_zone:+0200
mail_from:蒙蒂
回复:monty@no.spam.com
mail_to:“Thimble Smith”<tim@no.spam.com>
sbj:UTF-8
txt:>>>>>“顶针”== Thimble Smith写道:
顶针>嗨。我认为这是一个好主意。有人熟悉吗?
顶针>使用UTF-8还是Unicode?否则,我会把它放在我的身上
顶针> TODO列表,看看会发生什么。
是的,请这样做。
问候,
蒙蒂
文件:inbox-jani-1
哈希:190402944
1排(0.09秒)
对于初学者来说,一个有用的启动选项是
--safe-updates
(或者
--i-am-a-dummy
具有相同的效果)。
安全更新模式对于您可能已发出
UPDATE
或
DELETE
声明但忘记
WHERE
指示要修改哪些行
的
子句的
情况很有用
。
通常,此类语句会更新或删除表中的所有行。
使用时
--safe-updates
,只能通过指定标识它们的键值或
LIMIT
子句或两者
来修改行
。
这有助于防止事故。
安全更新模式还限制
SELECT
产生(或估计产生)非常大的结果集的语句。
该
--safe-updates
选项使得
MySQL的
执行下面的语句,当它连接到MySQL服务器,设置的会话值
sql_safe_updates
,
sql_select_limit
和
max_join_size
系统变量:
SET sql_safe_updates = 1,sql_select_limit = 1000,max_join_size = 1000000;
该
SET
语句影响语句处理如下:
如果
sql_safe_updates
原因
UPDATE
和
DELETE
语句未在
WHERE
子句中
指定键约束
,或提供
LIMIT
子句或两者
,
则
启用
原因
和
语句以产生错误
。
例如:
UPDATEtbl_name
SETnot_key_column
=val
WHEREkey_column
=val
; UPDATEtbl_name
SETnot_key_column
=val
LIMIT 1;
设置
sql_select_limit
为1,000会导致服务器将所有
SELECT
结果集
限制
为1,000行,除非该语句包含
LIMIT
子句。
如果服务器估计它必须检查超过1,000,000个行组合,则
设置
max_join_size
为1,000,000会导致多表
SELECT
语句产生错误。
要指定不同于1,000和1,000,000的结果集限制,可以
在调用
mysql
时
使用
--select-limit
和
--max-join-size
选项
覆盖默认值
:
mysql --safe-updates --select-limit = 500 --max-join-size = 10000
如果优化器决定不使用键列上的索引,则
即使使用
子句中
指定的键
,也可能
在安全更新模式下生成错误
UPDATE
和
DELETE
语句
WHERE
:
如果内存使用量超过
range_optimizer_max_mem_size
系统变量
允许的范围,则不能使用索引上的范围访问
。
优化器然后回退到表扫描。
请参阅
限制内存使用以进行范围优化
。
如果密钥比较需要类型转换,则可能不使用索引(请参见
第8.3.1节“MySQL如何使用索引”
)。
假设使用索引字符串列
c1
与数值进行比较
WHERE c1 =
2222
。
对于此类比较,将字符串值转换为数字,并以数字方式比较操作数(请参见
第12.2节“表达式评估中的类型转换”
),以防止使用索引。
如果启用了安全更新模式,则会发生错误。
从MySQL 8.0.13开始,安全更新模式还包括以下行为:
EXPLAIN
with
UPDATE
和
DELETE
语句不会产生安全更新错误。
这样可以使用
EXPLAIN
plus
SHOW
WARNINGS
来查看未使用索引的原因,这在
range_optimizer_max_mem_size
发生违规或类型转换以及优化程序不使用索引的
情况下很有用,
即使在
WHERE
子句
中指定了键列也是如此
。
发生安全更新错误时,错误消息包括生成的第一个诊断,以提供有关失败原因的信息。
例如,该消息可能指示
range_optimizer_max_mem_size
超出
了
值或发生了类型转换,其中任何一个都可能妨碍使用索引。
对于多表删除和更新,仅当任何目标表使用表扫描时,才会生成错误并启用安全更新。
如果 mysql 客户端在发送语句时失去与服务器的连接,它会立即自动尝试重新连接一次到服务器并再次发送语句。 但是,即使 mysql 成功重新连接,您的第一个连接也已结束,所有先前的会话对象和设置都将丢失:临时表,自动提交模式以及用户定义和会话变量。 此外,任何当前事务都会回滚。 这种行为对您来说可能是危险的,如下例中服务器在第一个和第二个语句之间关闭并重新启动而您不知道它:
MySQL的>SET @a=1;
查询OK,0行受影响(0.05秒) MySQL的>INSERT INTO t VALUES(@a);
ERROR 2006:MySQL服务器已经消失 没联系。试图重新连接...... 连接ID:1 当前数据库:测试 查询OK,1行受影响(1.30秒) MySQL的>SELECT * FROM t;
+ ------ + | a | + ------ + | NULL | + ------ + 1排(0.05秒)
该
@a
用户变量已经失去了与连接,重新连接后,它是不确定的。
如果
在连接丢失的情况下使
mysql
以错误终止
是很重要的
,那么可以
使用该
选项
启动
mysql
客户端
--skip-reconnect
。
有关重新连接时自动重新连接及其对状态信息的影响的更多信息,请参见 第28.7.28节“C API自动重新连接控制” 。
在 MySQL的 客户端使用在客户端不是由所使用的解析器完整的副本解析器 的mysqld 服务器端服务器。 这可能导致某些构建体的治疗差异。 例子:
"
如果
ANSI_QUOTES
启用
了
SQL模式
,服务器解析器会将由
字符
分隔的
字符串视为标识符,而不是纯字符串
。
在
MySQL的
客户端分析器不把
ANSI_QUOTES
SQL模式考虑在内。
无论是否
启用
,它都会
将由
"
,
'
和
`
字符
分隔的字符串视为
相同
ANSI_QUOTES
。
在
/*! ... */
和
/*+ ...
*/
注释中,
mysql
客户端解析器解释了短格式的
mysql
命令。
服务器解析器不解释它们,因为这些命令在服务器端没有意义。
如果期望的是
MySQL的
不解释注释中短格式命令,一个局部的解决方法是使用
--binary-mode
选项,这导致所有
的MySQL
命令除了被禁用
\C
和
\d
非交互模式(用于输入管道输送到
的mysql
或装载使用
source
命令) 。
mysqladmin 是执行管理操作的客户端。 您可以使用它来检查服务器的配置和当前状态,创建和删除数据库等。
像这样 调用 mysqladmin :
外壳> mysqladmin [options
] command
[command-arg
] [command
[command-arg
]] ...
mysqladmin 支持以下命令。 某些命令在命令名后面加一个参数。
创建一个名为的新数据库
db_name
。
告诉服务器将调试信息写入错误日志。
已连接的用户必须具有该
SUPER
权限。
此信息的格式和内容可能会有所变化。
这包括有关事件调度程序的信息。 请参见 第24.4.5节“事件调度程序状态” 。
删除名为database的数据库
db_name
及其所有表。
显示服务器状态变量及其值。
刷新主机缓存中的所有信息。 请参见 第8.12.4.2节“DNS查找优化和主机缓存” 。
刷新所有日志。
所述
中mysqladmin冲洗日志
命令允许给予任选的日志类型,以指定哪些日志冲洗。
继
flush-logs
命令,你可以提供一个或多个以下的日志类型的空格分隔的列表:
binary
,
engine
,
error
,
general
,
relay
,
slow
。
这些对应于可以为
FLUSH
LOGS
SQL语句
指定的日志类型
。
重新加载授权表(与之相同
reload
)。
清除状态变量。
冲洗所有表格。
刷新线程缓存。
杀死服务器线程。 如果给出了多个线程ID值,则列表中必须没有空格。
要终止属于其他用户的线程,连接的用户必须具有
CONNECTION_ADMIN
或
SUPER
权限。
设置新密码。
这会将密码更改
new_password
为与
mysqladmin一起
用于连接服务器
的帐户
。
因此,下次
使用同一帐户
调用
mysqladmin
(或任何其他客户端程序)时,您需要指定新密码。
使用 mysqladmin 设置密码 应该被认为是 不安全的 。 在某些系统上,您的密码对系统状态程序(例如 ps) 可见 ,其他用户可以调用它来显示命令行。 MySQL客户端通常在初始化序列期间用零覆盖命令行密码参数。 但是,仍然存在一个短暂的间隔,在该间隔期间值是可见的。 此外,在某些系统上,此覆盖策略无效,并且 ps 仍然可以看到密码 。 (SystemV Unix系统和其他人可能遇到这个问题。)
如果
new_password
值包含空格或您的命令解释程序特有的其他字符,则需要将其括在引号内。
在Windows上,请务必使用双引号而不是单引号;
单引号不会从密码中删除,而是被解释为密码的一部分。
例如:
外壳> mysqladmin password "my new password"
password
命令后
可以省略新密码
。
在这种情况下,
mysqladmin
会提示输入密码值,这样可以避免在命令行上指定密码。
只有
password
在
mysqladmin
命令行
上的最终命令时,
才应省略密码值
。
否则,将下一个参数作为密码。
如果使用该
--skip-grant-tables
选项
启动服务器,请不要使用此命令
。
不会应用密码更改。
即使您在
命令行
之前
password
使用
flush-privileges
相同的命令行重新启用授权表,也是如此,因为在连接之后会发生刷新操作。
但是,您可以使用
mysqladmin flush-privileges
重新启用授权表,然后使用单独的
mysqladmin password
命令更改密码。
检查服务器是否可用。
如果服务器正在运行,则
mysqladmin
的返回状态
为0,否则为1。
即使出现错误,这也是0
Access denied
,因为这意味着服务器正在运行但拒绝连接,这与服务器未运行不同。
显示活动服务器线程列表。
这就像
SHOW
PROCESSLIST
声明
的输出
。
如果
--verbose
给出
了
选项,则输出类似于
SHOW FULL
PROCESSLIST
。
(参见
第13.7.6.29节“SHOW PROCESSLIST语法”
。)
重新加载授权表。
刷新所有表并关闭和打开日志文件。
停止服务器。
在从属服务器上启动复制。
显示简短的服务器状态消息。
停止从服务器上的复制。
显示服务器系统变量及其值。
显示服务器的版本信息。
所有命令都可以缩短为任何唯一的前缀。 例如:
外壳> mysqladmin proc stat
+ ---- + ------- + ----------- + ---- + --------- + ------ + - ----- + ------------------ +
| Id | 用户| 主持人| db | 命令| 时间| 国家| 信息|
+ ---- + ------- + ----------- + ---- + --------- + ------ + - ----- + ------------------ +
| 51 | 蒙蒂| localhost | | 查询| 0 | | show processlist |
+ ---- + ------- + ----------- + ---- + --------- + ------ + - ----- + ------------------ +
正常运行时间:1473624主题:1个问题:39487
慢查询:0打开:541刷新表:1
打开表:每秒19个查询平均值:0.0268
的 mysqladmin status时 命令的结果显示以下值:
MySQL服务器运行的秒数。
活动线程数(客户端)。
自服务器启动以来客户端的问题(查询)数。
超过
long_query_time
秒数
的查询数
。
请参见
第5.4.5节“慢查询日志”
。
服务器已打开的表数。
的数目
flush-*
,
refresh
以及
reload
命令在服务器已经执行。
当前打开的表的数量。
如果 在使用Unix套接字文件连接到本地服务器时 执行 mysqladmin shutdown , mysqladmin将 等待,直到服务器的进程ID文件被删除,以确保服务器已正确停止。
中mysqladmin
支持下面的选项,可以在命令行或在指定
[mysqladmin]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.9 mysqladmin选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--connect_timeout | 连接超时前的秒数 | ||
- 计数 | 重复执行命令的迭代次数 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
- 力 | 即使发生SQL错误也继续 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--no哔 | 发生错误时不要发出蜂鸣声 | ||
--no-默认 | 不读选项文件 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
--relative | 与--sleep选项一起使用时,显示当前值和先前值之间的差异 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
--show-警告 | 语句执行后显示警告 | ||
--shutdown_timeout | 等待服务器关闭的最大秒数 | ||
- 无声 | 静音模式 | ||
- 睡觉 | 重复执行命令,在两者之间休眠延迟秒 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 | ||
- 垂直 | 垂直打印查询输出行(每列值一行) | ||
- 等待 | 如果无法建立连接,请等待并重试,而不是中止 |
--help
,
-?
显示帮助消息并退出。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
--count=
,
N
-c
N
如果
--sleep
给出选项,则
重复执行命令所需的迭代次数
。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/mysqladmin.trace
程序退出时打印一些调试信息。
程序退出时打印调试信息,内存和CPU使用情况统计信息。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqladmin
通常会读取
[client]
和
[mysqladmin]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
mysqladmin
也会读取
[client_other]
和
[mysqladmin_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
--force
,
-f
不要求确认
命令。
使用多个命令,即使发生错误也会继续。
drop
db_name
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--no-beep
,
-b
抑制默认情况下发出的警告蜂鸣声,例如连接服务器失败等错误。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqladmin
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqladmin
找不到,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--relative
,
-r
与
--sleep
选项一起
使用时显示当前值和先前值之间的差异
。
此选项仅适用于该
extended-status
命令。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--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密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。
--version
,
-V
显示版本信息并退出。
--vertical
,
-E
垂直打印输出。
这类似于
--relative
,但垂直打印输出。
--wait[=
,
count
]-w[
count
]
如果无法建立连接,请等待并重试,而不是中止。
如果
count
给出
了
值,则表示重试的次数。
默认是一次。
您还可以使用设置以下变量
。
--
var_name
=value
所述 mysqlcheck的 客户端执行表维护:它检查,修理,优化,或分析表。
每个表都被锁定,因此在处理时对其他会话不可用,但是对于检查操作,该表仅使用锁定
READ
锁定(
有关
和的
更多信息,
请参见
第13.3.6节“LOCK TABLES和UNLOCK TABLES语法”
)。
锁)。
表维护操作可能非常耗时,特别是对于大型表。
如果使用
or
选项处理一个或多个数据库中的所有表,则调用
mysqlcheck
READ
WRITE
--databases
--all-databases
可能需要很长时间。
(如果MySQL升级过程确定需要进行表检查,因为它以相同的方式处理表,这也是如此。)
mysqld 服务器运行 时必须使用 mysqlcheck ,这意味着您不必停止服务器来执行表维护。
mysqlcheck的
使用SQL语句
CHECK TABLE
,
REPAIR
TABLE
,
ANALYZE
TABLE
,并
OPTIMIZE
TABLE
在用户的便捷方式。
它确定要用于要执行的操作的语句,然后将语句发送到要执行的服务器。
有关每个语句使用哪些存储引擎的详细信息,请参见
第13.7.3节“表维护语句”中
有关这些语句的说明
。
所有存储引擎不一定支持所有四个维护操作。
在这种情况下,会显示错误消息。
例如,如果
test.t
是
MEMORY
表,则尝试检查它会产生以下结果:
外壳> mysqlcheck test t
test.t
注意:表的存储引擎不支持检查
如果
mysqlcheck
无法修复表,请参见
第2.11.13节“重建或修复表或索引”
以获取手动表修复策略。
例如,对于
InnoDB
可以检查
CHECK TABLE
但不能修复的
表格就是这种情况
REPAIR
TABLE
。
最好在执行表修复操作之前备份表; 在某些情况下,操作可能会导致数据丢失。 可能的原因包括但不限于文件系统错误。
调用 mysqlcheck 有三种 常用方法 :
shell> shell> shell>mysqlcheck [
options
]db_name
[tbl_name
...]mysqlcheck [
options
] --databasesdb_name
...mysqlcheck [
options
] --all-databases
如果您未在下面命名任何表,
db_name
或者如果您使用
--databases
或
--all-databases
选项,则会检查整个数据库。
与其他客户端程序相比,
mysqlcheck
具有特殊功能。
--check
可以通过重命名二进制来更改
检查表(
)
的默认行为
。
如果你想有一个工具,修复表默认情况下,你应该做的副本
mysqlcheck的
命名
mysqlrepair,可
,或者做一个符号链接
mysqlcheck的
命名
mysqlrepair,可
。
如果你调用
mysqlrepair
,它会修复表。
下表中显示的名称可用于更改 mysqlcheck的 默认行为。
命令 | 含义 |
---|---|
mysqlrepair,可 |
默认选项是
--repair
|
mysqlanalyze |
默认选项是
--analyze
|
mysqloptimize |
默认选项是
--optimize
|
mysqlcheck的
支持下面的选项,可以在命令行或在指定
[mysqlcheck]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.10 mysqlcheck选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
- 全数据库 | 检查所有数据库中的所有表 | ||
--all合1 | 为每个数据库执行一个语句,该数据库命名该数据库中的所有表 | ||
- 分析 | 分析表格 | ||
- 自动修理 | 如果已检查的表已损坏,请自动修复它 | ||
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
--character集-DIR | 安装字符集的目录 | ||
- 校验 | 检查表是否有错误 | ||
--check-唯一改变的 | 仅检查自上次检查后已更改的表 | ||
--check升级 | 使用FOR UPGRADE选项调用CHECK TABLE | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--databases | 将所有参数解释为数据库名称 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
--extended | 检查并修理桌子 | ||
- 快速 | 仅检查未正确关闭的表 | ||
- 力 | 即使发生SQL错误也继续 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--medium检查 | 执行比 - 扩展操作更快的检查 | ||
--no-默认 | 不读选项文件 | ||
--optimize | 优化表格 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
- 快 | 最快的检查方法 | ||
- 修理 | 执行修复,几乎可以修复除非唯一的唯一键之外的任何内容 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
- 无声 | 静音模式 | ||
--skip-数据库 | 从执行的操作中省略此数据库 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--tables | 覆盖--databases或-B选项 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
--use-FRM | 对于MyISAM表的修复操作 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 | ||
--write,二进制日志 | 将ANALYZE,OPTIMIZE,REPAIR语句记录到二进制日志中。 --skip-write-binlog将NO_WRITE_TO_BINLOG添加到这些语句中。 |
--help
,
-?
显示帮助消息并退出。
--all-databases
,
-A
检查所有数据库中的所有表。
这与使用该
--databases
选项并在命令行上命名所有数据库相同,
只是未检查
INFORMATION_SCHEMA
和
performance_schema
数据库。
可以通过使用
--databases
选项
明确命名它们来检查它们
。
--all-in-1
,
-1
不是为每个表发出语句,而是为每个数据库执行一个语句,该语句命名要处理的数据库中的所有表。
--analyze
,
-a
分析表格。
如果已检查的表已损坏,请自动修复它。 检查完所有表格后,进行必要的修理。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--check
,
-c
检查表是否有错误。 这是默认操作。
--check-only-changed
,
-C
仅检查自上次检查后已更改的表或尚未正确关闭的表。
--check-upgrade
,
-g
调用
CHECK
TABLE
与
FOR UPGRADE
检查表的不兼容问题与服务器的当前版本的选项。
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
--databases
,
-B
处理指定数据库中的所有表。 通常, mysqlcheck 将命令行上的第一个名称参数视为数据库名称,将以下任何名称视为表名称。 使用此选项,它将所有名称参数视为数据库名称。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o
程序退出时打印一些调试信息。
程序退出时打印调试信息,内存和CPU使用情况统计信息。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqlcheck
通常会读取
[client]
和
[mysqlcheck]
组。
如果
--defaults-group-suffix=_other
给出
了该
选项,
mysqlcheck
也会读取
[client_other]
和
[mysqlcheck_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--extended
,
-e
如果您使用此选项来检查表格,则可确保它们100%一致但需要很长时间。
如果您使用此选项来修复表,它会运行扩展修复,这可能不仅需要很长时间才能执行,但也可能产生大量垃圾行!
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
--fast
,
-F
仅检查未正确关闭的表。
--force
,
-f
即使发生SQL错误也继续。
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--medium-check
,
-m
执行比
--extended
操作
更快的检查
。
这只发现99.99%的错误,在大多数情况下应该足够好。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--optimize
,
-o
优化表格。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqlcheck
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqlcheck
找不到,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--quick
,
-q
如果使用此选项检查表,则会阻止检查扫描行以检查错误链接。 这是最快的检查方法。
如果您使用此选项来修复表,它会尝试仅修复索引树。 这是最快的修复方法。
--repair
,
-r
执行修复,几乎可以修复除非唯一的唯一键之外的任何内容。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
--silent
,
-s
静音模式。 仅打印错误消息。
不要在 mysqlcheck 执行的操作中包含指定的数据库(区分大小写) 。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
覆盖
--databases
或
-B
选项。
选项后面的所有名称参数都被视为表名。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
对于
MyISAM
表的
修复操作
,从数据字典中获取表结构,以便即使
.MYI
标头已损坏
也可以修复表
。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
--verbose
,
-v
详细模式。 打印有关程序操作各个阶段的信息。
--version
,
-V
显示版本信息并退出。
此选项是默认启用的,这样
ANALYZE
TABLE
,
OPTIMIZE
TABLE
和
REPAIR
TABLE
所产生的报表
mysqlcheck的
被写入二进制日志。
使用
--skip-write-binlog
导致
NO_WRITE_TO_BINLOG
被添加到让他们没有记录的语句。
--skip-write-binlog
当使用二进制日志从备份恢复时,
请使用
何时不应将这些语句发送到复制从站或运行。
所述 的mysqldump 客户实用程序执行 逻辑备份 ,产生一组能够被执行以再现原始数据库对象定义和表数据的SQL语句。 它转储一个或多个MySQL数据库以备份或传输到另一个SQL服务器。 所述 的mysqldump 命令也可以生成CSV输出,其他分隔符的文本或XML格式。
mysqldump
至少需要
SELECT
转储表
的
特权,
SHOW VIEW
转储视图,
TRIGGER
转储触发器以及
未使用
LOCK TABLES
该
--single-transaction
选项
的
特权
。
某些选项可能需要其他权限,如选项说明中所述。
要重新加载转储文件,您必须具有执行其包含的语句所需的权限,例如
CREATE
这些语句创建的对象
的相应
权限。
mysqldump
输出可以包含
ALTER
DATABASE
更改数据库排序规则的语句。
这些可以在转储存储的程序以保留其字符编码时使用。
要重新加载包含此类语句的转储文件,
ALTER
需要具有受影响数据库
的
权限。
在Windows上使用PowerShell进行转储并使用输出重定向创建一个具有UTF-16编码的文件:
外壳> mysqldump [options] > dump.sql
但是,不允许UTF-16作为连接字符集(请参阅
不允许的客户端字符集
),因此转储文件将无法正确加载。
要解决此问题,请使用
--result-file
以ASCII格式创建输出
的
选项:
外壳> mysqldump [options] --result-file=dump.sql
mysqldump
优点包括在恢复之前查看甚至编辑输出的便利性和灵活性。
您可以克隆数据库以进行开发和DBA工作,或者生成现有数据库的轻微变体以进行测试。
它不是用于备份大量数据的快速或可扩展的解决方案。
对于大数据大小,即使备份步骤花费了合理的时间,恢复数据也会非常慢,因为重放SQL语句涉及用于插入,索引创建等的磁盘I / O.
对于大规模备份和还原, 物理 备份更合适,以原始格式复制数据文件,可以快速恢复:
如果你的表是主要
InnoDB
的表,或者如果你有一个混合
InnoDB
和
MyISAM
表,可以考虑使用
mysqlbackup
MySQL企业备份产品的命令。
(作为企业订阅的一部分提供。)它
InnoDB
以最小的中断
为
备份
提供最佳性能
;
它还可以备份来自
MyISAM
其他存储引擎的
表格
;
它提供了许多方便的选项,以适应不同的备份方案。
请参见
第30.2节“MySQL企业备份概述”
。
mysqldump
可以逐行检索和转储表内容,或者它可以从表中检索整个内容并在转储之前将其缓冲在内存中。
如果要转储大型表,则在内存中缓冲可能会出现问题。
要逐行转储表,请使用
--quick
选项(或
--opt
启用
--quick
)。
的
--opt
选项(因此
--quick
)是默认启用,因此,以使存储器缓冲,使用
--skip-quick
。
如果您使用最新版本的
mysqldump
生成要重新加载到非常旧的MySQL服务器的转储,请使用该
--skip-opt
选项而不是
--opt
或
--extended-insert
选项。
有关 mysqldump的 其他信息 ,请参见 第7.4节“使用mysqldump进行备份” 。
通常有三种方法可以使用 mysqldump -in order来转储一组一个或多个表,一组一个或多个完整的数据库,或整个MySQL服务器 - 如下所示:
shell> shell> shell>mysqldump [
options
]db_name
[tbl_name
...]mysqldump [
options
] --databasesdb_name
...mysqldump [
options
] --all-databases
要转储整个数据库,请不要在下面命名任何表
db_name
,或使用
--databases
或
--all-databases
选项。
要查看 mysqldump 支持 的选项列表 ,请发出命令 mysqldump --help 。
的mysqldump
支持下面的选项,可以在命令行或在指定
[mysqldump]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.11 mysqldump选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--add降数据库 | 在每个CREATE DATABASE语句之前添加DROP DATABASE语句 | ||
--add-drop-table在 | 在每个CREATE TABLE语句之前添加DROP TABLE语句 | ||
--add跌落触发 | 在每个CREATE TRIGGER语句之前添加DROP TRIGGER语句 | ||
--add锁 | 使用LOCK TABLES和UNLOCK TABLES语句环绕每个表转储 | ||
- 全数据库 | 转储所有数据库中的所有表 | ||
--allow-关键字 | 允许创建作为关键字的列名 | ||
--apply - 从语句 | 在CHANGE MASTER语句之前包括STOP SLAVE,在输出结束时包括START SLAVE | ||
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
--character集-DIR | 安装字符集的目录 | ||
--column统计 | 编写ANALYZE TABLE语句以生成统计直方图 | 8.0.2 | |
- 评论 | 添加注释到转储文件 | ||
- 紧凑 | 产生更紧凑的输出 | ||
- 兼容 | 生成与其他数据库系统或旧MySQL服务器更兼容的输出 | ||
--complete-插入 | 使用包含列名的完整INSERT语句 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--create选项 | 在CREATE TABLE语句中包含所有特定于MySQL的表选项 | ||
--databases | 将所有名称参数解释为数据库名称 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
--delete-主日志 | 在主复制服务器上,执行转储操作后删除二进制日志 | ||
- 禁用键 | 对于每个表,使用语句环绕INSERT语句以禁用和启用键 | ||
自卸日期 | 如果给出了--comments,则将转储日期包括为“转储已完成”评论 | ||
自卸奴隶 | 包含CHANGE MASTER语句,列出slave的master的二进制日志坐标 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
--events | 转储转储数据库中的事件 | ||
--extended-插入 | 使用多行INSERT语法 | ||
--fields封闭逐 | 此选项与--tab选项一起使用,其含义与LOAD DATA的相应子句相同 | ||
--fields转义,由 | 此选项与--tab选项一起使用,其含义与LOAD DATA的相应子句相同 | ||
--fields-任选封闭逐 | 此选项与--tab选项一起使用,其含义与LOAD DATA的相应子句相同 | ||
--fields封端逐 | 此选项与--tab选项一起使用,其含义与LOAD DATA的相应子句相同 | ||
--flush-日志 | 在开始转储之前刷新MySQL服务器日志文件 | ||
--flush-特权 | 转储mysql数据库后发出FLUSH PRIVILEGES语句 | ||
- 力 | 即使在表转储期间发生SQL错误,也要继续 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
--hex二进制大对象 | 使用十六进制表示法转储二进制列 | ||
- 主办 | 要连接的主机(IP地址或主机名) | ||
- 忽略错误 | 忽略指定的错误 | ||
- 忽略表 | 不要转储给定的表 | ||
--include主主机端口 | 在使用--dump-slave生成的CHANGE MASTER语句中包含MASTER_HOST / MASTER_PORT选项 | ||
--insert,忽视 | 编写INSERT IGNORE而不是INSERT语句 | ||
--lines封端逐 | 此选项与--tab选项一起使用,其含义与LOAD DATA的相应子句相同 | ||
--lock-全表 | 锁定所有数据库中的所有表 | ||
--lock桌 | 在转储它们之前锁定所有表 | ||
--log错误 | 将警告和错误附加到命名文件 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
- 主要的数据 | 将二进制日志文件名和位置写入输出 | ||
--max允许的分组 | 发送到服务器或从服务器接收的最大数据包长度 | ||
--net缓冲长度 | TCP / IP和套接字通信的缓冲区大小 | ||
--network超时 | 增加网络超时以允许更大的表转储 | 8.0.1 | |
--no-自动提交 | 在SET autocommit = 0和COMMIT语句中包含每个转储表的INSERT语句 | ||
--no创建-DB | 不要编写CREATE DATABASE语句 | ||
--no创建-信息 | 不要编写重新创建每个转储表的CREATE TABLE语句 | ||
- 没有数据 | 不要转储表内容 | ||
--no-默认 | 不读选项文件 | ||
--no-设置名称 | 与--skip-set-charset相同 | ||
--no-表空间 | 不要在输出中编写任何CREATE LOGFILE GROUP或CREATE TABLESPACE语句 | ||
- 选择 | -add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset的简写。 | ||
--order逐主 | 转储按主键或第一个唯一索引排序的每个表的行 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
- 快 | 一次从服务器一行检索表的行 | ||
--quote-名 | 在反引号字符中引用标识符 | ||
- 更换 | 编写REPLACE语句而不是INSERT语句 | ||
- 结果文件 | 直接输出到给定文件 | ||
--routines | 从转储的数据库转储存储的例程(过程和函数) | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--set-字符集 | 将SET NAMES default_character_set添加到输出 | ||
--set-GTID,清除 | 是否将SET @@ GLOBAL.GTID_PURGED添加到输出中 | ||
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
--single事务 | 在从服务器转储数据之前发出BEGIN SQL语句 | ||
--skip-分插表 | 不要在每个CREATE TABLE语句之前添加DROP TABLE语句 | ||
--skip-添加锁 | 不要添加锁 | ||
--skip-评论 | 不要向转储文件添加注释 | ||
--skip-紧凑 | 不要产生更紧凑的输出 | ||
--skip-禁用密钥 | 不要禁用密钥 | ||
--skip扩展嵌 | 关闭扩展插入 | ||
--skip-OPT | 关闭--opt设置的选项 | ||
--skip-快 | 不要一次从服务器一行检索表的行 | ||
--skip-引号名 | 不要引用标识符 | ||
--skip-设置字符集 | 不要写SET NAMES语句 | ||
--skip-触发器 | 不要转储触发器 | ||
--skip-TZ-UTC | 关掉tz-utc | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
- 标签 | 生成制表符分隔的数据文件 | ||
--tables | 覆盖 - 数据库或-B选项 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
--triggers | 转储每个转储表的触发器 | ||
--tz-UTC | 将SET TIME_ZONE ='+ 00:00'添加到转储文件 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 | ||
- 哪里 | 仅转储由给定WHERE条件选择的行 | ||
--xml | 生成XML输出 |
该 mysqldump的 命令登录到一个MySQL服务器提取信息。 以下选项指定如何在同一台计算机或远程系统上连接MySQL服务器。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
从给定主机上的MySQL服务器转储数据。
默认主机是
localhost
。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqldump
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqldump
找不到它,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
用于连接的TCP / IP端口号。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
这些选项用于控制要读取的选项文件。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqldump
通常读取
[client]
和
[mysqldump]
组。
如果
--defaults-group-suffix=_other
给出
了该
选项,
mysqldump
也会读取
[client_other]
和
[mysqldump_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
mysqldump的 使用场景 包括设置一个完整的新MySQL实例(包括数据库表),并用现有的数据库和表替换现有实例中的数据。 通过对转储文件中的各种DDL语句进行编码,可以使用以下选项指定在还原转储时要拆除和设置的内容。
DROP DATABASE
在每个
CREATE
DATABASE
陈述
之前
写一个
陈述。
此选项通常与
--all-databases
or
--databases
选项
一起使用,
因为
CREATE
DATABASE
除非指定了其中一个选项,否则
不会
写入
任何
语句。
DROP TABLE
在每个
CREATE
TABLE
陈述
之前
写一个
陈述。
DROP TRIGGER
在每个
CREATE
TRIGGER
陈述
之前
写一个
陈述。
向表转储添加创建表使用的任何表空间所需的所有SQL语句
NDB
。
此信息不包含在
mysqldump
的输出中
。
此选项目前仅与NDB Cluster表相关。
CREATE DATABASE
如果
给出
--databases
或
--all-databases
选项
,则
禁止
输出中包含
的
语句
。
不要编写
CREATE
TABLE
创建每个转储表的语句。
该选项并
不能
排除语句创建从日志文件组或者表
mysqldump的
输出;
但是,您可以使用此
--no-tablespaces
选项。
此选项禁止
mysqldump
输出中的
所有
CREATE
LOGFILE GROUP
和
CREATE
TABLESPACE
语句
。
以下选项打印调试信息,在转储文件中编码调试信息,或者让转储操作继续进行,而不管潜在的问题。
允许创建作为关键字的列名。 这通过在每个列名前加上表名来实现。
在转储文件中写入其他信息,例如程序版本,服务器版本和主机。
默认情况下启用此选项。
要禁止此附加信息,请使用
--skip-comments
。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认值为
。
d:t:o,
file_name
d:t:o,/tmp/mysqldump.trace
程序退出时打印一些调试信息。
程序退出时打印调试信息,内存和CPU使用情况统计信息。
如果
--comments
给出
了该
选项,
mysqldump
会在以下表单的转储结束时生成注释:
- 完成转储 DATE
但是,日期会导致在不同时间拍摄的转储文件看起来不同,即使数据在其他方面相同也是如此。
--dump-date
并
--skip-dump-date
控制是否将日期添加到评论中。
默认值为
--dump-date
(包括注释中的日期)。
--skip-dump-date
抑制日期打印。
忽略所有错误; 即使在表转储期间发生SQL错误,也会继续。
此选项的一个用途是使
mysqldump
继续执行,即使它遇到一个已变为无效的视图,因为该定义引用了已删除的表。
没有
--force
,
mysqldump
退出并显示错误消息。
使用时
--force
,
mysqldump会
输出错误消息,但它也会将包含视图定义的SQL注释写入转储输出并继续执行。
如果
--ignore-error
还提供了忽略特定错误
的
选项,
--force
则优先。
通过将警告和错误附加到指定文件来记录警告和错误。 默认是不进行日志记录。
请参阅该
--comments
选项
的说明
。
详细模式。 打印有关程序功能的更多信息。
以下选项显示有关 mysqldump 命令本身的信息。
以下选项更改 mysqldump 命令 如何 使用国家语言设置表示字符数据。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
如果未指定字符集,则
mysqldump
使用
utf8
。
关闭
--set-charset
设置,与指定相同
--skip-set-charset
。
写入
输出。
默认情况下启用此选项。
要取消
声明,请使用
。
SET
NAMES
default_character_set
SET NAMES
--skip-set-charset
所述 的mysqldump 命令经常被用来创建一个空的情况下,或包括数据的实例中,在复制结构的从服务器上。 以下选项适用于在复制主服务器和从属服务器上转储和还原数据。
对于产生的奴隶转储
--dump-slave
选项,添加
STOP
SLAVE
了之前声明
CHANGE
MASTER TO
语句和一个
START
SLAVE
在输出结束发言。
在主复制服务器上,通过
PURGE BINARY LOGS
在执行转储操作后向服务器
发送
语句来
删除二进制日志
。
此选项自动启用
--master-data
。
此选项类似于
--master-data
除了它用于转储复制从属服务器以生成转储文件,该转储文件可用于将另一个服务器设置为与转储服务器具有相同主服务器的从属服务器。
它会导致转储输出包含一个
CHANGE
MASTER TO
语句,
该
语句指示转储的从属主服务器的二进制日志坐标(文件名和位置)。
该
CHANGE
MASTER TO
语句读取的值
Relay_Master_Log_File
,并
Exec_Master_Log_Pos
从
SHOW SLAVE STATUS
输出,并使用他们
MASTER_LOG_FILE
和
MASTER_LOG_POS
分别。
这些是从服务器开始复制的主服务器坐标。
来自中继日志的事务序列中已执行的不一致可能导致使用错误的位置。 有关 更多信息 , 请参见 第17.4.1.33节“复制和事务不一致” 。
--dump-slave
导致使用master的坐标而不是dumped服务器的坐标,就像
--master-data
选项
所做的那样
。
此外,指定此选项会导致
--master-data
选项被覆盖(如果使用)并被有效忽略。
不应该使用这个选项,如果要应用的用途,其中转储会在服务器
gtid_mode=ON
和
MASTER_AUTOPOSITION=1
。
选项值的处理方式与
--master-data
(设置无值或1表示将
CHANGE MASTER TO
语句写入转储,设置2导致语句写入但包含在SQL注释中)的处理方式相同,并且与
--master-data
启用方法
具有相同的效果
或禁用其他选项以及如何处理锁定。
此选项导致 mysqldump 在转储之前停止从属SQL线程并在之后再次重新启动它。
与此同时
--dump-slave
,
也可以使用
--apply-slave-statements
和
--include-master-host-port
选项。
对于
CHANGE
MASTER TO
使用该
--dump-slave
选项
生成的从属转储中
的
语句
,添加
MASTER_HOST
和
MASTER_PORT
选择主服务器名称和从服务器主服务器的TCP / IP端口号。
使用此选项可转储主复制服务器以生成转储文件,该转储文件可用于将另一台服务器设置为主服务器的从属服务器。
它会导致转储输出包含一个
CHANGE
MASTER TO
语句,
该
语句指示转储服务器的二进制日志坐标(文件名和位置)。
这些是主服务器坐标,从属服务器应在将转储文件加载到从属服务器后开始复制。
如果选项值为2,则该
CHANGE
MASTER TO
语句将写为SQL注释,因此仅提供信息;
重新加载转储文件时没有任何效果。
如果选项值为1,则该语句不会写为注释,并在重新加载转储文件时生效。
如果未指定选项值,则默认值为1。
此选项需要
RELOAD
特权,并且必须启用二进制日志。
该
--master-data
选项自动关闭
--lock-tables
。
它也会打开
--lock-all-tables
,除非
--single-transaction
另外指定,在这种情况下,只在转储开始时的短时间内获取全局读锁(请参阅说明
--single-transaction
)。
在所有情况下,对日志的任何操作都在转储的确切时刻发生。
也可以通过使用
--dump-slave
选项
转储主服务器的现有从服务器来设置从服务器,如果使用这两个
选项,该选项将覆盖
--master-data
并使其被忽略。
此选项通过指示是否向
SET
@@GLOBAL.gtid_purged
输出
添加
语句来
启用对写入转储文件的全局事务ID(GTID)信息的控制
。
此选项还可能导致将语句写入输出,以在重新加载转储文件时禁用二进制日志记录。
下表显示了允许的选项值。
默认值为
AUTO
。
值 | 含义 |
---|---|
OFF |
不
SET
向输出
添加
语句。
|
ON |
SET
在输出中
添加
语句。
如果服务器上未启用GTID,则会发生错误。
|
AUTO |
SET
如果在服务器上启用了GTID,则向输出
添加
语句。
|
来自使用基于GTID的复制的服务器的部分转储需要
--set-gtid-purged={ON|OFF}
指定选项。
使用
ON
如果目的是部署只使用了一些来自倾倒服务器的数据的新的复制奴隶。
OFF
如果要通过在拓扑中复制表来修复表,
请使用
此选项。
使用
OFF
如果意图是复制不相交的,今后仍将如此复制拓扑之间的表。
--set-gtid-purged
重新加载转储文件时,
该
选项对二进制日志记录具有以下影响:
--set-gtid-purged=OFF
:
SET
@@SESSION.SQL_LOG_BIN=0;
未添加到输出中。
--set-gtid-purged=ON
:
SET
@@SESSION.SQL_LOG_BIN=0;
添加到输出中。
--set-gtid-purged=AUTO
SET
@@SESSION.SQL_LOG_BIN=0;
如果在要备份的服务器上启用了GTID(即,如果
AUTO
计算结果为
ON
)
,则会
将
:
添加到输出中
。
gtid_mode=ON
如果转储文件包含系统表,
则不建议在服务器(
)
上启用GTID时加载转储文件
。
mysqldump
为使用非事务性MyISAM存储引擎的系统表发出DML指令,并且在启用GTID时不允许这种组合。
另请注意,将启用了GTID的服务器中的转储文件加载到启用了GTID的其他服务器中会导致生成不同的事务标识符。
以下选项指定如何在转储文件中表示整个转储文件或某些类型的数据。 它们还控制是否将某些可选信息写入转储文件。
产生更紧凑的输出。
该选项允许
--skip-add-drop-table
,
--skip-add-locks
,
--skip-comments
,
--skip-disable-keys
,和
--skip-set-charset
选项。
生成与其他数据库系统或旧MySQL服务器更兼容的输出。
此选项唯一允许的值,
ansi
与用于设置服务器SQL模式的相应选项具有相同的含义。
请参见
第5.1.11节“服务器SQL模式”
。
使用
INSERT
包含列名称的
完整
语句。
在
CREATE
TABLE
语句中
包含所有特定于MySQL的表选项
。
--fields-terminated-by=...
,
--fields-enclosed-by=...
,
--fields-optionally-enclosed-by=...
,
--fields-escaped-by=...
这些选项与选项一起使用,其
--tab
含义与相应的
FIELDS
子句
相同
LOAD
DATA
。
请参见
第13.2.7节“LOAD DATA语法”
。
使用十六进制表示法转储二进制列(例如,
'abc'
变为
0x616263
)。
受影响的数据类型
BINARY
,
VARBINARY
的
BLOB
类型和
BIT
。
此选项与选项一起使用,其
--tab
含义与相应的
LINES
子句
相同
LOAD
DATA
。
请参见
第13.2.7节“LOAD DATA语法”
。
在
`
字符
内引用标识符(例如数据库,表和列名称)
。
如果
ANSI_QUOTES
启用
了
SQL模式,则在
"
字符
内引用标识符
。
默认情况下启用此选项。
它可以被禁用
--skip-quote-names
,但是这个选项应该在任何
--compatible
可能启用的
选项之后给出
--quote-names
。
--result-file=
,
file_name
-r
file_name
直接输出到指定的文件。 即使在生成转储时发生错误,也会创建结果文件并覆盖其先前的内容。
应在Windows上使用此选项以防止换行符
\n
转换为
\r\n
回车符/换行符序列。
生成制表符分隔的文本格式数据文件。
对于每个转储表,
mysqldump
创建一个
文件,其中包含
tbl_name
.sqlCREATE
TABLE
创建表
的
语句,服务器会写入
包含其数据
的
文件。
选项值是写入文件的目录。
tbl_name
.txt
仅当
mysqldump
与
mysqld
服务器
在同一台机器上运行时,
才应使用此选项
。
因为服务器
*.txt
在您指定的目录中
创建
文件,所以该目录必须是服务器可写的,并且您使用的MySQL帐户必须具有该
FILE
权限。
因为
mysqldump
*.sql
在同一目录中
创建
,所以它必须可由您的系统登录帐户写入。
默认情况下,
.txt
数据文件使用列值之间的制表符和每行末尾的换行符进行格式化。
可以使用
和
选项
明确指定格式
。
--fields-
xxx
--lines-terminated-by
列值将转换为
--default-character-set
选项
指定的字符集
。
此选项允许
TIMESTAMP
在不同时区的服务器之间转储和重新加载列。
mysqldump
将其连接时区设置为UTC并添加
SET
TIME_ZONE='+00:00'
到转储文件。
如果没有此选项,
TIMESTAMP
则会在源服务器和目标服务器本地的时区中转储和重新加载列,如果服务器位于不同的时区,则会导致值发生更改。
--tz-utc
还可以防止由于夏令时造成的变化。
--tz-utc
默认情况下启用。
要禁用它,请使用
--skip-tz-utc
。
将转储输出写为格式良好的XML。
NULL
,
'NULL'
和空值
:对于名为的列
column_name
,
NULL
值,空字符串和字符串值
'NULL'
在此选项生成的输出中相互区分,如下所示。
值: | XML表示: |
---|---|
NULL
(
未知值
)
|
|
''
(
空字符串
)
|
|
'NULL'
(
字符串值
)
|
|
使用该
选项
运行时
,
mysql
客户端
的输出
--xml
也遵循前面的规则。
(参见
第4.5.1.1节“mysql客户端选项”
。)
mysqldump的 XML输出 包括XML命名空间,如下所示:
外壳>mysqldump --xml -u root world City
<?xml version =“1.0”?> <mysqldump xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”> <database name =“world”> <table_structure name =“City”> <field Field =“ID”Type =“int(11)”Null =“NO”Key =“PRI”Extra =“auto_increment”/> <field Field =“Name”Type =“char(35)”Null =“NO”Key =“”Default =“”Extra =“”/> <field Field =“CountryCode”Type =“char(3)”Null =“NO”Key =“”Default =“”Extra =“”/> <field Field =“District”Type =“char(20)”Null =“NO”Key =“”Default =“”Extra =“”/> <field Field =“Population”Type =“int(11)”Null =“NO”Key =“”Default =“0”Extra =“”/> <key Table =“City”Non_unique =“0”Key_name =“PRIMARY”Seq_in_index =“1”Column_name =“ID” Collation =“A”Cardinality =“4079”Null =“”Index_type =“BTREE”Comment =“”/> <options Name =“City”Engine =“MyISAM”Version =“10”Row_format =“Fixed”Rows =“4079” Avg_row_length =“67”Data_length =“273293”Max_data_length =“18858823439613951” Index_length =“43008”Data_free =“0”Auto_increment =“4080” Create_time =“2007-03-31 01:47:01”Update_time =“2007-03-31 01:47:02” 排序规则=“latin1_swedish_ci”Create_options =“”Comment =“”/> </ table_structure> <table_data name =“City”> <行> <field name =“ID”> 1 </ field> <field name =“Name”>喀布尔</ field> <field name =“CountryCode”> AFG </ field> <field name =“District”> Kabol </ field> <field name =“Population”> 1780000 </ field> </行>...
<行> <field name =“ID”> 4079 </ field> <field name =“Name”> Rafah </ field> <field name =“CountryCode”> PSE </ field> <field name =“District”> Rafah </ field> <field name =“Population”> 92020 </ field> </行> </ TABLE_DATA> </数据库> </ mysqldump的>
以下选项控制将哪种模式对象写入转储文件:按类别,如触发器或事件;
按名称,例如,选择要转储的数据库和表;
甚至使用
WHERE
子句
从表数据中过滤行
。
转储所有数据库中的所有表。
这与使用该
--databases
选项并在命令行上命名所有数据库
相同
。
在MySQL 8.0之前,使用
选项时,
mysqldump
和
mysqlpump的
选项
--routines
和
--events
选项
不需要包含存储的例程和事件
:转储包括
系统数据库,因此
包含存储的例程和事件定义
的
和
表。
从MySQL 8.0开始,
和
--all-databases
mysql
mysql.proc
mysql.event
mysql.event
mysql.proc
不使用表格。
相应对象的定义存储在数据字典表中,但不会转储这些表。
要在使用的转储中包含存储的例程和事件,请
显式
--all-databases
使用
--routines
和
--events
选项。
转储几个数据库。
通常,
mysqldump
将命令行上的第一个名称参数视为数据库名称,将后续名称视为表名称。
使用此选项,它将所有名称参数视为数据库名称。
CREATE
DATABASE
和
USE
语句包含在每个新数据库之前的输出中。
此选项可用于转储
performance_schema
数据库,即使使用该
--all-databases
选项
,也通常不会
转储该
数据库
。
(也可以使用该
--skip-lock-tables
选项。)
在输出中包含转储数据库的事件计划程序事件。
此选项需要
EVENT
这些数据库
的
权限。
使用
--events
contains
CREATE
EVENT
语句
生成的输出
来创建事件。
--ignore-error=
error[,error]...
忽略指定的错误。
选项值是逗号分隔的错误号列表,指定在
mysqldump
执行
期间要忽略的错误
。
如果
--force
还提供了忽略所有错误
的
选项,
--force
则优先。
--ignore-table=
db_name.tbl_name
不要转储给定的表,必须使用数据库和表名来指定该表。 要忽略多个表,请多次使用此选项。 此选项也可用于忽略视图。
不要写任何表行信息(即不要转储表内容)。
如果要仅转储
CREATE
TABLE
表
的
语句(例如,通过加载转储文件来创建表的空副本),
这将非常有用
。
在输出中包含转储数据库的存储例程(过程和函数)。
此选项需要全局
SELECT
权限。
通过使用
--routines
contains
CREATE
PROCEDURE
和
CREATE
FUNCTION
语句
生成的输出
来创建例程。
覆盖
--databases
或
-B
选项。
mysqldump
将该选项后面的所有名称参数视为表名。
在输出中包含每个转储表的触发器。
默认情况下启用此选项;
禁用它
--skip-triggers
。
为了能够转储表的触发器,您必须具有
TRIGGER
该表
的
权限。
允许多个触发器。 mysqldump 以激活顺序转储触发器,以便在重新加载转储文件时,以相同的激活顺序创建触发器。 但是,如果 mysqldump 转储文件包含具有相同触发事件和操作时间的表的多个触发器,则尝试将转储文件加载到不支持多个触发器的旧服务器时会发生错误。 (有关解决方法,请参阅 降级Notes ;您可以将触发器转换为与旧服务器兼容。)
--where='
,
where_condition
'-w
'
where_condition
'
仅转储由给定
WHERE
条件
选择的行
。
如果条件包含空格或其他对命令解释程序特殊的字符,则必须引用该条件。
例子:
--where = “用户= 'jimf'” -w “用户ID> 1” -w “用户ID <1”
以下选项与性能(尤其是还原操作)最相关。
对于大型数据集,还原操作(处理
INSERT
转储文件中
的
语句)是最耗时的部分。
当急需恢复数据时,请提前计划并测试此阶段的性能。
对于以小时为单位的恢复时间,您可能更喜欢备用备份和还原解决方案,例如
MySQL Enterprise Backup
for
InnoDB
-lyly和mixed-use数据库。
性能也受 事务选项的 影响 ,主要用于转储操作。
ANALYZE TABLE
在重新加载转储文件时,向输出
添加
语句以生成转储表的直方图统计信息。
默认情况下禁用此选项,因为大型表的直方图生成可能需要很长时间。
对于每个表,用
INSERT
语句
和
语句
包围
语句。
这样可以更快地加载转储文件,因为索引是在插入所有行之后创建的。
此选项仅对
表的
非唯一索引有效
。
/*!40000 ALTER TABLE
tbl_name
DISABLE KEYS
*/;/*!40000 ALTER TABLE
tbl_name
ENABLE KEYS
*/;MyISAM
INSERT
使用包含多个
VALUES
列表的
多行语法
编写
语句
。
这会导致较小的转储文件,并在重新加载文件时加快插入速度。
编写
INSERT
IGNORE
语句而不是
INSERT
语句。
客户端/服务器通信的最大缓冲区大小。 默认值为24MB,最大值为1GB。
用于客户端/服务器通信的缓冲区的初始大小。
在创建多行
INSERT
语句时(与
--extended-insert
or
--opt
选项一样),
mysqldump
创建长达数字的行
--net-buffer-length
。
如果增加此变量,请确保MySQL服务器
net_buffer_length
系统变量的值至少为此大。
--network-timeout
,
-M
通过设置
--max-allowed-packet
为最大值并将网络读取和写入超时设置为较大值
来启用要转储的大型表
。
默认情况下启用此选项。
要禁用它,请使用
--skip-network-timeout
。
默认情况下启用此选项是组合的简写
。
它提供快速转储操作并生成转储文件,可以快速重新加载到MySQL服务器。
--add-drop-table
--add-locks
--create-options
--disable-keys
--extended-insert
--lock-tables
--quick
--set-charset
由于
--opt
默认情况下启用
该
选项,因此您只需指定其
--skip-opt
反转
,即
关闭多个默认设置。
有关有
mysqldump
选择
地启用或禁用受影响的选项子集的信息,
请参阅
选项组
的讨论
--opt
。
此选项对于转储大型表非常有用。 它强制 mysqldump 一次一行地从服务器检索表的行,而不是检索整个行集并在写出之前在内存中缓冲它。
请参阅该
--opt
选项
的说明
。
以下选项权衡转储操作的性能,以及导出数据的可靠性和一致性。
使用
LOCK
TABLES
和
UNLOCK
TABLES
语句
环绕每个表转储
。
重新加载转储文件时,这会导致更快的插入。
请参见
第8.2.5.1节“优化INSERT语句”
。
在开始转储之前刷新MySQL服务器日志文件。
此选项需要该
RELOAD
权限。
如果将此选项与选项结合使用
--all-databases
,则会
为每个转储的数据库
刷新日志
。
例外情况是使用
--lock-all-tables
,,
--master-data
或
--single-transaction
:在这种情况下,日志只刷新一次,对应于所有表被锁定的时刻
FLUSH TABLES
WITH READ LOCK
。
如果你希望你的转储和刷新日志到恰好在同一时刻发生,你应该使用
--flush-logs
同在一起
--lock-all-tables
,
--master-data
或
--single-transaction
。
FLUSH PRIVILEGES
转储
mysql
数据库
后,在转储输出中
添加
语句
。
只要转储包含
mysql
数据库以及依赖于数据库中的数据以
mysql
进行正确还原的
任何其他数据库,就
应该使用此选项
。
要从旧版本升级到MySQL 5.7.2或更高版本,请不要使用
--flush-privileges
。
有关此情况下的升级说明,请参见
第2.11.4节“MySQL 8.0中的更改”
。
锁定所有数据库中的所有表。
这是通过在整个转储期间获取全局读锁来实现的。
此选项自动关闭
--single-transaction
和
--lock-tables
。
对于每个转储的数据库,在转储之前锁定要转储的所有表。
表被锁定
READ LOCAL
以允许在
MyISAM
表
的情况下并发插入
。
对于事务表,例如
InnoDB
,
--single-transaction
是一个更好的选择,
--lock-tables
因为它根本不需要锁定表。
由于
--lock-tables
每个数据库的锁表都是单独的,因此该选项不保证转储文件中的表在数据库之间在逻辑上是一致的。
不同数据库中的表可能会以完全不同的状态转储。
某些选项,例如
--opt
,自动启用
--lock-tables
。
如果要覆盖它,请使用
--skip-lock-tables
选项列表的末尾。
如果存在这样的索引,则转储按其主键或其第一个唯一索引排序的每个表的行。
这在转储
MyISAM
要加载到
InnoDB
表中
的
表
时很有用
,但使转储操作需要相当长的时间。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
此选项将事务隔离模式设置为,
REPEATABLE
READ
并
START
TRANSACTION
在转储数据之前
将
SQL语句
发送
到服务器。
它仅对事务表有用,例如
InnoDB
,因为它在
START
TRANSACTION
发出时不
转储
任何应用程序
时转储数据库的一致状态
。
使用此选项时,应记住只有
InnoDB
表以一致状态转储。
例如,
使用此选项时转储的
任何
表
MyISAM
或
MEMORY
表仍可能更改状态。
虽然
--single-transaction
转储过程,以确保有效的转储文件(正确的表的内容和二进制日志坐标),没有其他的连接应使用以下语句:
ALTER
TABLE
,
CREATE
TABLE
,
DROP
TABLE
,
RENAME
TABLE
,
TRUNCATE
TABLE
。
一致读取不会与这些语句隔离,因此在要转储的表上使用它们会导致
mysqldump
SELECT
执行该操作
以检索表内容以获取不正确的内容或失败。
该
--single-transaction
选项与
--lock-tables
选项是相互排斥的,因为
LOCK
TABLES
会导致任何挂起的事务隐含提交。
要转储大表,请将该
--single-transaction
选项与
--quick
选项
组合
使用
。
当您有选择地启用或禁用组选项的效果时,顺序很重要,因为选项从头到尾处理。
例如,
不会产生预期的效果;
它
本身就是一样的。
--disable-keys
--lock-tables
--skip-opt
--skip-opt
要备份整个数据库:
外壳> mysqldump db_name
> backup-file.sql
要将转储文件加载回服务器:
外壳> mysql db_name
< backup-file.sql
另一种重新加载转储文件的方法:
外壳> mysql -e "source /path-to-backup/backup-file.sql
" db_name
mysqldump 对于通过将数据从一个MySQL服务器复制到另一个MySQL服务器来填充数据库非常有用:
外壳> mysqldump --opt db_name
| mysql --host=remote_host
-C db_name
您可以使用一个命令转储多个数据库:
外壳> mysqldump --databases db_name1
[db_name2
...] > my_databases.sql
要转储所有数据库,请使用以下
--all-databases
选项:
外壳> mysqldump --all-databases > all_databases.sql
对于
InnoDB
表,
mysqldump
提供了一种进行在线备份的方法:
外壳> mysqldump --all-databases --master-data --single-transaction > all_databases.sql
此备份
FLUSH TABLES WITH
READ LOCK
在转储开始时
对所有表(使用
)
获取全局读锁定
。
获取此锁定后,将读取二进制日志坐标并释放锁定。
如果在
FLUSH
发出
语句时正在运行长更新语句
,则MySQL服务器可能会停止,直到这些语句完成。
之后,转储变为无锁,并且不会干扰对表的读取和写入。
如果MySQL服务器收到的更新语句很短(就执行时间而言),即使有很多更新,初始锁定时间也不应该很明显。
对于时间点恢复(也称为 “前 滚 ”, 当您需要恢复旧备份并重放自该备份以来发生的更改时),旋转二进制日志通常很有用(请参阅 第5.4节)。 4,“二进制日志” )或至少知道转储对应的二进制日志坐标:
外壳> mysqldump --all-databases --master-data=2 > all_databases.sql
要么:
外壳>mysqldump --all-databases --flush-logs --master-data=2
> all_databases.sql
在
--master-data
和
--single-transaction
选项可以同时使用,其提供了一个方便的方法,使在线备份适于在使用前以指向-in-time恢复如果表被使用所存储的
InnoDB
存储引擎。
有关进行备份的更多信息,请参见 第7.2节“数据库备份方法” 和 第7.3节“备份和恢复策略示例” 。
要选择
--opt
除某些功能之外
的效果
,请使用
--skip
每个功能
的
选项。
要禁用扩展插入和内存缓冲,请使用
。
(实际上,
因为
默认情况下
已经足够
了。)
--opt
--skip-extended-insert
--skip-quick
--skip-extended-insert
--skip-quick
--opt
要反转
--opt
除索引禁用和表锁定之外的所有功能,请使用
。
--skip-opt
--disable-keys
--lock-tables
默认情况下,
mysqldump
不会转储
performance_schema
或
sys
模式。
要转储其中任何一个,请在命令行中明确命名它们。
您也可以使用该
--databases
选项
命名它们
。
对于
performance_schema
,也可以使用该
--skip-lock-tables
选项。
mysqldump
不会转储
INFORMATION_SCHEMA
架构。
mysqldump
不会转储
InnoDB
CREATE
TABLESPACE
语句。
mysqldump
不会转储NDB Cluster
ndbinfo
信息数据库。
mysqldump
包含用于重新创建
数据库
转储的表
general_log
和
语句的语句
。
不转储日志表内容。
slow_query_log
mysql
如果由于权限不足而在备份视图时遇到问题,请参见 第C.5节“视图限制” 以获取解决方法。
该
mysqlimport的
客户提供了一个命令行界面的
LOAD
DATA
SQL语句。
mysqlimport的
大多数选项
直接对应于
LOAD
DATA
语法的
子句
。
请参见
第13.2.7节“LOAD DATA语法”
。
像这样 调用 mysqlimport :
外壳> mysqlimport [options
] db_name
textfile1
[textfile2
...]
对于在命令行上命名的每个文本文件,
mysqlimport
从文件名中
删除
任何扩展名,并使用结果来确定要导入文件内容的表的名称。
例如,名为
patient.txt
,,
patient.text
和
patient
all的
文件
将导入到名为的表中
patient
。
的mysqlimport
支持下面的选项,可以在命令行或在指定
[mysqlimport]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.12 mysqlimport选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
- 列 | 此选项将以逗号分隔的列名列表作为其值 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
- 删除 | 在导入文本文件之前清空表 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
--fields封闭逐 | 此选项与LOAD DATA的相应子句具有相同的含义 | ||
--fields转义,由 | 此选项与LOAD DATA的相应子句具有相同的含义 | ||
--fields-任选封闭逐 | 此选项与LOAD DATA的相应子句具有相同的含义 | ||
--fields封端逐 | 此选项与LOAD DATA的相应子句具有相同的含义 | ||
- 力 | 即使发生SQL错误也继续 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
- 忽视 | 请参阅--replace选项的说明 | ||
- 忽略线 | 忽略数据文件的前N行 | ||
--lines封端逐 | 此选项与LOAD DATA的相应子句具有相同的含义 | ||
- 本地 | 从客户端主机本地读取输入文件 | ||
--lock桌 | 在处理任何文本文件之前锁定所有表以进行写入 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
- 低优先级 | 加载表时使用LOW_PRIORITY。 | ||
--no-默认 | 不读选项文件 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
- 更换 | --replace和--ignore选项控制对唯一键值上的现有行进行复制的输入行的处理 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
- 无声 | 仅在发生错误时生成输出 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
--use线程 | 并行文件加载的线程数 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 |
--help
,
-?
显示帮助消息并退出。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--columns=
,
column_list
-c
column_list
此选项将逗号分隔列名称列表作为其值。 列名称的顺序指示如何将数据文件列与表列匹配。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o
程序退出时打印一些调试信息。
程序退出时打印调试信息,内存和CPU使用情况统计信息。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqlimport
通常会读取
[client]
和
[mysqlimport]
组。
如果
--defaults-group-suffix=_other
给出
了该
选项,
mysqlimport
也会读取
[client_other]
和
[mysqlimport_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--delete
,
-D
在导入文本文件之前清空表。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
--fields-terminated-by=...
,
--fields-enclosed-by=...
,
--fields-optionally-enclosed-by=...
,
--fields-escaped-by=...
这些选项与相应的子句具有相同的含义
LOAD
DATA
。
请参见
第13.2.7节“LOAD DATA语法”
。
--force
,
-f
忽略错误。
例如,如果文本文件的表不存在,请继续处理任何剩余文件。
如果没有
--force
,
mysqlimport会
在表不存在时退出。
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
将数据导入给定主机上的MySQL服务器。
默认主机是
localhost
。
--ignore
,
-i
请参阅该
--replace
选项
的说明
。
忽略
N
数据文件
的第一
行。
此选项与相应的子句具有相同的含义
LOAD
DATA
。
例如,要导入具有以回车符/换行符对终止的行的Windows文件,请使用
--lines-terminated-by="\r\n"
。
(您可能需要将反斜杠加倍,具体取决于命令解释程序的转义约定。)请参见
第13.2.7节“LOAD DATA语法”
。
--local
,
-L
默认情况下,服务器主机上的服务器会读取文件。 使用此选项, mysqlimport 在客户端主机上本地读取输入文件。 启用本地数据加载还需要服务器允许它; 请参见 第6.1.6节“LOAD DATA LOCAL的安全问题”
--lock-tables
,
-l
在处理任何文本文件之前 锁定 所有 表以进行写入。 这可确保在服务器上同步所有表。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
LOW_PRIORITY
加载表时
使用
。
这会影响只使用表级锁只存储引擎(例如
MyISAM
,
MEMORY
和
MERGE
)。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqlimport
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqlimport
未找到它,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--replace
,
-r
在
--replace
和
--ignore
选项控制复制唯一键值的现有行输入行处理。
如果指定
--replace
,则新行将替换具有相同唯一键值的现有行。
如果指定
--ignore
,则跳过复制唯一键值上现有行的输入行。
如果未指定任一选项,则在找到重复键值时会发生错误,并忽略文本文件的其余部分。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
--silent
,
-s
静音模式。 仅在发生错误时生成输出。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
使用
N
线程
并行加载文件
。
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。
--version
,
-V
显示版本信息并退出。
这是一个演示使用 mysqlimport 的示例会话 :
shell>mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell>ed
一个 100 Max Sydow 101德古拉伯爵 。 w imptest.txt 32 q 外壳>od -c imptest.txt
0000000 1 0 0 \ t M ax S ydow \ n 1 0 0000020 1 \ t C D D racula \ n 0000040 外壳>mysqlimport --local test imptest.txt
test.imptest:记录:2删除:0跳过:0警告:0 外壳>mysql -e 'SELECT * FROM imptest' test
+ ------ + --------------- + | id | n | + ------ + --------------- + | 100 | Max Sydow | | 101 | 德古拉伯爵 + ------ + --------------- +
所述 mysqlpump 客户实用程序执行 逻辑备份 ,产生一组能够被执行以再现原始数据库对象定义和表数据的SQL语句。 它转储一个或多个MySQL数据库以备份或传输到另一个SQL服务器。
mysqlpump 功能包括:
并行处理数据库和数据库中的对象,以加速转储过程
更好地控制要转储的数据库和数据库对象(表,存储程序,用户帐户)
将用户帐户转储为帐户管理语句(
CREATE
USER
,
GRANT
)而不是作为插入
mysql
系统数据库
创建压缩输出的能力
进度指标(值是估计值)
对于转储文件重新加载,
InnoDB
通过在插入行之后添加索引
来为
表
创建更快的二级索引
mysqlpump 使用MySQL 5.7中引入的MySQL功能,因此假设使用MySQL 5.7或更高版本。
mysqlpump
至少需要
SELECT
转储表
的
特权,
SHOW VIEW
转储视图,
TRIGGER
转储触发器以及
未使用
LOCK TABLES
该
--single-transaction
选项
的
特权
。
转储用户定义需要系统数据库
的
SELECT
权限
mysql
。
某些选项可能需要其他权限,如选项说明中所述。
要重新加载转储文件,您必须具有执行其包含的语句所需的权限,例如
CREATE
这些语句创建的对象
的相应
权限。
在Windows上使用PowerShell进行转储并使用输出重定向创建一个具有UTF-16编码的文件:
外壳> mysqlpump [options] > dump.sql
但是,不允许UTF-16作为连接字符集(请参见
第10.4节“连接字符集和排序”
),因此转储文件将无法正确加载。
要解决此问题,请使用
--result-file
以ASCII格式创建输出
的
选项:
外壳> mysqlpump [options] --result-file=dump.sql
默认情况下,
mysqlpump会
转储所有数据库(在
mysqlpump限制中
注明某些例外
)。
要显式指定此行为,请使用以下
--all-databases
选项:
外壳> mysqlpump --all-databases
要转储单个数据库或该数据库中的某些表,请在命令行上命名数据库,可选地后跟表名:
shell> shell>mysqlpump
db_name
mysqlpump
db_name tbl_name1 tbl_name2 ...
要将所有名称参数视为数据库名称,请使用以下
--databases
选项:
外壳> mysqlpump --databases db_name1 db_name2
...
默认情况下,
即使您转储
包含授权表
的
系统数据库
,
mysqlpump
也不会转储用户帐户定义
mysql
。
要以表符
CREATE
USER
和
GRANT
语句
的形式将授权表内容转储为逻辑定义
,请使用该
--users
选项并禁止所有数据库转储:
外壳> mysqlpump --exclude-databases=% --users
在上面的命令中,
%
是一个匹配该
--exclude-databases
选项的
所有数据库名称的通配符
。
mysqlpump 支持包含或排除数据库,表,存储程序和用户定义的几个选项。 请参阅 mysqlpump对象选择 。
要重新加载转储文件,请执行它包含的语句。 例如,使用 mysql 客户端:
shell>mysqlpump [options] > dump.sql
shell>mysql < dump.sql
以下讨论提供了其他 mysqlpump 用法示例。
要查看 mysqlpump 支持 的选项列表 ,请发出命令 mysqlpump --help 。
mysqlpump
支持下面的选项,可以在命令行或在指定
[mysqlpump]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.13 mysqlpump选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--add降数据库 | 在每个CREATE DATABASE语句之前添加DROP DATABASE语句 | ||
--add-drop-table在 | 在每个CREATE TABLE语句之前添加DROP TABLE语句 | ||
--add拖放用户 | 在每个CREATE USER语句之前添加DROP USER语句 | ||
--add锁 | 使用LOCK TABLES和UNLOCK TABLES语句环绕每个表转储 | ||
- 全数据库 | 转储所有数据库 | ||
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
--character集-DIR | 安装字符集的目录 | ||
--column统计 | 编写ANALYZE TABLE语句以生成统计直方图 | 8.0.2 | |
--complete-插入 | 使用包含列名的完整INSERT语句 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--compress输出 | 输出压缩算法 | ||
--databases | 将所有名称参数解释为数据库名称 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--default-并行 | 并行处理的默认线程数 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
--defer表的索引 | 对于重新加载,将索引创建推迟到加载表行之后 | ||
--events | 转储转储数据库中的事件 | ||
--exclude-数据库 | 要从转储中排除的数据库 | ||
--exclude事件 | 要从转储中排除的事件 | ||
--exclude例程 | 从转储中排除的例程 | ||
--exclude桌 | 要从转储中排除的表 | ||
--exclude-触发器 | 触发器从转储中排除 | ||
--exclude用户 | 用户要从转储中排除 | ||
--extended-插入 | 使用多行INSERT语法 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
--hex二进制大对象 | 使用十六进制表示法转储二进制列 | ||
- 主办 | 要连接的主机(IP地址或主机名) | ||
--include-数据库 | 要包含在转储中的数据库 | ||
--include事件 | 要包含在转储中的事件 | ||
--include例程 | 在转储中包含的例程 | ||
--include桌 | 要包含在转储中的表 | ||
--include-触发器 | 触发器包含在转储中 | ||
--include用户 | 用户要包含在转储中 | ||
--insert,忽视 | 编写INSERT IGNORE而不是INSERT语句 | ||
--log错误文件 | 将警告和错误附加到命名文件 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--max允许的分组 | 发送到服务器或从服务器接收的最大数据包长度 | ||
--net缓冲长度 | TCP / IP和套接字通信的缓冲区大小 | ||
--no创建-DB | 不要编写CREATE DATABASE语句 | ||
--no创建-信息 | 不要编写重新创建每个转储表的CREATE TABLE语句 | ||
--no-默认 | 不读选项文件 | ||
--parallel-模式 | 指定模式处理并行性 | ||
- 密码 | 连接到服务器时使用的密码 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
- 更换 | 编写REPLACE语句而不是INSERT语句 | ||
- 结果文件 | 直接输出到给定文件 | ||
--routines | 从转储的数据库转储存储的例程(过程和函数) | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--set-字符集 | 将SET NAMES default_character_set添加到输出 | ||
--set-GTID,清除 | 是否将SET @@ GLOBAL.GTID_PURGED添加到输出中 | 8.0.1 | |
--single事务 | 在单个事务中转储表 | ||
--skip-定义者 | 从视图和存储程序CREATE语句中省略DEFINER和SQL SECURITY子句 | ||
--skip-转储行 | 不要转储表行 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
--triggers | 转储每个转储表的触发器 | ||
--tz-UTC | 将SET TIME_ZONE ='+ 00:00'添加到转储文件 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--users | 转储用户帐户 | ||
- 版 | 显示版本信息并退出 | ||
--watch正在进行 | 显示进度指示器 |
--help
,
-?
显示帮助消息并退出。
DROP DATABASE
在每个
CREATE
DATABASE
陈述
之前
写一个
陈述。
DROP TABLE
在每个
CREATE
TABLE
陈述
之前
写一个
陈述。
DROP USER
在每个
CREATE
USER
陈述
之前
写一个
陈述。
使用
LOCK
TABLES
和
UNLOCK
TABLES
语句
环绕每个表转储
。
重新加载转储文件时,这会导致更快的插入。
请参见
第8.2.5.1节“优化INSERT语句”
。
此选项不适用于并行性,因为
INSERT
来自不同表的语句可以交错,并且
UNLOCK
TABLES
在一个表的插入结束之后可以释放对其保留插入的表的锁定。
--add-locks
并且
--single-transaction
是相互排斥的。
--all-databases
,
-A
转储所有数据库(在 mysqlpump限制中 注明某些例外 )。 如果未明确指定其他行为,则这是默认行为。
--all-databases
并且
--databases
是相互排斥的。
在MySQL 8.0之前,使用
选项时,
mysqldump
和
mysqlpump的
选项
--routines
和
--events
选项
不需要包含存储的例程和事件
:转储包括
系统数据库,因此
包含存储的例程和事件定义
的
和
表。
从MySQL 8.0开始,
和
--all-databases
mysql
mysql.proc
mysql.event
mysql.event
mysql.proc
不使用表格。
相应对象的定义存储在数据字典表中,但不会转储这些表。
要在使用的转储中包含存储的例程和事件,请
显式
--all-databases
使用
--routines
和
--events
选项。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
ANALYZE TABLE
在重新加载转储文件时,向输出
添加
语句以生成转储表的直方图统计信息。
默认情况下禁用此选项,因为大型表的直方图生成可能需要很长时间。
编写
INSERT
包含列名的
完整
语句。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
默认情况下,
mysqlpump
不压缩输出。
此选项使用指定的算法指定输出压缩。
允许的算法是
LZ4
和
ZLIB
。
要解压缩压缩输出,您必须具有适当的实用程序。
如果系统命令
lz4
和
openssl zlib
不可用,MySQL发行版包括
lz4_decompress
和
zlib_decompress
实用程序,可用于解
压缩使用
和
选项
压缩的
mysqlpump
输出
。
有关更多信息,请参见
第4.8.1节“
lz4_decompress
- 解压缩mysqlpump LZ4压缩输出”
和
第4.8.3节“
zlib_decompress”
--compress-output=LZ4
--compress-output=ZLIB
- 解压缩mysqlpump ZLIB压缩输出“
。
--databases
,
-B
通常,
mysqlpump
将命令行上的第一个名称参数视为数据库名称,并将以下任何名称视为表名称。
使用此选项,它将所有名称参数视为数据库名称。
CREATE
DATABASE
语句包含在每个新数据库之前的输出中。
--all-databases
并且
--databases
是相互排斥的。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:O,/tmp/mysqlpump.trace
程序退出时打印一些调试信息。
--debug-info
,
-T
程序退出时打印调试信息,内存和CPU使用情况统计信息。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
如果没有指定字符集,
mysqlpump
使用
utf8
。
每个并行处理队列的默认线程数。 默认值为2。
该
--parallel-schemas
选项还会影响并行性,可用于覆盖默认的线程数。
有关更多信息,请参阅
mysqlpump并行处理
。
有了
--default-parallelism=0
也没有
--parallel-schemas
选项,
mysqlpump
作为单线程进程运行,不创建任何队列。
启用并行后,可以交错来自不同数据库的输出。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqlpump
通常会读取
[client]
和
[mysqlpump]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
mysqlpump
也会读取
[client_other]
和
[mysqlpump_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
在转储输出中,推迟为每个表创建索引,直到其行已加载。
这适用于所有存储引擎,但
InnoDB
仅适用于二级索引。
默认情况下启用此选项;
使用
--skip-defer-table-indexes
禁用它。
在输出中包含转储数据库的事件计划程序事件。
事件转储需要
EVENT
这些数据库
的
特权。
使用
--events
contains
CREATE
EVENT
语句
生成的输出
来创建事件。
默认情况下启用此选项;
使用
--skip-events
禁用它。
不要转储数据库
db_list
,这是一个或多个以逗号分隔的数据库名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
不要转储数据库
event_list
,这是一个或多个以逗号分隔的事件名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
--exclude-routines=
routine_list
不要转储事件
routine_list
,这是一个或多个以逗号分隔的例程(存储过程或函数)名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
不要转储表
table_list
,这是一个或多个以逗号分隔的表名的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
--exclude-triggers=
trigger_list
不要转储触发器
trigger_list
,这是一个或多个以逗号分隔的触发器名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
不要转储用户帐户
user_list
,这是一个或多个以逗号分隔的帐户名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
INSERT
使用包含多个
VALUES
列表的
多行语法
编写
语句
。
这会导致较小的转储文件,并在重新加载文件时加快插入速度。
选项值指示要在每个
INSERT
语句中
包含的行数
。
默认值为250.值为1会
INSERT
为每个表行
生成一个
语句。
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
使用十六进制表示法转储二进制列(例如,
'abc'
变为
0x616263
)。
受影响的数据类型
BINARY
,
VARBINARY
的
BLOB
类型和
BIT
。
--host=
,
host_name
-h
host_name
从给定主机上的MySQL服务器转储数据。
转储数据库
db_list
,这是一个或多个以逗号分隔的数据库名称的列表。
转储包括指定数据库中的所有对象。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
转储事件
event_list
,这是一个或多个以逗号分隔的事件名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
--include-routines=
routine_list
转储例程
routine_list
,这是一个或多个以逗号分隔的例程(存储过程或函数)名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
转储表
table_list
,这是一个或多个以逗号分隔的表名的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
--include-triggers=
trigger_list
转储触发器
trigger_list
,这是一个或多个以逗号分隔的触发器名称的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
转储用户帐户
user_list
,这是一个或多个以逗号分隔的用户名的列表。
此选项的多个实例是可添加的。
有关更多信息,请参阅
mysqlpump对象选择
。
编写
INSERT
IGNORE
语句而不是
INSERT
语句。
通过将警告和错误附加到指定文件来记录警告和错误。 如果未给出此选项, mysqlpump 会将警告和错误写入标准错误输出。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
客户端/服务器通信的最大缓冲区大小。 默认值为24MB,最大值为1GB。
用于客户端/服务器通信的缓冲区的初始大小。
在创建多行
INSERT
语句时(与
--extended-insert
选项一样),
mysqlpump
会创建长达
数字的
行
N
。
如果使用此选项增加值,请确保MySQL服务器
net_buffer_length
系统变量的值至少为此大。
抑制
CREATE
DATABASE
可能包含在输出中的
任何
语句。
--no-create-info
,
-t
不要编写
CREATE
TABLE
创建每个转储表的语句。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--parallel-schemas=[
N
:]db_list
创建一个用于处理数据库的队列,该队列
db_list
是一个或多个以逗号分隔的数据库名称的列表。
如果
N
给出,则队列使用
N
线程。
如果
N
未给出,则该
--default-parallelism
选项确定队列线程数。
此选项的多个实例创建多个队列。
mysqlpump
还创建一个默认队列,用于未在任何
--parallel-schemas
选项中
命名的数据库
,以及在命令选项选择它们时转储用户定义。
有关更多信息,请参阅
mysqlpump并行处理
。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqlpump
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqlpump
找不到,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
直接输出到指定的文件。 即使在生成转储时发生错误,也会创建结果文件并覆盖其先前的内容。
应在Windows上使用此选项以防止换行符
\n
转换为
\r\n
回车符/换行符序列。
在输出中包含转储数据库的存储例程(过程和函数)。
此选项需要全局
SELECT
权限。
通过使用
--routines
contains
CREATE
PROCEDURE
和
CREATE
FUNCTION
语句
生成的输出
来创建例程。
默认情况下启用此选项;
使用
--skip-routines
禁用它。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
写入
输出。
SET
NAMES
default_character_set
默认情况下启用此选项。
要禁用它并禁止
SET
NAMES
声明,请使用
--skip-set-charset
。
此选项通过指示是否向
SET
@@GLOBAL.gtid_purged
输出
添加
语句来
启用对写入转储文件的全局事务ID(GTID)信息的控制
。
此选项还可能导致将语句写入输出,以在重新加载转储文件时禁用二进制日志记录。
下表显示了允许的选项值。
默认值为
AUTO
。
值 | 含义 |
---|---|
OFF |
不
SET
向输出
添加
语句。
|
ON |
SET
在输出中
添加
语句。
如果服务器上未启用GTID,则会发生错误。
|
AUTO |
SET
如果在服务器上启用了GTID,则向输出
添加
语句。
|
--set-gtid-purged
重新加载转储文件时,
该
选项对二进制日志记录具有以下影响:
--set-gtid-purged=OFF
:
SET
@@SESSION.SQL_LOG_BIN=0;
未添加到输出中。
--set-gtid-purged=ON
:
SET
@@SESSION.SQL_LOG_BIN=0;
添加到输出中。
--set-gtid-purged=AUTO
SET
@@SESSION.SQL_LOG_BIN=0;
如果在要备份的服务器上启用了GTID(即,如果
AUTO
计算结果为
ON
)
,则会
将
:
添加到输出中
。
此选项将事务隔离模式设置为,
REPEATABLE
READ
并
START
TRANSACTION
在转储数据之前
将
SQL语句
发送
到服务器。
它仅对事务表有用,例如
InnoDB
,因为它在
START
TRANSACTION
发出时不
转储
任何应用程序
时转储数据库的一致状态
。
使用此选项时,应记住只有
InnoDB
表以一致状态转储。
例如,
使用此选项时转储的
任何
表
MyISAM
或
MEMORY
表仍可能更改状态。
虽然
--single-transaction
转储过程,以确保有效的转储文件(正确的表的内容和二进制日志坐标),没有其他的连接应使用以下语句:
ALTER
TABLE
,
CREATE
TABLE
,
DROP
TABLE
,
RENAME
TABLE
,
TRUNCATE
TABLE
。
一致读取不会与这些语句隔离,因此在要转储的表上使用它们会导致
mysqlpump
SELECT
执行该
操作
以检索表内容以获取不正确的内容或失败。
--add-locks
并且
--single-transaction
是相互排斥的。
视图和存储程序
的
语句中的
省略
DEFINER
和
SQL
SECURITY
子句
CREATE
。
转储文件在重新加载时会创建使用默认值
DEFINER
和
SQL
SECURITY
值的
对象
。
请参见
第24.6节“存储对象访问控制”
。
--skip-dump-rows
,
-d
不要转储表行。
--socket={
,
file_name
|pipe_name
}-S
{
file_name
|pipe_name
}
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
在输出中包含每个转储表的触发器。
默认情况下启用此选项;
使用
--skip-triggers
禁用它。
此选项允许
TIMESTAMP
在不同时区的服务器之间转储和重新加载列。
mysqlpump
将其连接时区设置为UTC并添加
SET
TIME_ZONE='+00:00'
到转储文件。
如果没有此选项,
TIMESTAMP
则会在源服务器和目标服务器本地的时区中转储和重新加载列,如果服务器位于不同的时区,则会导致值发生更改。
--tz-utc
还可以防止由于夏令时造成的变化。
默认情况下启用此选项;
使用
--skip-tz-utc
禁用它。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
将用户帐户转储为
CREATE
USER
和
GRANT
语句
形式的逻辑定义
。
用户定义存储在
mysql
系统数据库
的授权表中
。
默认情况下,
mysqlpump
不包括
mysql
数据库转储中
的授权表
。
要将授权表的内容转储为逻辑定义,请使用该
--users
选项并禁止所有数据库转储:
外壳> mysqlpump --exclude-databases=% --users
--version
,
-V
显示版本信息并退出。
定期显示进度指示器,该指示器提供有关表,行和其他对象的已完成和总数的信息。
默认情况下启用此选项;
使用
--skip-watch-progress
禁用它。
mysqlpump 有一组包含和排除选项,可以过滤多种对象类型,并提供对要转储的对象的灵活控制:
--include-databases
并
--exclude-databases
应用于数据库及其中的所有对象。
--include-tables
并
--exclude-tables
适用于表格。
除非给出了特定于触发器的选项,否则这些选项还会影响与表关联的触发器。
--include-triggers
并
--exclude-triggers
适用于触发器。
--include-routines
并
--exclude-routines
适用于存储过程和函数。
如果例程选项与存储过程名称匹配,则它还匹配存储的同名函数。
--include-events
并
--exclude-events
适用于Event Scheduler事件。
--include-users
并
--exclude-users
申请用户帐户。
任何包含或排除选项可以多次给出。 效果是附加的。 这些选项的顺序无关紧要。
每个包含和排除选项的值是相应对象类型的逗号分隔名称列表。 例如:
--exclude-数据库=测试,世界 --include桌=顾客,发票
对象名称中允许使用通配符:
%
匹配零个或多个字符的任何序列。
_
匹配任何单个字符。
例如,
--include-tables=t%,__tmp
匹配以...开头的所有表名
t
和以其结尾的所有五个字符的表名
tmp
。
对于用户,使用隐含主机解释未指定主机部分的名称
%
。
例如,
u1
并且
u1@%
是等价的。
这与MySQL中通常适用的等效性相同(请参见
第6.2.4节“指定帐户名”
)。
包含和排除选项互动如下:
默认情况下,没有包含或排除选项, mysqlpump会 转储所有数据库(在 mysqlpump限制中 注明某些例外 )。
如果在没有排除选项的情况下给出包含选项,则仅转储名为包含的对象。
如果在没有包含选项的情况下给出排除选项,则会转储所有对象,但命名为排除的对象除外。
如果给出包含和排除选项,则不会转储所有名为排除且未命名为包含的对象。 转储所有其他对象。
如果要转储多个数据库,则可以通过使用数据库名称限定对象名称来命名特定数据库中的表,触发器和例程。
以下命令转储数据库
db1
和
db2
,但不包括表
db1.t1
和
db2.t2
:
外壳> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2
以下选项提供了指定要转储的数据库的备用方法:
该
--all-databases
选项转储所有数据库(在
mysqlpump限制中
注明某些例外
)。
它相当于根本没有指定任何对象选项(默认的
mysqlpump
操作是转储所有内容)。
--include-databases=%
类似于
--all-databases
,但选择所有数据库进行转储,甚至是那些例外的数据库
--all-databases
。
该
--databases
选项使
mysqlpump
将所有名称参数视为要转储的数据库的名称。
它等同于
--include-databases
命名相同数据库
的
选项。
mysqlpump 可以使用并行来实现并发处理。 您可以选择数据库之间的并发(以同时转储多个数据库)和数据库内的并发(以同时转储给定数据库中的多个对象)。
默认情况下, mysqlpump 使用两个线程设置一个队列。 您可以创建其他队列并控制分配给每个队列的线程数,包括默认队列:
--default-parallelism=
指定用于每个队列的默认线程数。
如果没有这个选项,
N
N
则为2。
默认队列始终使用默认线程数。 除非另行指定,否则其他队列使用默认线程数。
--parallel-schemas=[
设置一个处理队列,用于转储命名的数据库,
N
:]db_list
db_list
并可选择指定队列使用的线程数。
db_list
是逗号分隔的数据库名称列表。
如果选项参数以...开头
,则队列使用
N
:N
线程。
否则,该
--default-parallelism
选项确定队列线程的数量。
该
--parallel-schemas
选项的
多个实例
创建多个队列。
允许数据库列表中的名称包含
过滤选项支持
的相同
%
和
_
通配符(请参阅
mysqlpump对象选择
)。
mysqlpump
使用默认队列来处理未使用
--parallel-schemas
选项
显式命名的任何数据库
,并在命令选项选择它们时转储用户定义。
通常,对于多个队列, mysqlpump 使用 队列 处理的数据库集之间的并行性,以同时转储多个数据库。 对于使用多个线程的队列, mysqlpump 在数据库中使用并行性,以同时从给定数据库转储多个对象。 可能会出现例外情况; 例如, mysqlpump 可能会在从服务器数据库中的对象列表中获取队列。
启用并行后,可以交错来自不同数据库的输出。
例如,
INSERT
并行转储的多个表中的语句可以交错;
声明不以任何特定顺序书写。
这不会影响重新加载,因为输出语句使用数据库名称限定对象名称,或者
USE
根据需要
在
语句
前面加上
语句。
并行性的粒度是单个数据库对象。 例如,不能使用多个线程并行转储单个表。
例子:
外壳> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
mysqlpump
建立一个队列来处理
db1
和
db2
另一个排队的过程
db3
,和默认队列来处理所有其他数据库。
所有队列都使用两个线程。
外壳>mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3
--default-parallelism=4
这与前一个示例相同,只是所有队列都使用四个线程。
外壳> mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3
队列
db1
和
db2
使用五个线程,队列
db3
使用三个线程,默认队列使用默认的两个线程。
作为特殊情况,有
--default-parallelism=0
和没有
--parallel-schemas
选项,
mysqlpump
作为单线程进程运行并且不创建任何队列。
mysqlpump
不转储
performance_schema
,
ndbinfo
或
sys
默认模式。
要转储其中任何一个,请在命令行中明确命名它们。
您也可以使用
--databases
或
--include-databases
选项
命名它们
。
mysqlpump
不会转储
INFORMATION_SCHEMA
架构。
mysqlpump
不会转储
InnoDB
CREATE
TABLESPACE
语句。
mysqlpump
使用
CREATE
USER
和
GRANT
语句
以逻辑形式转储用户帐户
(例如,当您使用
--include-users
或
--users
选项时)。
出于这个原因,转储
mysql
系统数据库默认情况下不包括含有用户定义的授权表:
user
,
db
,
tables_priv
,
columns_priv
,
procs_priv
,或
proxies_priv
。
要转储任何授权表,请为
mysql
数据库
命名,
后跟表名:
外壳> mysqlpump mysql user db ...
该 mysqlshow 客户可用来快速查看哪些数据库中存在,他们的表或表中的列或索引。
mysqlshow
为几个SQL
SHOW
语句
提供了命令行界面
。
请参见
第13.7.6节“显示语法”
。
直接使用这些语句可以获得相同的信息。
例如,您可以从
mysql
客户端程序
发出它们
。
像这样 调用 mysqlshow :
外壳> mysqlshow [options
] [db_name
[tbl_name
[col_name
]]]
如果没有给出数据库,则显示数据库名称列表。
如果没有给出表,则显示数据库中的所有匹配表。
如果未指定列,则会显示表中所有匹配的列和列类型。
输出仅显示您具有某些权限的那些数据库,表或列的名称。
如果最后的参数包含shell或SQL通配符(
*
,
?
,
%
,或
_
),只有那些通过通配符匹配的名称显示。
如果数据库名称包含任何下划线,那么应使用反斜杠对这些下划线进行转义(某些Unix shell需要两个)以获取正确的表或列的列表。
*
和
?
字符转换为SQL
%
和
_
通配符。
当您尝试显示
_
名称
中包含a的表的列时,这可能会导致一些混淆
,因为在这种情况下,
mysqlshow
仅显示与模式匹配的表名称。
通过
%
在命令行上
添加额外的
last作为单独的参数,
可以轻松解决此
问题。
mysqlshow
支持下面的选项,可以在命令行或在指定
[mysqlshow]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.14 mysqlshow选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
- 计数 | 显示每个表的行数 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--default-字符集 | 指定默认字符集 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--keys | 显示表索引 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--no-默认 | 不读选项文件 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
- 显示,表型 | 显示指示表类型的列 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
- 状态 | 显示有关每个表的额外信息 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 |
--help
,
-?
显示帮助消息并退出。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
显示每个表的行数。
对于非
MyISAM
表格,
这可能会很慢
。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o
程序退出时打印一些调试信息。
程序退出时打印调试信息,内存和CPU使用情况统计信息。
--default-character-set=
charset_name
使用
charset_name
作为默认字符集。
请参见
第10.14节“字符集配置”
。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqlshow
通常会读取
[client]
和
[mysqlshow]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
mysqlshow
也会读取
[client_other]
和
[mysqlshow_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
从服务器请求它用于基于密钥对的密码交换的RSA公钥。
此选项适用于使用通过身份
caching_sha2_password
验证插件进行
身份验证的帐户连接到服务器的客户端
。
对于此类帐户的连接,除非有请求,否则服务器不会将公钥发送到客户端。
对于未使用该插件进行身份验证的帐户,将忽略该选项。
如果不需要基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
--keys
,
-k
显示表索引。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqlshow
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqlshow
找不到它,
请指定此选项
。
看到
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
--server-public-key-path=
给定并指定了有效的公钥文件,则优先于
file_name
--get-server-public-key
。
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
--show-table-type
,
-t
显示指示表类型的列,如
SHOW
FULL
TABLES
。
类型是
BASE TABLE
或
VIEW
。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
看到
--ssl-
第6.5节“FIPS支持”
。
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--status
,
-i
显示有关每个表的额外信息。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。 可以多次使用此选项来增加信息量。
--version
,
-V
显示版本信息并退出。
mysqlslap 是一个诊断程序,旨在模拟MySQL服务器的客户端负载并报告每个阶段的时间。 它就像多个客户端正在访问服务器一样。
像这样 调用 mysqlslap :
外壳> mysqlslap [options
]
某些选项,例如
--create
或
--query
允许您指定包含SQL语句的字符串或包含语句的文件。
如果指定文件,则默认情况下每行必须包含一个语句。
(也就是说,隐式语句分隔符是换行符。)使用该
--delimiter
选项指定不同的分隔符,这使您可以指定跨越多行的语句或在一行上放置多个语句。
您不能在文件中包含注释;
mysqlslap
不理解它们。
mysqlslap 分三个阶段运行:
创建架构,表以及可选的任何存储程序或数据以用于测试。 此阶段使用单个客户端连接。
运行负载测试。 此阶段可以使用许多客户端连接。
清理(如果指定,则断开连接,删除表)。 此阶段使用单个客户端连接。
例子:
提供您自己的创建和查询SQL语句,每个查询50个客户端,每个查询200个(在一行中输入命令):
mysqlslap --delimiter =“;” --create =“CREATE TABLE a(b int); INSERT IN TO VALUES(23)” --query =“SELECT * FROM a”--concurrency = 50 --iterations = 200
让
mysqlslap
使用包含两
INT
列和三
VARCHAR
列
的表构建查询SQL语句
。
使用五个客户端,每个查询20次。
不要创建表或插入数据(即,使用先前测试的模式和数据):
mysqlslap --concurrency = 5 --iterations = 20 --number-int-cols = 2 --number-char-cols = 3 --auto-产生-SQL
告诉程序从指定的文件加载create,insert和query SQL语句,其中该
create.sql
文件有多个由(由)分隔的表创建语句
';'
和多个insert语句
';'
。
该
--query
文件将有多个分隔的查询
';'
。
运行所有load语句,然后使用五个客户端(每个五次)运行查询文件中的所有查询:
mysqlslap --concurrency = 5 --iterations = 5 --query = query.sql --create = create.sql 对齐和美化--delimiter = “;”
mysqlslap
支持下面的选项,可以在命令行或在指定
[mysqlslap]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.15 mysqlslap选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--auto-产生-SQL | 在文件中未提供或使用命令选项时自动生成SQL语句 | ||
--auto-产生-SQL插件自动增量 | 将AUTO_INCREMENT列添加到自动生成的表中 | ||
--auto-生成-SQL执行数 | 指定自动生成的查询数 | ||
--auto-生成-SQL-GUID-主 | 将基于GUID的主键添加到自动生成的表 | ||
--auto-生成-SQL负载型 | 指定测试负载类型 | ||
--auto-生成-SQL二次索引 | 指定要添加到自动生成的表的二级索引数 | ||
--auto-产生-SQL唯一查询号码 | 为自动测试生成多少个不同的查询。 | ||
--auto-产生-SQL唯一写入数 | 为--auto-generate-sql-write-number生成多少个不同的查询 | ||
--auto-产生-SQL写号 | 每个线程要执行多少行插入 | ||
- 承诺 | 提交前要执行的语句数。 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | ||
--concurrency | 发出SELECT语句时要模拟的客户端数 | ||
- 创建 | 包含用于创建表的语句的文件或字符串 | ||
--create-模式 | 用于运行测试的模式 | ||
--csv | 以逗号分隔值格式生成输出 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
对齐和美化--delimiter | 在SQL语句中使用的分隔符 | ||
- 分离 | 在每个N语句之后分离(关闭并重新打开)每个连接 | ||
--enable-明文-插件 | 启用明文身份验证插件 | ||
- 发动机 | 用于创建表的存储引擎 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--iterations | 运行测试的次数 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--no-默认 | 不读选项文件 | ||
- 没有下降 | 不要删除在测试运行期间创建的任何模式 | ||
--number-char型的cols | 如果指定了--auto-generate-sql,则使用的VARCHAR列数 | ||
--number-INT-的cols | 如果指定了--auto-generate-sql,则使用的INT列数 | ||
--number-的查询 | 将每个客户端限制为大约此数量的查询 | ||
--only打印 | 不要连接到数据库。 mysqlslap只打印它本来会做的事情 | ||
- 密码 | 连接到服务器时使用的密码 | ||
- 管 | 在Windows上,使用命名管道连接到服务器 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--post查询 | 包含在测试完成后要执行的语句的文件或字符串 | ||
--post系统 | 测试完成后使用system()执行的字符串 | ||
- 事先查询 | 包含在运行测试之前要执行的语句的文件或字符串 | ||
- 事先系统 | 在运行测试之前使用system()执行的字符串 | ||
--print-默认 | 打印默认选项 | ||
- 协议 | 要使用的连接协议 | ||
--query | 包含用于检索数据的SELECT语句的文件或字符串 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
- 无声 | 静音模式 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--sql模式 | 为客户端会话设置SQL模式 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 详细模式 | ||
- 版 | 显示版本信息并退出 |
--help
,
-?
显示帮助消息并退出。
--auto-generate-sql
,
-a
在文件中未提供或使用命令选项时自动生成SQL语句。
--auto-generate-sql-add-autoincrement
AUTO_INCREMENT
向自动生成的表
添加
列。
--auto-generate-sql-execute-number=
N
指定自动生成的查询数。
--auto-generate-sql-guid-primary
将基于GUID的主键添加到自动生成的表。
--auto-generate-sql-load-type=
type
指定测试负载类型。
允许的值是
read
(扫描表),
write
(插入表格),
key
(读取主键),
update
(更新主键)或
mixed
(半插入,半扫描选择)。
默认是
mixed
。
--auto-generate-sql-secondary-indexes=
N
指定要添加到自动生成的表的二级索引数。 默认情况下,不添加任何内容。
--auto-generate-sql-unique-query-number=
N
为自动测试生成多少个不同的查询。
例如,如果运行
key
执行1000次选择
的
测试,则可以使用值为1000的此选项运行1000个唯一查询,或使用值50来执行50个不同的选择。
默认值为10。
--auto-generate-sql-unique-write-number=
N
要为其生成多少个不同的查询
--auto-generate-sql-write-number
。
默认值为10。
--auto-generate-sql-write-number=
N
要执行多少行插入。 默认值为100。
提交前要执行的语句数。 默认值为0(不进行提交)。
--compress
,
-C
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
--concurrency=
,
N
-c
N
要模拟的并行客户端数。
包含用于创建表的语句的文件或字符串。
运行测试的模式。
如果
--auto-generate-sql
还给出
了该
选项,则
mysqlslap
会在测试运行结束时删除模式。
为避免这种情况,请同时使用该
--no-drop
选项。
以逗号分隔值格式生成输出。 输出将转到指定的文件,如果没有给出文件,则转到标准输出。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/mysqlslap.trace
程序退出时打印一些调试信息。
--debug-info
,
-T
程序退出时打印调试信息,内存和CPU使用情况统计信息。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqlslap
通常会读取
[client]
和
[mysqlslap]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
mysqlslap
也会读取
[client_other]
和
[mysqlslap_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--delimiter=
,
str
-F
str
用于文件中提供的SQL语句或使用命令选项的分隔符。
在每个
N
语句
后分离(关闭并重新打开)每个连接
。
默认值为0(连接未分离)。
启用
mysql_clear_password
明文身份验证插件。
(参见
第6.4.1.4节“客户端明文可插拔认证”
。)
--engine=
,
engine_name
-e
engine_name
用于创建表的存储引擎。
从服务器请求它用于基于密钥对的密码交换的RSA公钥。
此选项适用于使用通过身份
caching_sha2_password
验证插件进行
身份验证的帐户连接到服务器的客户端
。
对于此类帐户的连接,除非有请求,否则服务器不会将公钥发送到客户端。
对于未使用该插件进行身份验证的帐户,将忽略该选项。
如果不需要基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--host=
,
host_name
-h
host_name
连接到给定主机上的MySQL服务器。
--iterations=
,
N
-i
N
运行测试的次数。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
防止 mysqlslap 删除它在测试运行期间创建的任何模式。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--number-char-cols=
,
N
-x
N
指定
VARCHAR
要使用
的
列
数
--auto-generate-sql
。
--number-int-cols=
,
N
-y
N
指定
INT
要使用
的
列
数
--auto-generate-sql
。
将每个客户端限制为大约这么多查询。
查询计数考虑了语句分隔符。
例如,如果
按如下方式
调用
mysqlslap
,
;
则会识别分隔符,以便查询字符串的每个实例都计为两个查询。
结果,插入了5行(不是10行)。
外壳>mysqlslap --delimiter=";" --number-of-queries=10
--query="use test;insert into t values(null)"
不要连接到数据库。 mysqlslap 只打印它本来会做的事情。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqlslap
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
--pipe
,
-W
在Windows上,使用命名管道连接到服务器。 仅当服务器支持命名管道连接时,此选项才适用。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqlslap
未找到它,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接的TCP / IP端口号。
包含要在测试完成后执行的语句的文件或字符串。 此计算不会计入执行时间。
system()
测试完成后
要使用的字符串
。
此计算不会计入执行时间。
包含在运行测试之前要执行的语句的文件或字符串。 此计算不会计入执行时间。
system()
在运行测试之前
要执行的字符串
。
此计算不会计入执行时间。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
--query=
,
value
-q
value
包含
SELECT
用于检索数据
的
语句
的文件或字符串
。
在MySQL 8.0.3中删除了此选项。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。 仅当服务器支持共享内存连接时,此选项才适用。
--silent
,
-s
静音模式。 没有输出。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
设置客户端会话的SQL模式。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--user=
,
user_name
-u
user_name
连接到服务器时使用的MySQL用户名。
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。 可以多次使用此选项来增加信息量。
--version
,
-V
显示版本信息并退出。
本节介绍执行各种实用程序操作的管理程序和程序。
ibd2sdi
是一个用于
从
表空间文件中
提取
序列化字典信息
(SDI)
的实用程序
InnoDB
。
SDI数据存在于所有持久
InnoDB
表空间文件中。
ibd2sdi
可以在
每个
表的文件
表
空间文件(
*.ibd
文件),
通用表空间
文件(
*.ibd
文件),
系统表空间
文件(
ibdata*
文件)和数据字典表空间(
mysql.ibd
)上运行。
它不支持与临时表空间或撤消表空间一起使用。
ibd2sdi
可以在运行时或服务器脱机时使用。
在
与SDI相关的
DDL
操作,
ROLLBACK
操作和撤消日志清除操作期间,当
ibd2sdi
无法读取存储在表空间中的SDI数据
时,可能会有很短的时间间隔
。
ibd2sdi 从指定的表空间执行未提交的SDI读取。 不访问重做日志和撤消日志。
像这样 调用 ibd2sdi 实用程序:
外壳> ibd2sdi [options
] file_name1
[file_name2 file_name3 ...
]
ibd2sdi
支持多文件表空间,如
InnoDB
系统表空间,但一次不能在多个表空间上运行。
对于多文件表空间,请指定每个文件:
外壳> ibd2sdi ibdata1 ibdata2
必须按升序页码的顺序指定多文件表空间的文件。 如果两个连续文件具有相同的空间ID,则后一个文件必须以前一个文件的最后一个页码+ 1开头。
ibd2sdi
以
JSON
格式
输出SDI(包含id,type和data字段)
。
ibd2sdi 支持以下选项:
--help
,
-h
显示命令行帮助。
外壳> ibd2sdi --help
用法:./ ib2sdi [-v] [-c <严格检查>] [-d <转储文件名>] [-n] filename1 [文件名]
有关使用提示,请参阅http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html。
-h, - help显示此帮助并退出。
-v, - version显示版本信息并退出。
- #, - debug [= name]输出调试日志。看到
http://dev.mysql.com/doc/refman/8.0/en/dbug-package.html
-d, - dump-file = name
将表空间SDI转储到用户传递的文件中。
没有文件名,它将默认为stdout
-s, - skip-data跳过从SDI记录中检索数据。仅检索ID
并输入。
-i, - id =#检索与用户传递的id匹配的SDI记录。
-t, - type =#检索与传递的类型匹配的SDI记录
用户。
-c, - strict-check = name
用户指定严格校验和算法。
允许的值是innodb,crc32,none。
-n, - no-check忽略校验和验证。
-p, - pretty相当格式化SDI输出。如果不是,则SDI不会
人类可读,但尺寸较小
(默认为on;使用--skip-pretty禁用。)
变量(--variable-name = value)
和布尔选项{FALSE | TRUE}值(读取选项后)
--------------------------------- ----------------- -----------------------
debug(无默认值)
dump-file(无默认值)
skip-data FALSE
id 0
输入0
严格检查crc32
不检查错误
非常正确
--version
,
-v
显示MySQL版本信息。
外壳> ibd2sdi --version
适用于Linux on x86_64的ibd2sdi Ver 8.0.3-dmr(源代码分发)
--debug[=
,
debug_options
]-#
[
debug_options
]
打印调试日志。 有关调试选项,请参见 第29.5.4节“DBUG包” 。
外壳> ibd2sdi --debug=d:t /tmp/ibd2sdi.trace
--dump-file=
,
-d
将序列化字典信息(SDI)转储到指定的转储文件中。
如果未指定转储文件,则转储表空间SDI
stdout
。
外壳> ibd2sdi --dump-file=file_name
../data/test/t1.ibd
--skip-data
,
-s
跳过的检索
data
字段值从串行化字典信息(SDI),并且仅检索
id
和
type
字段值,它是对于记录SDI主键。
外壳> ibd2sdi --skip-data ../data/test/t1.ibd
[ “ibd2sdi”
,
{
“类型”:1,
“id”:330
}
,
{
“类型”:2,
“id”:7
}
]
--id=
,
#
-i
#
检索与指定的表或表空间对象id匹配的序列化字典信息(SDI)。
对象id对于对象类型是唯一的。
表和表空间对象ID也可以在
和
数据字典表
的
id
列中
找到
。
有关数据字典表的信息,请参见
第14.1节“数据字典模式”
。
mysql.tables
mysql.tablespace
外壳> ibd2sdi --id=7 ../data/test/t1.ibd
[ “ibd2sdi”
,
{
“类型”:2,
“id”:7,
“宾语”:
{
“mysqld_version_id”:80003,
“dd_version”:80003,
“sdi_version”:1,
“dd_object_type”:“表空间”,
“dd_object”:{
“name”:“test / t1”,
“评论”:“”,
“选项”:“”,
“se_private_data”:“flags = 16417; id = 2; server_version = 80003; space_version = 1;”,
“引擎”:“InnoDB”,
“档案”:[
{
“ordinal_position”:1,
“filename”:“。/ test / t1.ibd”,
“se_private_data”:“id = 2;”
}
]
}
}
}
]
--type=
,
#
-t
#
检索与指定对象类型匹配的序列化字典信息(SDI)。 SDI是为table(type = 1)和tablespace(type = 2)对象提供的。
外壳> ibd2sdi --type=2 ../data/test/t1.ibd
[ “ibd2sdi”
,
{
“类型”:2,
“id”:7,
“宾语”:
{
“mysqld_version_id”:80003,
“dd_version”:80003,
“sdi_version”:1,
“dd_object_type”:“表空间”,
“dd_object”:{
“name”:“test / t1”,
“评论”:“”,
“选项”:“”,
“se_private_data”:“flags = 16417; id = 2; server_version = 80003; space_version = 1;”,
“引擎”:“InnoDB”,
“档案”:[
{
“ordinal_position”:1,
“filename”:“。/ test / t1.ibd”,
“se_private_data”:“id = 2;”
}
]
}
}
}
]
--strict-check
,
-c
指定严格校验和算法,用于验证读取的页面的校验和。
选项包括
innodb
,
crc32
,和
none
。
在此示例中,
innodb
指定
了
校验和算法
的严格版本
:
外壳> ibd2sdi --strict-check=innodb ../data/test/t1.ibd
在这个例子中,严格的版本
crc32
指定
校验和算法:
外壳> ibd2sdi -c crc32 ../data/test/t1.ibd
如果不指定
--strict-check
选项,验证对不严格执行
innodb
,
crc32
并
none
校验。
--no-check
,
-n
跳过已读取的页面的校验和验证。
外壳> ibd2sdi --no-check ../data/test/t1.ibd
--pretty
,
-p
以JSON漂亮的打印格式输出SDI数据。
默认情况下启用。
如果禁用,SDI不是人类可读的,但尺寸较小。
使用
--skip-pretty
禁用。
外壳> ibd2sdi --skip-pretty ../data/test/t1.ibd
innochecksum
打印
InnoDB
文件的
校验和
。
此工具读取
InnoDB
表空间文件,计算每个页面的校验和,将计算的校验和与存储的校验和进行比较,并报告不匹配,这表示页面已损坏。
它最初是为了在停电后加快验证表空间文件的完整性而开发的,但也可以在文件复制后使用。
由于校验和不匹配导致
InnoDB
故意关闭正在运行的服务器,因此最好使用此工具而不是等待生产中的服务器遇到损坏的页面。
innochecksum
不能用于服务器已打开的表空间文件。
对于此类文件,您应该使用
CHECK TABLE
检查表空间中的表。
尝试
在服务器已打开的表空间上
运行
innochecksum
将导致
“
无法锁定文件
”
错误。
如果找到校验和不匹配,通常会从备份恢复表空间或启动服务器并尝试使用 mysqldump 对表空间中的表进行备份。
像这样 调用 innochecksum :
外壳> innochecksum [options
] file_name
innochecksum 支持以下选项。 对于引用页码的选项,数字从零开始。
--help
,
-?
显示命令行帮助。 用法示例:
外壳> innochecksum --help
--info
,
-I
同义词
--help
。
显示命令行帮助。
用法示例:
外壳> innochecksum --info
--version
,
-V
显示版本信息。 用法示例:
外壳> innochecksum --version
--verbose
,
-v
详细模式;
每五秒钟将一个进度指示器打印到日志文件中。
要打印进度指示器,必须使用指定日志文件
--log option
。
要打开
verbose
模式,请运行:
外壳> innochecksum --verbose
要关闭详细模式,请运行:
外壳> innochecksum --verbose=FALSE
该
--verbose
选项与
--log
选项可以同时指定。
例如:
外壳> innochecksum --verbose --log=/var/lib/mysql/test/logtest.txt
要在日志文件中找到进度指示器信息,您可以执行以下搜索:
外壳> cat ./logtest.txt | grep -i "okay"
日志文件中的进度指示器信息显示类似于以下内容:
第1663页好的:完成2.863% 第8447页好的:完成了14.537% 第13695页好的:完成了23.568% 第18815页好的:完成了32.379% 第23039页好的:完成39.648% 第28351页好的:完成了48.789% 第33023页好的:完成了56.828% 第37951页好的:完成了65.308% 第44095页好的:完成了75.881% 第49407页好的:完成了85.022% 第54463页好的:93.722%完成 ...
--count
,
-c
打印文件中页数的计数并退出。 用法示例:
外壳> innochecksum --count ../data/test/tab1.ibd
--start-page=
,
num
-s
num
从此页码开始。 用法示例:
外壳> innochecksum --start-page=600 ../data/test/tab1.ibd
要么:
外壳> innochecksum -s 600 ../data/test/tab1.ibd
--end-page=
,
num
-e
num
在此页码结束。 用法示例:
外壳> innochecksum --end-page=700 ../data/test/tab1.ibd
要么:
外壳> innochecksum --p 700 ../data/test/tab1.ibd
--page=
,
num
-p
num
仅检查此页码。 用法示例:
外壳> innochecksum --page=701 ../data/test/tab1.ibd
--strict-check
,
-C
指定严格的校验和算法。
选项包括
innodb
,
crc32
,和
none
。
在此示例中,
innodb
指定
了
校验和算法:
外壳> innochecksum --strict-check=innodb ../data/test/tab1.ibd
在此示例中,
crc32
指定
了
校验和算法:
外壳> innochecksum -C crc32 ../data/test/tab1.ibd
以下条件适用:
如果您未指定该
--strict-check
选项,则
innochecksum将对其
进行验证
innodb
,
crc32
并且
none
。
如果指定该
none
选项,则仅
none
允许
生成的校验和
。
如果指定该
innodb
选项,则仅
innodb
允许
生成的校验和
。
如果指定该
crc32
选项,则仅
crc32
允许
生成的校验和
。
--no-check
,
-n
重写校验和时忽略校验和验证。
此选项仅可与
innochecksum
--write
选项
一起使用
。
如果
--write
未指定选项,
innochecksum
将终止。
在此示例中,将
innodb
重写校验和以替换无效的校验和:
外壳> innochecksum --no-check --write innodb ../data/test/tab1.ibd
--allow-mismatches
,
-a
在
innochecksum
终止
之前允许的最大校验和不匹配数
。
默认设置为0. if
--allow-mismatches=
N
,where
,
N
>=0N
允许不匹配且
innochecksum
终止于
。
当
N
+1--allow-mismatches
设置为0时,
innochecksum
在第一个校验和不匹配时终止。
在此示例中,将
innodb
重写
现有
校验和以设置
--allow-mismatches
为1。
外壳> innochecksum --allow-mismatches=1 --write innodb ../data/test/tab1.ibd
随着
--allow-mismatches
设置为1,如果在600页和1000页文件不匹配另一个在700页,校验为0-599和601-699页进行更新。
因为
--allow-mismatches
设置为1,校验和容忍第一个不匹配并在第二个不匹配时终止,使页面600和页面700-999保持不变。
--write=
,
name
-w
num
重写校验和。
重写无效校验和时,该
--no-check
选项必须与
--write
选项
一起使用
。
该
--no-check
选项告诉
innochecksum
忽略无效校验和的验证。
--no-check
如果当前校验和有效,则
不必指定该
选项。
使用该
--write
选项
时必须指定算法
。
该
--write
选项的
可能值为
:
innodb
:使用原始算法从软件计算的校验和
InnoDB
。
crc32
:使用
crc32
算法
计算的校验和
,可能使用硬件辅助完成。
none
:一个常数。
该
--write
选项将整个页面重写为磁盘。
如果新校验和与现有校验和相同,则新校验和不会写入磁盘以最小化I / O.
innochecksum
在使用该
--write
选项
时获得独占锁定
。
在此示例中,为以下
crc32
内容编写校验和
tab1.ibd
:
外壳> innochecksum -w crc32 ../data/test/tab1.ibd
在此示例中,将
crc32
重写校验和以替换无效的
crc32
校验和:
外壳> innochecksum --no-check --write crc32 ../data/test/tab1.ibd
--page-type-summary
,
-S
显示表空间中每种页面类型的计数。 用法示例:
外壳> innochecksum --page-type-summary ../data/test/tab1.ibd
示例输出
--page-type-summary
:
文件:: ../数据/测试/ tab1.ibd ================页面类型摘要============== #PAGE_COUNT PAGE_TYPE =============================================== 2索引页面 0撤消日志页面 1 Inode页面 0插入缓冲区空闲列表页面 2新分配的页面 1插入缓冲区位图 0系统页面 0交易系统页面 1文件空间标题 0范围描述符页面 0 BLOB页面 0压缩的BLOB页面 0其他类型的页面 =============================================== 附加信息: 撤消页面类型:0插入,0更新,0其他 撤消页面状态:0活动,0缓存,0 to_free,0 to_purge,0准备,0其他
--page-type-dump
,
-D
将表空间中每个页面的页面类型信息转储到
stderr
或
stdout
。
用法示例:
外壳> innochecksum --page-type-dump=/tmp/a.txt ../data/test/tab1.ibd
--log
,
-l
innochecksum
工具的
日志输出
。
必须提供日志文件名。
日志输出包含每个表空间页面的校验和值。
对于未压缩的表,还提供了LSN值。
在
--log
替换
--debug
选项,这是早期版本中提供。
用法示例:
外壳> innochecksum --log=/tmp/log.txt ../data/test/tab1.ibd
要么:
外壳> innochecksum -l /tmp/log.txt ../data/test/tab1.ibd
指定
-
从标准输入读取
的
选项。
如果在
预期
“
从标准读取
”
-
时缺少
该
选项
,
innochecksum
将输出
innochecksum
使用信息,表明
省略
了
“
-
”
选项。
示例用法:
外壳> cat t1.ibd | innochecksum -
在此示例中,
innochecksum
将
crc32
校验和算法
写入
a.ibd
而不更改原始
t1.ibd
文件。
外壳> cat t1.ibd | innochecksum --write=crc32 - > a.ibd
以下示例演示如何
在多个用户定义的表空间文件(
文件)
上
运行
innochecksum
.ibd
。
对
“
test
”
数据库
中的
所有tablespace(
)文件
运行
innochecksum
:
.ibd
shell> innochecksum ./data/test/*.ibd
对于
文件名以
“
t
”
开头
的所有表空间文件(
.ibd
文件)
运行
innochecksum
:
shell> innochecksum ./data/test/t*.ibd
对
目录
中的
所有表空间文件(
文件)
运行
innochecksum
:
.ibd
data
shell> innochecksum ./data/*/*.ibd
Windows操作系统不支持在多个用户定义的表空间文件上 运行 innochecksum ,因为Windows shell(如 cmd.exe) 不支持glob模式扩展。 在Windows系统上, 必须为每个用户定义的表空间文件单独运行 innochecksum 。 例如:
cmd> innochecksum.exe t1.ibd cmd> innochecksum.exe t2.ibd cmd> innochecksum.exe t3.ibd
默认情况下,只有一个
InnoDB
系统表空间文件(
ibdata1
),但可以使用该
innodb_data_file_path
选项
定义系统表空间的多个文件
。
在下面的例子中,三个文件系统表空间使用的定义
innodb_data_file_path
选项:
ibdata1
,
ibdata2
,和
ibdata3
。
外壳> ./bin/mysqld --no-defaults --innodb-data-file-path="ibdata1:10M;ibdata2:10M;ibdata3:10M:autoextend"
这三个文件(
ibdata1
,
ibdata2
和
ibdata3
)构成一个逻辑系统表空间。
要
在形成一个逻辑系统表空间的多个文件上
运行
innochecksum
,
innochecksum
需要
-
选择从标准输入读取表空间文件,这相当于连接多个文件以创建一个文件。
对于上面提供的示例,将使用以下
innochecksum
命令:
shell> cat ibdata * | innochecksum -
有关 “ - ” 选项的 更多信息, 请参阅 innochecksum 选项信息 。
Windows操作系统不支持在同一表空间中的多个文件上 运行 innochecksum ,因为Windows shell(如 cmd.exe) 不支持glob模式扩展。 在Windows系统上, 必须为每个系统表空间文件单独运行 innochecksum 。 例如:
cmd> innochecksum.exe ibdata1 cmd> innochecksum.exe ibdata2 cmd> innochecksum.exe ibdata3
myisam_ftdump
显示有关
表中
FULLTEXT
索引的
信息
MyISAM
。
它
MyISAM
直接
读取
索引文件,因此必须在表所在的服务器主机上运行。
在使用
myisam_ftdump
之前
,请确保
FLUSH TABLES
在服务器运行时首先
发出
语句。
myisam_ftdump 扫描并转储整个索引,这不是特别快。 另一方面,单词的分布不经常变化,因此不需要经常运行。
像这样 调用 myisam_ftdump :
外壳> myisam_ftdump [options
] tbl_name
index_num
该
tbl_name
参数应该是一个名称
MyISAM
表。
您还可以通过命名其索引文件(带有
.MYI
后缀
的文件
)
来指定表
。
如果未
在表文件所在的目录中
调用
myisam_ftdump
,则表或索引文件名必须以表的数据库目录的路径名开头。
索引号以0开头。
示例:假设
test
数据库包含名为
mytexttable
具有以下定义
的表
:
CREATE TABLE mytexttable ( id INT NOT NULL, txt TEXT NOT NULL, PRIMARY KEY(id), FULLTEXT(txt) )ENGINE = MyISAM;
索引
id
为索引0,
FULLTEXT
索引
txt
为索引1.如果您的工作目录是
test
数据库目录,
请
按如下方式
调用
myisam_ftdump
:
外壳> myisam_ftdump mytexttable 1
如果是
test
数据库目录
的路径名
/usr/local/mysql/data/test
,则还可以使用该路径名指定表名参数。
如果您不在
数据库目录中
调用
myisam_ftdump
,
这将非常有用
:
外壳> myisam_ftdump /usr/local/mysql/data/test/mytexttable 1
您可以使用 myisam_ftdump 按类似于Unix的系统上的出现频率生成索引条目列表:
外壳> myisam_ftdump -c mytexttable 1 | sort -r
在Windows上,使用:
外壳> myisam_ftdump -c mytexttable 1 | sort /R
myisam_ftdump 支持以下选项:
该
myisamchk的
程序获取信息有关数据库表或检查,修理,或优化他们。
myisamchk的
工作与
MyISAM
表(有表
.MYD
和
.MYI
文件存储数据和索引)。
您还可以使用
CHECK TABLE
和
REPAIR
TABLE
语句来检查和修复
MyISAM
表。
请参见
第13.7.3.2节“检查表语法”
和
第13.7.3.5节“修复表语法”
。
不支持 将 myisamchk 与分区表一起 使用 。
最好在执行表修复操作之前备份表; 在某些情况下,操作可能会导致数据丢失。 可能的原因包括但不限于文件系统错误。
像这样 调用 myisamchk :
外壳> myisamchk [options
] tbl_name
...
在
options
你想要的指定
myisamchk的
做。
它们将在以下部分中介绍。
您还可以通过调用
myisamchk --help
获取选项列表
。
没有选项, myisamchk 只是将您的表检查为默认操作。 要获取更多信息或告知 myisamchk 采取纠正措施,请按照以下讨论中的说明指定选项。
tbl_name
是要检查或修复的数据库表。
如果
在数据库目录以外的其他位置
运行
myisamchk
,则必须指定数据库目录的路径,因为
myisamchk
不知道数据库的位置。
实际上,
myisamchk
实际上并不关心您正在处理的文件是否位于数据库目录中。
您可以将与数据库表对应的文件复制到其他位置,并在那里对它们执行恢复操作。
如果您愿意,
可以在
myisamchk
命令行
上命名几个表
。
您还可以通过命名其索引文件(带有
.MYI
后缀
的文件
)
来指定表
。
这使您可以使用模式指定目录中的所有表
*.MYI
。
例如,如果您在数据库目录中,则可以检查
MyISAM
该目录中的
所有
表,如下所示:
外壳> myisamchk *.MYI
如果您不在数据库目录中,则可以通过指定目录的路径来检查那里的所有表:
外壳> myisamchk /path/to/database_dir/
*.MYI
您甚至可以通过指定带有MySQL数据目录路径的通配符来检查所有数据库中的所有表:
外壳> myisamchk /path/to/datadir/*/*
.MYI
快速检查所有
MyISAM
表
的推荐方法
是:
外壳> myisamchk --silent --fast /path/to/datadir/*/*
.MYI
如果要检查所有
MyISAM
表并修复任何已损坏的表,可以使用以下命令:
外壳>myisamchk --silent --force --fast --update-state \
--key_buffer_size=64M --myisam_sort_buffer_size=64M \
--read_buffer_size=1M --write_buffer_size=1M \
/path/to/datadir/*/*
.MYI
此命令假定您有超过64MB的可用空间。 有关使用 myisamchk进行 内存分配的更多信息 ,请参见 第4.6.4.6节“myisamchk内存使用情况” 。
有关使用 myisamchk的 其他信息 ,请参见 第7.6节“MyISAM表维护和崩溃恢复” 。
在运行 myisamchk 时,必须确保没有其他程序正在使用这些表 。 这样做的最有效方法是在运行 myisamchk时 关闭MySQL服务器 ,或锁定 myisamchk 正在使用的 所有表 。
否则,当您运行 myisamchk时 ,它可能会显示以下错误消息:
警告:客户端正在使用或未正确关闭表
这意味着您正在尝试检查已由另一个
尚未关闭文件的
程序(例如
mysqld
服务器)
更新的表,
或者在没有正确关闭文件的情况下已经死亡的表,这有时会导致损坏一个或多个
MyISAM
表。
如果
mysqld
正在运行,则必须强制它通过使用刷新仍在内存中缓冲的任何表修改
FLUSH TABLES
。
然后,您应确保在运行
myisamchk
时没有人使用这些表
但是,避免此问题的最简单方法是使用
CHECK
TABLE
而不是
myisamchk
来检查表。
请参见
第13.7.3.2节“检查表语法”
。
myisamchk
支持以下选项,可以在命令行或
[myisamchk]
选项文件组中指定。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.16 myisamchk选项
格式 | 描述 |
---|---|
- 分析 | 分析关键值的分布 |
--backup | 将.MYD文件备份为file_name-time.BAK |
--block搜索 | 找到给定偏移量的块所属的记录 |
- 校验 | 检查表格是否有错误 |
--check-唯一改变的 | 仅检查自上次检查后已更改的表 |
--correct校验和 | 更正表的校验和信息 |
--data文件长度 | 数据文件的最大长度(当数据文件已满时重新创建数据文件) |
--debug | 写调试日志 |
--decode_bits | Decode_bits |
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 |
--defaults文件 | 只读命名选项文件 |
--defaults基团的后缀 | 选项组后缀值 |
- 描述 | 打印有关表格的一些描述性信息 |
--extend检查 | 执行非常彻底的表检查或修复,尝试从数据文件中恢复每个可能的行 |
- 快速 | 仅检查未正确关闭的表 |
- 力 | 如果myisamchk在表中发现任何错误,请自动执行修复操作 |
- 力 | 覆盖旧的临时文件。 用于-r或-o选项 |
--ft_max_word_len | FULLTEXT索引的最大字长 |
--ft_min_word_len | FULLTEXT索引的最小字长 |
--ft_stopword_file | 使用此文件中的停用词而不是内置列表 |
- 救命 | 显示帮助消息并退出 |
- 救命 | 显示帮助消息并退出 |
- 信息 | 打印有关已检查表的信息统计信息 |
--key_buffer_size | 用于MyISAM表的索引块的缓冲区大小 |
--keys使用的 | 一个位值,指示要更新的索引 |
--max记录长度 | 如果myisamchk无法分配内存来保存它们,则跳过大于给定长度的行 |
--medium检查 | 执行比--extend-check操作更快的检查 |
--myisam_block_size | 用于MyISAM索引页的块大小 |
--myisam_sort_buffer_size | 在执行REPAIR时或使用CREATE INDEX或ALTER TABLE创建索引时对索引进行排序时分配的缓冲区 |
--no-默认 | 不读选项文件 |
--parallel-恢复 | 使用与-r和-n相同的技术,但使用不同的线程(beta)并行创建所有键 |
--print-默认 | 打印默认选项 |
- 快 | 通过不修改数据文件实现更快的修复。 |
--read_buffer_size | 执行顺序扫描的每个线程为其扫描的每个表分配一个此大小的缓冲区 |
- 只读 | 不要将表标记为已选中 |
- 恢复 | 做一个可以解决几乎任何问题的修复,除了非唯一的唯一键 |
--safe-恢复 | 使用旧的恢复方法进行修复,该方法按顺序读取所有行,并根据找到的行更新所有索引树 |
--set-自动递增 | 强制AUTO_INCREMENT编号以使新记录以给定值开始 |
--set-整理 | 指定用于排序表索引的排序规则 |
- 无声 | 静音模式 |
--sort_buffer_size | 在执行REPAIR时或使用CREATE INDEX或ALTER TABLE创建索引时对索引进行排序时分配的缓冲区 |
--sort指数 | 以高 - 低顺序对索引树块进行排序 |
--sort_key_blocks | sort_key_blocks |
--sort-记录 | 根据特定索引对记录进行排序 |
--sort-恢复 | 强制myisamchk使用排序来解析密钥,即使临时文件非常大 |
--stats_method | 指定MyISAM索引统计信息收集代码应如何处理NULL |
--tmpdir | 用于存储临时文件的目录 |
--unpack | 打开包含myisampack的表格 |
--update状态 | 将信息存储在.MYI文件中,以指示何时检查表以及表是否崩溃 |
--verbose | 详细模式 |
- 版 | 显示版本信息并退出 |
--write_buffer_size | 写缓冲区大小 |
本节中描述的选项可用于 myisamchk 执行的任何类型的表维护操作 。 此后面的部分描述了仅适用于特定操作的选项,例如表检查或修复。
--help
,
-?
显示帮助消息并退出。 选项按操作类型分组。
--HELP
,
-H
显示帮助消息并退出。 选项显示在单个列表中。
--debug=
,
debug_options
-#
debug_options
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/myisamchk.trace
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
myisamchk
通常会读取该
[myisamchk]
组。
如果
--defaults-group-suffix=_other
给出
了
选项,
myisamchk
也会读取该
[myisamchk_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--silent
,
-s
静音模式。
仅在发生错误时写入输出。
您可以使用
-s
两次(
-ss
)使
myisamchk
非常安静。
--verbose
,
-v
详细模式。
打印有关程序功能的更多信息。
这可以
-d
和和
一起使用
-e
。
-v
多次
使用
(
-vv
,
-vvv
)以获得更多输出。
--version
,
-V
显示版本信息并退出。
--wait
,
-w
如果表被锁定,则不要以错误终止,而是等到表解锁后再继续。 如果您在 禁用外部锁定的 情况下运行 mysqld ,则只能通过另一个 myisamchk 命令 锁定该表 。
您还可以使用
语法
设置以下变量
:
--
var_name
=value
变量 | 默认值 |
---|---|
decode_bits |
9 |
ft_max_word_len |
版本依赖性 |
ft_min_word_len |
4 |
ft_stopword_file |
内置列表 |
key_buffer_size |
523264 |
myisam_block_size |
1024 |
myisam_sort_key_blocks |
16 |
read_buffer_size |
262136 |
sort_buffer_size |
2097144 |
sort_key_blocks |
16 |
stats_method |
nulls_unequal |
write_buffer_size |
262136 |
可以使用 myisamchk --help 检查 可能的 myisamchk 变量及其默认值 :
myisam_sort_buffer_size
通过排序键修复键时使用,这是您使用时的正常情况
--recover
。
sort_buffer_size
是一个已弃用的同义词
myisam_sort_buffer_size
。
key_buffer_size
当您
--extend-check
通过将行逐行插入表中时(例如进行常规插入时)
检查表
或使用修复键时使用。
在以下情况下使用通过密钥缓冲区进行修复:
你用
--safe-recover
。
对密钥进行排序所需的临时文件将是直接创建密钥文件时的两倍。
当你有一个大的键值这是常有的事
CHAR
,
VARCHAR
或
TEXT
列,因为排序操作需要存储完整的键值因为它的收益。
如果您有大量临时空间并且可以
通过排序
强制
myisamchk
进行修复,则可以使用该
--sort-recover
选项。
通过密钥缓冲区修复所需的磁盘空间比使用排序要少得多,但速度也慢得多。
如果需要更快的修复,请将
key_buffer_size
和
myisam_sort_buffer_size
变量
设置为
可用内存的大约25%。
您可以将两个变量都设置为较大的值,因为一次只能使用其中一个变量。
myisam_block_size
是用于索引块的大小。
stats_method
NULL
在
--analyze
给出选项
时,会
影响
索引统计信息收集的处理
方式。
它就像
myisam_stats_method
系统变量。
欲了解更多信息,请参阅的描述
myisam_stats_method
在
第5.1.8节,“服务器系统变量”
和
第8.3.8,“InnoDB和MyISAM索引统计集合”
。
ft_min_word_len
并
ft_max_word_len
指出
表上
FULLTEXT
索引
的最小和最大字长
MyISAM
。
ft_stopword_file
命名停用词文件。
这些需要在以下情况下进行设置。
如果使用
myisamchk
执行修改表索引的操作(例如修复或分析),则
FULLTEXT
使用默认的全文参数值(最小和最大字长)和停用词文件重建索引,除非您另行指定。
这可能导致查询失败。
出现此问题的原因是这些参数仅由服务器知道。
它们不存储在
MyISAM
索引文件中。
为了避免这个问题,如果你已经修改了最小或最大字长或服务器停止字文件,指定相同
ft_min_word_len
,
ft_max_word_len
和
ft_stopword_file
值
myisamchk的
,你使用
的mysqld
。
例如,如果您将最小字长设置为3,则可以使用
myisamchk
修复表,
如下所示:
外壳> myisamchk --recover --ft_min_word_len=3 tbl_name
.MYI
为了确保
myisamchk的
和服务器使用全文参数相同的值,你可以将每一项都在
[mysqld]
和
[myisamchk]
选项文件的部分:
的[mysqld] 的ft_min_word_len = 3 [myisamchk的] 的ft_min_word_len = 3
到使用替代
myisamchk的
是使用
REPAIR
TABLE
,
ANALYZE
TABLE
,
OPTIMIZE
TABLE
,或
ALTER
TABLE
。
这些语句由服务器执行,服务器知道要使用的正确的全文参数值。
myisamchk 支持以下表检查操作选项:
--check
,
-c
检查表格是否有错误。 如果未指定任何显式选择操作类型的选项,则这是默认操作。
--check-only-changed
,
-C
仅检查自上次检查后已更改的表。
--extend-check
,
-e
彻底检查表格。 如果表有很多索引,这个速度很慢。 此选项仅应在极端情况下使用。 通常, myisamchk 或 myisamchk --medium-check 应该能够确定表中是否有任何错误。
如果您正在使用
--extend-check
并拥有足够的内存,则将
key_buffer_size
变量
设置
为较大值有助于更快地运行修复操作。
另请参阅表修复选项下的此选项的说明。
有关输出格式的说明,请参见 第4.6.4.5节“使用myisamchk获取表信息” 。
--fast
,
-F
仅检查未正确关闭的表。
--force
,
-f
如果
myisamchk
在表中发现任何错误,请
自动执行修复操作
。
修复类型与使用
--recover
或
-r
选项
指定的类型相同
。
--information
,
-i
打印有关已检查表的信息统计信息。
--medium-check
,
-m
执行比
--extend-check
操作
更快的检查
。
这只发现99.99%的错误,在大多数情况下应该足够好。
--read-only
,
-T
不要将表标记为已选中。 如果您使用 myisamchk 检查一些其他不使用锁定的应用程序正在使用的表,例如 在禁用外部锁定时运行 mysqld , 这将非常有用 。
--update-state
,
-U
将信息存储在
.MYI
文件中以指示何时检查表以及表是否崩溃。
这应该用于获得该
--check-only-changed
选项的
全部好处
,但是如果
mysqld
服务器正在使用该表并且您在禁用外部锁定的情况下运行它,
则不应使用此选项
。
myisamchk
支持表修复操作的以下选项(当
给出
诸如
--recover
或
--safe-recover
给出
的选项时执行的操作
):
--backup
,
-B
将
.MYD
文件
备份
为
file_name
-time
.BAK
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
更正表的校验和信息。
--data-file-length=
,
len
-D
len
数据文件的最大长度(当数据文件 “ 满 ” 时重新创建数据文件 )。
--extend-check
,
-e
执行尝试从数据文件中恢复每个可能行的修复。 通常,这也会发现很多垃圾行。 除非你绝望,否则不要使用此选项。
另请参阅表检查选项下的此选项的说明。
有关输出格式的说明,请参见 第4.6.4.5节“使用myisamchk获取表信息” 。
--force
,
-f
覆盖旧的中间文件(名称相似的文件
)而不是中止。
tbl_name
.TMD
--keys-used=
,
val
-k
val
对于 myisamchk ,选项值是一个位值,指示要更新的索引。 选项值的每个二进制位对应一个表索引,其中第一个索引是位0.选项值0禁用对所有索引的更新,这可用于获得更快的插入。 可以使用 myisamchk -r 重新激活已停用的索引 。
--no-symlinks
,
-l
不要遵循符号链接。 通常 myisamchk会 修复符号链接指向的表。 从MySQL 4.0开始,此选项不存在,因为4.0版本的版本在修复操作期间不会删除符号链接。
如果 myisamchk 无法分配内存来保存它们, 则跳过大于给定长度的行 。
--parallel-recover
,
-p
使用同样的技术
-r
和
-n
,而是创建并行的所有按键,使用不同的线程。
这是beta质量的代码。
使用风险自负!
--quick
,
-q
通过仅修改索引文件而不是数据文件来实现更快的修复。 您可以指定此选项两次以强制 myisamchk 在重复键的情况下修改原始数据文件。
--recover
,
-r
做一个可以解决几乎所有问题的修复,除了非唯一的唯一键(这是一个极不可能的
MyISAM
表
错误
)。
如果要恢复表,可以选择先尝试。
--safe-recover
只有在
myisamchk
报告无法使用表恢复时,
您才应该尝试
--recover
。
(在不太可能的情况下
--recover
失败,数据文件保持不变。)
如果你有很多内存,你应该增加值
myisam_sort_buffer_size
。
--safe-recover
,
-o
使用旧的恢复方法进行修复,该方法按顺序读取所有行,并根据找到的行更新所有索引树。
这比一个数量级慢
--recover
,但可以处理几个不可能的情况
--recover
。
此恢复方法也使用比磁盘空间少得多的磁盘空间
--recover
。
通常,您应首先使用修复
--recover
,然后
--safe-recover
仅在
--recover
失败时进行
修复
。
如果你有很多内存,你应该增加值
key_buffer_size
。
指定用于排序表索引的排序规则。 字符集名称由排序规则名称的第一部分隐含。
--sort-recover
,
-n
强制 myisamchk 使用排序来解析密钥,即使临时文件非常大。
--tmpdir=
,
dir_name
-t
dir_name
用于存储临时文件的目录的路径。
如果未设置,
myisamchk
将使用
TMPDIR
环境变量
的值
。
--tmpdir
可以设置为以循环方式连续使用的目录路径列表,以创建临时文件。
目录名之间的分隔符是
:
Unix上
的冒号(
)和
;
Windows上
的分号(
)。
--unpack
,
-u
打开包含 myisampack 的表格 。
除了表检查和修复之外, myisamchk 支持以下操作的以下选项:
--analyze
,
-a
分析关键值的分布。
这可以通过使连接优化器更好地选择连接表的顺序以及应该使用的索引来提高连接性能。
要获取有关密钥分发的信息,请使用
myisamchk --description --verbose
tbl_name
命令或
语句。
SHOW INDEX FROM
tbl_name
--block-search=
,
offset
-b
offset
找到给定偏移量的块所属的记录。
--description
,
-d
打印有关表格的一些描述性信息。
指定
--verbose
选项一次或两次会产生其他信息。
请参见
第4.6.4.5节“使用myisamchk获取表信息”
。
--set-auto-increment[=
,
value
]-A[
value
]
强制
AUTO_INCREMENT
新记录的编号从给定值开始(如果现有记录的
AUTO_INCREMENT
值大
,则为更高
)。
如果
value
未指定,则
AUTO_INCREMENT
新记录的数字以表中当前最大值加一。
--sort-index
,
-S
以高 - 低顺序对索引树块进行排序。 这样可以优化搜索并使表扫描更快地使用索引。
--sort-records=
,
N
-R
N
根据特定索引对记录进行排序。
这使您的数据更加本地化,并且可以加速
使用此索引
的基于范围
SELECT
和
ORDER
BY
操作。
(第一次使用此选项对表进行排序时,它可能非常慢。)要确定表的索引号,请使用
SHOW
INDEX
,它以
myisamchk
看到
的相同顺序显示表的索引
。
索引从1开始编号。
如果key不是packed(
PACK_KEYS=0
),它们具有相同的长度,所以当
myisamchk对
记录进行排序和移动时,它只会覆盖索引中的记录偏移量。
如果密钥是packed(
PACK_KEYS=1
),则
myisamchk
必须首先解压缩密钥块,然后重新创建索引并再次打包密钥块。
(在这种情况下,重新创建索引比更新每个索引的偏移更快。)
要获取
MyISAM
表
的描述
或有关它的统计信息,请使用此处显示的命令。
这些命令的输出将在本节后面介绍。
所述
tbl_name
参数可以是任一的名称
MyISAM
表或它的索引文件的名称,如在
第4.6.4节“
myisamchk的
- MyISAM表的维护工具”
。
tbl_name
可以给出
多个
参数。
假设一个名为的表
person
具有以下结构。
(
MAX_ROWS
包括表选项,以便在
稍后显示的
myisamchk
的示例输出
中,某些值更小并且更容易适合输出格式。)
创建表人 ( id INT NOT NULL AUTO_INCREMENT, last_name VARCHAR(20)NOT NULL, first_name VARCHAR(20)NOT NULL, 生日, 死亡日期, PRIMARY KEY(id), INDEX(last_name,first_name), INDEX(出生) )MAX_ROWS = 1000000 ENGINE = MYISAM;
假设该表具有以下数据和索引文件大小:
-rw-rw ---- 1 mysql mysql 9347072 8月19日11:47 person.MYD -rw-rw ---- 1 mysql mysql 6066176 8月19日11:47 person.MYI
myisamchk -dvv 输出 示例 :
MyISAM文件:person 记录格式:已打包 字符集:utf8mb4_0900_ai_ci(255) 文件版本:1 创作时间:2017-03-30 21:21:30 状态:已检查,已分析,已优化的密钥,已排序的索引页 自动增量键:1最后一个值:306688 数据记录:306688已删除块:0 数据文件部分:306688删除的数据:0 数据文件指针(字节):4密钥文件指针(字节):3 数据文件长度:9347072密钥文件长度:6066176 最大数据文件长度:4294967294最大密钥文件长度:17179868159 记录长度:54 表格说明: Key Start Len Index类型Rec / key Root Blocksize 1 2 4独特长1 1024 2 6 80倍。varchar前缀0 1024 87 80 varchar 0 3 168 3乘。uint24 NULL 0 1024 场起始长度Nullpos Nullbit类型 1 1 1 2 2 4没有零 3 6 81 varchar 4 87 81 varchar 5 168 3 1 1没有零 6 171 3 1 2没有零
这里给出了 myisamchk 产生 的信息类型的解释 。 “ 密钥 文件 ” 是指索引文件。 “ 记录 ” 和 “ 行 ” 是同义词, “ 字段 ” 和 “ 列 ” 也是同义词 。 ”
表描述的初始部分包含以下值:
MyISAM file
MyISAM
(索引)文件的
名称
。
Record format
用于存储表行的格式。
前面的例子使用
Fixed length
。
其他可能的值是
Compressed
和
Packed
。
(
Packed
对应于
SHOW TABLE STATUS
报告的内容
Dynamic
。)
Chararacter set
表默认字符集。
File-version
MyISAM
格式
版本
。
总是1。
Creation time
创建数据文件时。
Recover time
上次重建索引/数据文件时。
Status
表状态标志。
可能的值是
crashed
,
open
,
changed
,
analyzed
,
optimized keys
,和
sorted index
pages
。
Auto increment key
,
Last
value
表的
AUTO_INCREMENT
列
关联的键编号
,以及此列的最近生成的值。
如果没有这样的列,则不会显示这些字段。
Data records
表中的行数。
Deleted blocks
有多少已删除的块仍有预留空间。 您可以优化表格以最小化此空间。 请参见 第7.6.4节“MyISAM表优化” 。
Datafile parts
对于动态行格式,这表示有多少数据块。
对于没有碎片行的优化表,这与
Data records
。
Deleted data
有多少字节的未回收删除数据。 您可以优化表格以最小化此空间。 请参见 第7.6.4节“MyISAM表优化” 。
Datafile pointer
数据文件指针的大小,以字节为单位。 它通常是2,3,4或5个字节。 大多数表都使用2个字节进行管理,但这还无法通过MySQL进行控制。 对于固定表,这是一个行地址。 对于动态表,这是一个字节地址。
Keyfile pointer
索引文件指针的大小,以字节为单位。 它通常是1,2或3个字节。 大多数表使用2个字节进行管理,但这是由MySQL自动计算的。 它总是一个块地址。
Max datafile length
表数据文件可以变为多长时间(以字节为单位)。
Max keyfile length
表索引文件可以变为多长(以字节为单位)。
Recordlength
每行占用多少空间,以字节为单位。
table description
输出
的
一部分包括表中所有键的列表。
对于每个密钥,
myisamchk
显示一些低级信息:
Key
这个钥匙的号码。
该值仅显示在键的第一列。
如果缺少此值,则该行对应于多列键的第二列或更高列。
对于示例中显示的表,
table description
第二个索引
有两
行。
这表明它是一个包含两部分的多部分索引。
Start
在该行的哪一部分索引开始。
Len
这部分索引有多长。
对于打包数字,这应该始终是列的全长。
对于字符串,它可能短于索引列的全长,因为您可以索引字符串列的前缀。
多部分键的总长度是
Len
所有关键部分
的
值
的总和
。
Index
键值是否可以在索引中多次存在。
可能的值是
unique
或
multip.
(多个)。
Type
索引的这一部分具有什么数据类型。
这是一个
MyISAM
与可能的值的数据类型
packed
,
stripped
或
empty
。
Root
根索引块的地址。
Blocksize
每个索引块的大小。 默认情况下,这是1024,但是当从源构建MySQL时,可以在编译时更改该值。
Rec/key
这是优化程序使用的统计值。 它告诉该索引每个值有多少行。 唯一索引的值始终为1.这可以在使用 myisamchk -a 加载(或大大更改)表后更新 。 如果根本没有更新,则给出默认值30。
输出的最后一部分提供有关每列的信息:
Field
列号。
Start
表行中列的字节位置。
Length
列的长度(以字节为单位)。
Nullpos
,
Nullbit
对于可以的列
NULL
,
MyISAM
将
NULL
值
存储
为字节中的标志。
根据有多少可空列,可以有一个或多个字节用于此目的。
的
Nullpos
和
Nullbit
值时,如果非空,指示哪些字节和位包含标志,指示该列是否为
NULL
。
用于存储
NULL
标志
的位置和字节数
显示在字段1的行中。这就是为什么
表
有六
Field
行,
person
即使它只有五列。
Type
数据类型。 该值可能包含以下任何描述符:
constant
所有行都具有相同的值。
no endspace
不要存储端空间。
no endspace, not_always
不存储端空间,也不对所有值执行端空压缩。
no endspace, no empty
不要存储端空间。 不要存储空值。
table-lookup
该列被转换为
ENUM
。
zerofill(
N
)
N
值中
最重要的
字节始终为0,不存储。
no zeros
不要存储零。
always zero
使用一位存储零值。
Huff tree
与列关联的霍夫曼树的编号。
Bits
霍夫曼树中使用的位数。
该
Huff tree
和
Bits
如果表已经被压缩与显示领域
的myisampack
。
有关
此信息的示例,
请参见
第4.6.6节“
myisampack
- 生成压缩,只读MyISAM表”
。
myisamchk -eiv 输出 示例 :
检查MyISAM文件:person
数据记录:306688已删除块:0
- 检查文件大小
- 检查记录删除链
没有记录链接
- 检查密钥删除链
block_size 1024:
- 检查索引参考
- 检查数据记录参考索引:1
密钥:1:使用的密钥块:98%已打包:0%最高级别:3
- 检查数据记录参考索引:2
密钥:2:使用的密钥块:99%已包装:97%最高级别:3
- 检查数据记录参考索引:3
密钥:3:使用的密钥块:98%已包装:-14%最高级别:3
总计:使用的关键字块:98%已包装:89%
- 检查记录和索引引用
*** LOTS OF ROW NUMBERS DELETED ***
记录:306688 M.recordlength:25盒装:83%
使用的记录空间:97%空白空间:2%块/记录:1.00
记录块:306688删除块:0
记录数据:7934464删除数据:0
丢失的空间:256512 Linkdata:1156096
用户时间43.08,系统时间1.68
最大驻留集大小为0,整数驻留集大小为0
非物理页面故障0,物理页面故障0,交换0
阻止0 out 7,消息0 out 0,信号0
自愿上下文切换0,非自愿上下文切换0
最大内存使用量:1046926字节(1023k)
myisamchk -eiv 输出包括以下信息:
Data records
表中的行数。
Deleted blocks
有多少已删除的块仍有预留空间。 您可以优化表格以最小化此空间。 请参见 第7.6.4节“MyISAM表优化” 。
Key
关键数字。
Keyblocks used
使用了多少百分比的密钥块。 当一张表刚刚用 myisamchk 重新组织时 ,这些值非常高(非常接近理论最大值)。
Packed
MySQL尝试打包具有公共后缀的键值。
这只能用于索引
CHAR
和
VARCHAR
列。
对于具有类似最左边部分的长索引字符串,这可以显着减少使用的空间。
在前面的例子中,第二个密钥长40个字节,空间减少了97%。
Max levels
这把钥匙的B树有多深。 具有长键值的大表获得高值。
Records
表中有多少行。
M.recordlength
平均行长。 这是具有固定长度行的表的确切行长度,因为所有行具有相同的长度。
Packed
MySQL从字符串末尾删除空格。
该
Packed
值表示通过执行此操作实现的节省百分比。
Recordspace used
使用了多少百分比的数据文件。
Empty space
未使用的数据文件的百分比。
Blocks/Record
每行的平均块数(即,由碎片行组成的链接数)。 固定格式表总是1.0。 该值应尽可能接近1.0。 如果它太大,您可以重新组织表。 请参见 第7.6.4节“MyISAM表优化” 。
Recordblocks
使用了多少块(链接)。 对于固定格式表,这与行数相同。
Deleteblocks
删除了多少个块(链接)。
Recorddata
使用数据文件中的字节数。
Deleted data
删除(未使用)数据文件中的字节数。
Lost space
如果将行更新为较短的长度,则会丢失一些空间。 这是所有这些损失的总和,以字节为单位。
Linkdata
使用动态表格式时,行片段与指针(每个4到7个字节)链接。
Linkdata
是所有这些指针使用的存储量的总和。
运行 myisamchk 时,内存分配很重要 。 myisamchk 使用的内存不会超过其与内存相关的变量。 如果要 在非常大的表上 使用 myisamchk ,首先应确定要使用多少内存。 默认情况下,仅使用大约3MB进行修复。 通过使用更大的值,您可以让 myisamchk 更快地运行。 例如,如果您有超过512MB的RAM可用,则可以使用这些选项(除了您可能指定的任何其他选项):
外壳>myisamchk --myisam_sort_buffer_size=256M \
--key_buffer_size=512M \
--read_buffer_size=64M \
--write_buffer_size=64M ...
--myisam_sort_buffer_size=16M
对大多数情况来说,
使用
可能已足够
请注意,
myisamchk
使用临时文件
TMPDIR
。
如果
TMPDIR
指向内存文件系统,则很容易发生内存不足错误。
如果发生这种情况,请运行
myisamchk
,并
选择指定位于具有更多空间的文件系统上的目录。
--tmpdir=
dir_name
执行修复操作时, myisamchk 还需要大量磁盘空间:
数据文件大小的两倍(原始文件和副本)。
如果您进行维修,则不需要此空间
--quick
;
在这种情况下,只重新创建索引文件。
此空间必须在与原始数据文件相同的文件系统上可用
,因为副本在与
原始文件
相同的目录中创建。
用于替换旧索引文件的新索引文件的空间。 旧的索引文件在修复操作开始时被截断,因此您通常会忽略此空间。 此空间必须在与原始数据文件相同的文件系统上可用。
使用
--recover
或
--sort-recover
(但不使用时
--safe-recover
),您需要磁盘上的空间进行排序。
此空间在临时目录(由
TMPDIR
或
指定
)中
分配
。
以下公式产生所需的空间量:
--tmpdir=
dir_name
(largest_key
+row_pointer_length
)*number_of_rows
* 2
您可以
row_pointer_length
使用
myisamchk -dv
tbl_name
检查密钥的长度和密码的长度
(请参见
第4.6.4.5节“使用myisamchk获取表信息”
)。
该
row_pointer_length
和
number_of_rows
值是
Datafile pointer
和
Data
records
值在表中说明。
要确定该
largest_key
值,请检查
Key
表说明中
的
行。
该
Len
列指示每个关键部分的字节数。
对于多列索引,密钥大小是
Len
所有关键部分
的
值
的总和
。
如果在修复期间遇到磁盘空间问题,可以尝试
--safe-recover
代替
--recover
。
myisamlog
处理
MyISAM
日志文件
的内容
。
要创建此类文件,请使用
选项
启动服务器
。
--log-isam=
log_file
像这样 调用 myisamlog :
外壳> myisamlog [options
] [file_name
[tbl_name
] ...]
默认操作是update(
-u
)。
如果完成恢复(
-r
),
则完成
所有写入以及可能的更新和删除,并且仅计算错误。
myisam.log
如果没有
log_file
给出参数,则
默认日志文件名
。
如果在命令行上命名表,则仅更新这些表。
myisamlog 支持以下选项:
该
的myisampack
工具压缩
MyISAM
表。
myisampack
通过分别压缩表中的每一列来工作。
通常,
myisampack
将数据文件打包40%到70%。
稍后使用该表时,服务器会将解压缩列所需的信息读入内存。 这样可以在访问单个行时获得更好的性能,因为您只需要解压缩一行。
MySQL
mmap()
尽可能在压缩表上执行内存映射。
如果
mmap()
不起作用,MySQL将回退到正常的读/写文件操作。
请注意以下事项:
如果在 禁用外部锁定的情况下调用 mysqld 服务器, 则 如果在打包过程中服务器可能更新了表 ,则调用 myisampack 不是一个好主意 。 在服务器停止的情况下压缩表是最安全的。
打包表后,它变为只读。 这通常是预期的(例如在访问CD上的打包表时)。
myisampack 不支持分区表。
像这样 调用 myisampack :
外壳> myisampack [options
] file_name
...
每个文件名参数都应该是index(
.MYI
)文件
的名称
。
如果您不在数据库目录中,则应指定该文件的路径名。
允许省略
.MYI
扩展名。
使用 myisampack 压缩表后 ,使用 myisamchk -rq 重建其索引。 第4.6.4节“ myisamchk - MyISAM表维护实用程序” 。
myisampack 支持以下选项。 它还读取选项文件并支持处理它们的选项,如 第4.2.2.3节“影响选项 - 文件处理的命令行选项”中所述 。
--help
,
-?
显示帮助消息并退出。
--backup
,
-b
使用名称备份每个表的数据文件
。
tbl_name
.OLD
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o
--force
,
-f
生成打包表,即使它比原始表大,或者如果
存在
myisampack
的早期调用中间文件
。
(
myisampack
在压缩表时
创建一个
在数据库目录中
命名的中间文件
。如果你杀了
myisampack
,那么该
tbl_name
.TMD.TMD
文件可能不会被删除。)通常情况下,
如果
myisampack
发现
存在,
则会退出并显示错误
。
有了
tbl_name
.TMD--force
,
myisampack
无论如何打包了桌子。
--join=
,
big_tbl_name
-j
big_tbl_name
将命令行上命名的所有表连接到单个打包表中
big_tbl_name
。
要组合的所有表
必须
具有相同的结构(相同的列名称和类型,相同的索引等)。
big_tbl_name
在连接操作之前必须不存在。
要合并的命令行上命名的所有源表
big_tbl_name
必须存在。
读取连接操作的源表但不进行修改。
--silent
,
-s
静音模式。 仅在发生错误时写入输出。
--test
,
-t
实际上不要打包桌子,只是测试包装。
--tmpdir=
,
dir_name
-T
dir_name
使用指定目录作为 myisampack 创建临时文件 的位置 。
--verbose
,
-v
详细模式。 写入有关包装操作进度及其结果的信息。
--version
,
-V
显示版本信息并退出。
--wait
,
-w
如果表正在使用中,请等待并重试。 如果在 禁用外部锁定的情况下调用 mysqld 服务器, 则 如果在打包过程中服务器可能更新了表 ,则调用 myisampack 不是一个好主意 。
以下命令序列说明了典型的表压缩会话:
外壳>ls -l station.*
-rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI 外壳>myisamchk -dvv station
MyISAM文件:站 Isam版:2 创作时间:1996-03-13 10:08:58 恢复时间:1997-02-02 3:06:43 数据记录:1192已删除块:0 数据文件部分:1192删除数据:0 数据文件指针(字节):2密钥文件指针(字节):2 最大数据文件长度:54657023最大密钥文件长度:33554431 记录长度:834 记录格式:固定长度 表格说明: Key Start Len索引类型Root Blocksize Rec / key 1 2 4唯一无符号长1024 1024 1 2 32 30乘。文本10240 1024 1 场起始长度类型 1 1 1 2 2 4 3 6 4 4 10 1 5 11 20 6 31 1 7 32 30 8 62 35 9 97 35 10 132 35 11 167 4 12 171 16 13 187 35 14 222 4 15 226 16 16 242 20 17 262 20 18 282 20 19 302 30 20 332 4 21 336 4 22 340 1 23 341 8 24 349 8 25 357 8 26 365 2 27 367 2 28 369 4 29 373 4 30 377 1 31 378 2 32 380 8 33 388 4 34 392 4 35 396 4 36 400 4 37 404 1 38 405 4 39 409 4 40 413 4 41 417 4 42 421 4 43 425 4 44 429 20 45 449 30 46 479 1 47 480 1 48 481 79 49 560 79 50 639 79 51 718 79 52 797 8 53 805 1 54 806 1 55 807 20 56 827 4 57 831 4 外壳>myisampack station.MYI
压缩站.MYI:(1192条记录) - 计算统计数据 normal:20 empty-space:16 empty-zero:12 empty-fill:11 pre-space:0 end-space:12 table-lookups:5 zero:7 原树:57加入后:17 - 压缩文件 87.14% 记得在压缩表上运行myisamchk -rq 外壳>myisamchk -rq station
- 检查记录删除链 - 恢复(有排序)MyISAM表''站' 数据记录:1192 - 修正指数1 - 修正指数2 外壳>mysqladmin -uroot flush-tables
外壳>ls -l station.*
-rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI 外壳>myisamchk -dvv station
MyISAM文件:站 Isam版:2 创作时间:1996-03-13 10:08:58 恢复时间:1997-04-17 19:04:26 数据记录:1192已删除块:0 数据文件部分:1192删除数据:0 数据文件指针(字节):3密钥文件指针(字节):1 最大数据文件长度:16777215最大密钥文件长度:131071 记录长度:834 记录格式:压缩 表格说明: Key Start Len索引类型Root Blocksize Rec / key 1 2 4唯一无符号长10240 1024 1 2 32 30乘。文字54272 1024 1 字段起始长度类型Huff树位 1 1 1常数1 0 2 2 4 zerofill(1)2 9 3 6 4没有零,zerofill(1)2 9 4 10 1 3 9 5 11 20查表4 0 6 31 1 3 9 7 32 30没有空间,不是总是5 9 8 62 35没有任何空间,没有通道,没有空洞6 9 9 97 35不空7 9 10 132 35没有终端空间,没有通道,没有空的6 9 11 167 4 zerofill(1)2 9 12 171 16没有任何空间,没有空间,没空,5 9 13 187 35没有终端空间,没有通道,没有空洞6 9 14 222 4 zerofill(1)2 9 15 226 16没有空间,没有空,没有空5 9 16 242 20没有空间,不是总是8 9 17 262 20没有空间,没有空8 9 18 282 20没有空间,没有空5 9 19 302 30没有空间,没有空6 9 20 332 4总是零2 9 21 336 4总是零2 9 22 340 1 3 9 23 341 8查表9 0 24 349 8查表10 0 25 357 8总是零2 9 26 365 2 2 9 27 367 2没有零,zerofill(1)2 9 28 369 4 no zeros,zerofill(1)2 9 29 373 4查表11 0 30 377 1 3 9 31 378 2 no zeros,zerofill(1)2 9 32 380 8 no zeros 2 9 33 388 4总是零2 9 34 392 4查表12 0 35 396 4 no zeros,zerofill(1)13 9 36 400 4 no zeros,zerofill(1)2 9 37 404 1 2 9 38 405 4没有零2 9 39 409 4总是零2 9 40 413 4没有零2 9 41 417 4总是零2 9 42 421 4 no zeros 2 9 43 425 4总是零2 9 44 429 20空无3 9 45 449 30没空3 9 46 479 1 14 4 47 480 1 14 4 48 481 79没有空间,没有空15 9 49 560 79不空2 9 50 639 79不空2 9 51 718 79无空间16 9 52 797 8不空2 9 53 805 1 17 1 54 806 1 3 9 55 807 20不空3 9 56 827 4没有零,zerofill(2)2 9 57 831 4 no zeros,zerofill(1)2 9
myisampack 显示以下类型的信息:
normal
没有使用额外包装的列数。
empty-space
包含仅为空格的值的列数。 这些占据了一点。
empty-zero
包含仅为二进制零的值的列数。 这些占据了一点。
empty-fill
不占用其类型的完整字节范围的整数列数。
这些更改为较小的类型。
例如,如果
BIGINT
列(八个字节)的
TINYINT
所有值都在
-128
to
的范围内,则
可以将其存储为
列(一个字节)
127
。
pre-space
与前导空格一起存储的十进制列数。 在这种情况下,每个值包含前导空格数的计数。
end-space
具有大量尾随空格的列数。 在这种情况下,每个值都包含尾随空格数的计数。
table-lookup
该列只有少量不同的值,这些值在转换为
ENUM
Huffman压缩之前
转换为
。
zero
所有值均为零的列数。
Original trees
最初的霍夫曼树数量。
After join
加入树以保存一些标题空间后留下的不同霍夫曼树的数量。
压缩表后
Field
,
myisamchk -dvv
显示
的
行
包含有关每列的其他信息:
Type
数据类型。 该值可能包含以下任何描述符:
constant
所有行都具有相同的值。
no endspace
不要存储端空间。
no endspace, not_always
不存储端空间,也不对所有值执行端空压缩。
no endspace, no empty
不要存储端空间。 不要存储空值。
table-lookup
该列被转换为
ENUM
。
zerofill(
N
)
N
值中
最重要的
字节始终为0,不存储。
no zeros
不要存储零。
always zero
使用一位存储零值。
Huff tree
与列关联的霍夫曼树的编号。
Bits
霍夫曼树中使用的位数。
运行 myisampack后 ,使用 myisamchk 重新创建任何索引。 此时,您还可以对索引块进行排序,并创建MySQL优化器更高效工作所需的统计信息:
外壳> myisamchk -rq --sort-index --analyze tbl_name
.MYI
将打包表安装到MySQL数据库目录后,应执行 mysqladmin flush-tables 以强制 mysqld 开始使用新表。
该
mysql_config_editor
实用程序,可以存储在一个名为模糊化的登录路径文件认证证书
.mylogin.cnf
。
文件位置是
%APPDATA%\MySQL
Windows上的目录和非Windows系统上的当前用户的主目录。
MySQL客户端程序稍后可以读取该文件以获取用于连接到MySQL服务器的身份验证凭据。
.mylogin.cnf
登录路径文件
的未经模糊处理的格式
由选项组组成,类似于其他选项文件。
每个选项组中
.mylogin.cnf
被称为
“
登录路径
, ”
这是一组只允许特定的选项:
host
,
user
,
password
,
port
和
socket
。
将登录路径选项组视为一组选项,指定要连接到哪个MySQL服务器以及要进行身份验证的帐户。
这是一个未经混淆的例子:
[客户] user = mydefaultname password = mydefaultpass host = 127.0.0.1 [我自己的路] user = myothername 密码= myotherpass host = localhost
当您调用客户端程序以连接到服务器时,客户端将
.mylogin.cnf
与其他选项文件一起使用。
它的优先级高于其他选项文件,但低于客户端命令行中明确指定的选项。
有关使用选项文件的顺序的信息,请参见
第4.2.2.2节“使用选项文件”
。
要指定备用登录路径文件名,请设置
MYSQL_TEST_LOGIN_FILE
环境变量。
mysql_config_editor
,标准MySQL客户端(
mysql
,
mysqladmin
等)以及
mysql-test-run.pl
测试实用程序
可识别此变量
。
程序使用登录路径文件中的组,如下所示:
client
如果您未指定任何
选项以明确指示要使用
的
登录路径,则
mysql_config_editor
默认情况下在
登录路径上运行。
--login-path=
name
如果没有
--login-path
选项,客户端程序将从其他选项文件中读取的登录路径文件中读取相同的选项组。
考虑这个命令:
外壳> mysql
默认情况下,
mysql
客户端
从其他选项文件中
读取
[client]
和
[mysql]
分组,因此它也会从登录路径文件中读取它们。
通过
--login-path
选项,客户端程序还可以从登录路径文件中读取指定的登录路径。
从其他选项文件读取的选项组保持不变。
考虑这个命令:
外壳> mysql --login-path=mypath
在
MySQL的
客户端读取
[client]
和
[mysql]
其他选项的文件,并
[client]
,
[mysql]
以及
[mypath]
从登录路径文件。
即使使用该
--no-defaults
选项,
客户端程序也会读取登录路径文件
。
这允许以比命令行更安全的方式指定密码,即使存在
--no-defaults
也是如此。
mysql_config_editor
对
.mylogin.cnf
文件进行
模糊处理
,使其无法以明文形式读取,并且客户端程序未经过模糊处理时的内容仅在内存中使用。
通过这种方式,密码可以以非明文格式存储在文件中,以后使用,无需在命令行或环境变量中公开。
mysql_config_editor
提供了一个
print
显示登录路径文件内容
的
命令,但即使在这种情况下,也会屏蔽密码值,以免以其他用户可以看到的方式显示。
mysql_config_editor
使用的模糊处理
可防止密码
.mylogin.cnf
以明文形式
出现,
并通过防止无意中密码泄露来提供安全措施。
例如,如果您
my.cnf
在屏幕上
显示常规的未经模糊处理的
选项文件,则任何人都可以看到它包含的任何密码。
有
.mylogin.cnf
,那不是真的。
但是使用的混淆不会阻止坚定的攻击者,你不应该认为它是牢不可破的。
可以在您的计算机上获得系统管理权限以访问您的文件的用户可以
.mylogin.cnf
通过一些努力
来对文件进行非模糊处理
。
登录路径文件必须对当前用户可读写,并且其他用户无法访问。 否则, mysql_config_editor会 忽略它,客户端程序也不会使用它。
像这样 调用 mysql_config_editor :
外壳> mysql_config_editor [program_options
] command
[command_options
]
如果登录路径文件不存在,则 mysql_config_editor 会创建它。
命令参数如下:
program_options
由一般的
mysql_config_editor
选项组成。
command
指示要对
.mylogin.cnf
登录路径文件
执行的
操作。
例如,
set
写入文件
remove
的登录路径,删除登录路径,并
print
显示登录路径内容。
command_options
表示该命令特有的任何其他选项,例如登录路径名和登录路径中使用的值。
命令名称在程序参数集中的位置很重要。 例如,这些命令行具有相同的参数,但会产生不同的结果:
shell>mysql_config_editor --help set
shell>mysql_config_editor set --help
第一个命令行显示一般的
mysql_config_editor
帮助消息,并忽略该
set
命令。
第二个命令行显示特定于该
set
命令
的帮助消息
。
假设您要建立一个
client
定义默认连接参数的登录路径,以及另一个以
remote
连接MySQL服务器为主机的
登录路径
remote.example.com
。
您想要登录如下:
默认情况下,到本地服务器的用户名和密码
localuser
,并
localpass
与用户名的远程服务器和密码
remoteuser
,并
remotepass
要在
.mylogin.cnf
文件中
设置登录路径
,请使用以下
set
命令。
在一行中输入每个命令,并在出现提示时输入相应的密码:
shell> 输入密码: shell> 输入密码:mysql_config_editor set --login-path=client --host=localhost --user=localuser --password
enter password "localpass" here
mysql_config_editor set --login-path=remote --host=remote.example.com --user=remoteuser --password
enter password "remotepass" here
mysql_config_editor
client
默认
使用
登录路径,因此
--login-path=client
可以从第一个命令中省略
该
选项而不更改其效果。
要查看
mysql_config_editor
写入
.mylogin.cnf
文件的内容,请使用以下
print
命令:
外壳> mysql_config_editor print --all
[客户]
user = localuser
密码= *****
host = localhost
[远程]
user = remoteuser
密码= *****
host = remote.example.com
该
print
命令将每个登录路径显示为一组行,以一个组头开头,表示方括号中的登录路径名,后跟登录路径的选项值。
密码值被屏蔽,不会显示为明文。
如果未指定
--all
显示所有登录路径或
显示命名登录路径,则该
命令
默认
显示
登录路径(如果有)。
--login-path=
name
print
client
如前面的示例所示,登录路径文件可以包含多个登录路径。
通过这种方式,
mysql_config_editor
可以轻松设置多个
“
个性
”
以连接到不同的MySQL服务器,或者使用不同的帐户连接到给定的服务器。
--login-path
当您调用客户端程序时,可以
稍后使用该
选项
按名称选择其中任何
一个。
例如,要连接到远程服务器,请使用以下命令:
外壳> mysql --login-path=remote
在这里,
MySQL的
读取
[client]
和
[mysql]
其他选项的文件选项组,和
[client]
,
[mysql]
和
[remote]
从登录路径文件组。
要连接到本地服务器,请使用以下命令:
外壳> mysql --login-path=client
因为
mysql
默认
读取
client
和
mysql
登录路径,所以
--login-path
在这种情况下
该
选项不会添加任何内容。
该命令等同于此命令:
外壳> mysql
从登录路径文件读取的选项优先于从其他选项文件读取的选项。 从登录路径文件中稍后出现的登录路径组中读取的选项优先于从文件中较早出现的组中读取的选项。
mysql_config_editor
按照您创建的顺序添加登录路径文件的登录路径,因此您应首先创建更多常规登录路径,然后再创建更具体的路径。
如果需要在文件中移动登录路径,可以将其删除,然后重新创建它以将其添加到最后。
例如,
client
登录路径更通用,因为它被所有客户端程序读取,而
mysqldump
登录路径只能由
mysqldump
读取
。
后来指定的选项覆盖在此之前指定的选项,所以把登录路径的顺序
client
,
mysqldump
使
mysqldump的
特异性选项覆盖
client
选项。
使用
mysql_config_editor
set
命令
创建登录路径时,无需指定所有可能的选项值(主机名,用户名,密码,端口,套接字)。
只有给定的值才会写入路径。
当您调用客户端路径连接到MySQL服务器时,可以在其他选项文件或命令行中指定以后需要的任何缺失值。
命令行上指定的任何选项都会覆盖登录路径文件或其他选项文件中指定的选项。
例如,如果
登录路径中
的凭据
也适用于主机
,请连接到该主机上的服务器,如下所示:
remote
remote2.example.com
外壳> mysql --login-path=remote --host=remote2.example.com
mysql_config_editor 支持以下常规选项,可以在命令行上命名的任何命令之前使用。 有关特定于命令的选项的说明,请参见 mysql_config_editor命令和特定于命令的选项 。
--help
,
-?
显示常规帮助消息并退出。
要查看特定于命令的帮助消息,请
按如下方式
调用
mysql_config_editor
,其中
command
的命令不是
help
:
外壳> mysql_config_editor command
--help
--debug[=
,
debug_options
]-#
debug_options
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/mysql_config_editor.trace
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。 如果操作没有您期望的效果,此选项可能有助于诊断问题。
--version
,
-V
显示版本信息并退出。
本节介绍允许的 mysql_config_editor 命令,并且对于每个命令,在命令行上使用命令名后允许的特定于命令的选项。
此外, mysql_config_editor 支持可在任何命令之前使用的常规选项。 有关这些选项的说明,请参见 mysql_config_editor常规选项 。
mysql_config_editor 支持以下命令:
help
显示常规帮助消息并退出。 此命令不带以下选项。
要查看特定于命令的帮助消息,请
按如下方式
调用
mysql_config_editor
,其中
command
的命令不是
help
:
外壳> mysql_config_editor command
--help
print
[
options
]
以未经模糊的形式打印登录路径文件的内容,但密码显示为
*****
。
client
如果未命名登录路径,则
默认登录路径名称
为。
如果两个
--all
和
--login-path
给出,
--all
优先。
该
print
命令允许在命令名后面显示以下选项:
--help
,
-?
显示
print
命令
的帮助消息
并退出。
要查看常规帮助消息,请使用 mysql_config_editor --help 。
--all
打印登录路径文件中所有登录路径的内容。
--login-path=
,
name
-G
name
打印指定登录路径的内容。
remove
[
options
]
从登录路径文件中删除登录路径,或通过从中删除选项来修改登录路径。
该命令从登录路径只删除选项,如与被指定
--host
,
--password
,
--port
,
--socket
,和
--user
选项。
如果没有给出这些选项,则
remove
删除整个登录路径。
例如,此命令仅从
登录路径而不是整个
登录路径中
删除
user
选项
:
mypath
mypath
外壳> mysql_config_editor remove --login-path=mypath --user
此命令删除整个
mypath
登录路径:
外壳> mysql_config_editor remove --login-path=mypath
该
remove
命令允许在命令名后面显示以下选项:
--help
,
-?
显示
remove
命令
的帮助消息
并退出。
要查看常规帮助消息,请使用 mysql_config_editor --help 。
--host
,
-h
从登录路径中删除主机名。
--login-path=
,
name
-G
name
要删除或修改的登录路径。
client
如果未指定此选项,则
默认登录路径名称为
。
--password
,
-p
从登录路径中删除密码。
--port
,
-P
从登录路径中删除TCP / IP端口号。
--socket
,
-S
从登录路径中删除Unix套接字文件名。
--user
,
-u
从登录路径中删除用户名。
--warn
,
-w
如果该命令尝试删除默认登录路径(
client
)
--login-path=client
且未指定
,
则
警告并提示用户进行确认
。
默认情况下启用此选项;
使用
--skip-warn
禁用它。
reset
[
options
]
清空登录路径文件的内容。
该
reset
命令允许在命令名后面显示以下选项:
--help
,
-?
显示
reset
命令
的帮助消息
并退出。
要查看常规帮助消息,请使用 mysql_config_editor --help 。
set [
options
]
写入登录路径文件的登录路径。
此命令写入登录路径作为被指定的唯一的这样的选项
--host
,
--password
,
--port
,
--socket
,和
--user
选项。
如果没有给出这些选项,
mysql_config_editor
会将登录路径写为空组。
该
set
命令允许在命令名后面显示以下选项:
--help
,
-?
显示
set
命令
的帮助消息
并退出。
要查看常规帮助消息,请使用 mysql_config_editor --help 。
--host=
,
host_name
-h
host_name
要写入登录路径的主机名。
--login-path=
,
name
-G
name
要创建的登录路径。
client
如果未指定此选项,则
默认登录路径名称为
。
--password
,
-p
提示输入登录路径的密码。 之后 mysql_config_editor 显示提示符下,键入密码,然后按Enter键。 为防止其他用户看到密码, mysql_config_editor 不会回显它。
要指定空密码,请在密码提示符下按Enter键。 写入登录路径文件的结果登录路径将包含如下所示的行:
密码=
--port=
,
port_num
-P
port_num
要写入登录路径的TCP / IP端口号。
--socket=
,
file_name
-S
file_name
要写入登录路径的Unix套接字文件名。
--user=
,
user_name
-u
user_name
要写入登录路径的用户名。
--warn
,
-w
如果命令尝试覆盖现有登录路径,则警告并提示用户进行确认。
默认情况下启用此选项;
使用
--skip-warn
禁用它。
服务器的二进制日志由包含 “ 事件 ” 的文件组成,这些 事件 描述了对数据库内容的修改。 服务器以二进制格式写入这些文件。 要以文本格式显示其内容,请使用 mysqlbinlog 实用程序。 您还可以使用 mysqlbinlog 在复制设置中显示从服务器写入的中继日志文件的内容,因为中继日志的格式与二进制日志相同。 第5.4.4节“二进制日志” 和 第17.2.4节“复制中继和状态日志”中 进一步讨论了二进制日志和中继日志 。
像这样 调用 mysqlbinlog :
外壳> mysqlbinlog [options
] log_file
...
例如,要显示名为二进制日志文件的内容
binlog.000003
,请使用以下命令:
外壳> mysqlbinlog binlog.0000003
输出包括包含的事件
binlog.000003
。
对于基于语句的日志记录,事件信息包括SQL语句,执行该语句的服务器的ID,执行语句的时间戳,花费的时间等等。
对于基于行的日志记录,该事件表示行更改而不是SQL语句。
有关日志记录模式的信息
,
请参见
第17.2.1节“复制格式”
。
事件之前是标题注释,提供其他信息。 例如:
#141 #100309 9:28:36服务器ID 123 end_log_pos 245 查询thread_id = 3350 exec_time = 11 error_code = 0
在第一行中,后面的数字
at
表示二进制日志文件中事件的文件偏移量或起始位置。
第二行以日期和时间开始,指示语句在发生事件的服务器上何时开始。
对于复制,此时间戳将传播到从属服务器。
server id
是
server_id
发生事件的服务器
的
值。
end_log_pos
指示下一个事件开始的位置(即,它是当前事件的结束位置+ 1)。
thread_id
指示哪个线程执行了该事件。
exec_time
是在主服务器上执行事件所花费的时间。
在从站上,它是从站上的结束执行时间减去主站上的开始执行时间的差异。
差异用作指示复制滞后于主服务器的程度。
error_code
表示执行事件的结果。
零意味着没有发生错误。
当使用事件组时,可以将事件的文件偏移分组在一起,并且可以将事件的评论分组在一起。 不要将这些分组事件误认为是空白文件偏移。
可以重新执行 mysqlbinlog 的输出 (例如,通过将其用作 mysql的 输入 )来重做日志中的语句。 这对于服务器崩溃后的恢复操作很有用。 有关其他用法示例,请参阅本节后面的 第7.5节“使用二进制日志进行时间点(增量)恢复”中的讨论 。
您可以使用
mysqlbinlog
直接读取二进制日志文件并将它们应用到本地MySQL服务器。
您还可以使用该
--read-from-remote-server
选项
从远程服务器读取二进制日志
。
要读取远程二进制日志,可以使用连接参数选项指示如何连接到服务器。
这些选项包括
--host
,
--password
,
--port
,
--protocol
,
--socket
,和
--user
。
当二进制日志文件已加密时,可以从MySQL 8.0.14开始,
mysqlbinlog
无法直接读取它们,但可以使用该
--read-from-remote-server
选项
从服务器读取它们
。
当服务器的
binlog_encryption
系统变量设置
为时,二进制日志文件将被加密
ON
。
该
SHOW
BINARY LOGS
语句显示特定二进制日志文件是加密还是未加密。
加密和未加密的二进制日志文件也可以使用加密日志文件(
0xFD62696E
)
的文件头开头的幻数来区分
,这与用于未加密日志文件(
0xFE62696E
)的
格式不同
。
请注意,从MySQL 8.0.14开始,
mysqlbinlog
如果您尝试直接读取加密的二进制日志文件,则会返回一个合适的错误,但旧版本的
mysqlbinlog
根本不会将该文件识别为二进制日志文件。
有关二进制日志加密的更多信息,请参见
第17.3.10节“加密二进制日志文件和中继日志文件”
。
运行
mysqlbinlog时
对大型二进制日志
,请注意文件系统有足够的空间容纳生成的文件。
要配置
mysqlbinlog
用于临时文件的目录,请使用
TMPDIR
环境变量。
mysqlbinlog
pseudo_slave_mode
在执行任何SQL语句之前
将值设置
为true。
mysqlbinlog可以
支持下面的选项,可以在命令行或在指定
[mysqlbinlog]
与
[client]
一个选项文件的组。
有关MySQL程序使用的选项文件的信息,请参见
第4.2.2.2节“使用选项文件”
。
表4.18 mysqlbinlog选项
格式 | 描述 | 介绍 | 删除 |
---|---|---|---|
--base64输出 | 使用base-64编码打印二进制日志条目 | ||
--bind地址 | 使用指定的网络接口连接到MySQL服务器 | ||
--binlog行事件-MAX尺寸 | 二进制日志最大事件大小 | ||
--character集-DIR | 安装字符集的目录 | ||
- 压缩 | 压缩客户端和服务器之间发送的所有信息 | 8.0.17 | |
--connection服务器-ID | 用于测试和调试。 请参阅文本以了解适用的默认值和其他详细信息。 | ||
- 数据库 | 仅列出此数据库的条目 | ||
--debug | 写调试日志 | ||
--debug检查 | 程序退出时打印调试信息 | ||
- 调试信息 | 程序退出时打印调试信息,内存和CPU统计信息 | ||
--default-AUTH | 要使用的身份验证插件 | ||
--defaults-额外文件 | 除常用选项文件外,还可以读取命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
--defaults基团的后缀 | 选项组后缀值 | ||
- 禁用日志斌 | 禁用二进制日志 | ||
--exclude-gtids | 不要在提供的GTID集中显示任何组 | ||
--force,如果开 | 即使打开或未正确关闭,也要读取二进制日志文件 | ||
--force阅读 | 如果mysqlbinlog读取它无法识别的二进制日志事件,则会输出警告 | ||
--get-服务器的公钥 | 从服务器请求RSA公钥 | 8.0.3 | |
- 救命 | 显示帮助消息并退出 | ||
--hexdump | 在注释中显示日志的十六进制转储 | ||
- 主办 | 连接到给定主机上的MySQL服务器 | ||
--idempotent | 导致服务器仅在从此会话处理二进制日志更新时使用幂等模式 | ||
--include-gtids | 仅显示提供的GTID集中的组 | ||
--local负荷 | 在指定目录中为LOAD DATA准备本地临时文件 | ||
--login路径 | 从.mylogin.cnf中读取登录路径选项 | ||
--no-默认 | 不读选项文件 | ||
--offset | 跳过日志中的前N个条目 | ||
- 密码 | 连接到服务器时使用的密码 | ||
--plugin-DIR | 安装插件的目录 | ||
- 港口 | 用于连接的TCP / IP端口号 | ||
--print-默认 | 打印默认选项 | ||
--print表元数据 | 打印表元数据 | ||
- 协议 | 要使用的连接协议 | ||
- 生的 | 将原始(二进制)格式的事件写入输出文件 | ||
--read-从远程主 | 从MySQL主服务器读取二进制日志而不是读取本地日志文件 | ||
--read-从远程服务器 | 从MySQL服务器读取二进制日志而不是本地日志文件 | ||
- 结果文件 | 直接输出到命名文件 | ||
--rewrite-DB | 从基于行的格式编写的日志回放时,为数据库创建重写规则。 可以多次使用。 | ||
--secure-auth的 | 不要以旧的(4.1之前的)格式向服务器发送密码 | 8.0.3 | |
--server-ID | 仅提取由具有给定服务器ID的服务器创建的事件 | ||
--server-ID位 | 当mysqld的server-id-bits设置为小于最大值时,告诉mysqlbinlog如何解释二进制日志中的服务器ID; 仅受MySQL Cluster版本的mysqlbinlog支持 | ||
--server-公钥路径 | 包含RSA公钥的文件的路径名 | 8.0.4 | |
--set-字符集 | 将SET NAMES charset_name语句添加到输出 | ||
--shared存储器碱基名 | 用于共享内存连接的共享内存的名称 | ||
- 简写 | 仅显示日志中包含的语句 | ||
--skip-gtids | 不要打印任何GTID; 从包含GTID的二进制日志中写入转储文件时使用此选项。 | ||
- 插座 | 对于localhost的连接,要使用的Unix套接字文件 | ||
--ssl-CA | 包含受信任的SSL证书颁发机构列表的文件 | ||
--ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
--ssl证书 | 包含X.509证书的文件 | ||
--ssl-密码 | 用于连接加密的允许密码列表 | ||
--ssl-CRL | 包含证书吊销列表的文件 | ||
--ssl-crlpath | 包含证书吊销列表文件的目录 | ||
--ssl-FIPS模式 | 是否在客户端启用FIPS模式 | 8.0.11 | |
--ssl键 | 包含X.509密钥的文件 | ||
--ssl模式 | 与服务器连接的安全状态 | ||
--start-日期时间 | 从第一个事件读取二进制日志,时间戳等于或晚于datetime参数 | ||
--start位置 | 从第一个事件读取二进制日志,其位置等于或大于参数 | ||
--stop-日期时间 | 在时间戳等于或大于datetime参数的第一个事件处停止读取二进制日志 | ||
--stop-从未 | 阅读完最后的二进制日志文件后,保持与服 | ||
--stop-从未从服务器的ID | 连接到服务器时要报告的从服务器ID | ||
--stop位置 | 在位置等于或大于参数的第一个事件处停止读取二进制日志 | ||
--tls-密码套件 | 允许加密连接的TLSv1.3密码套件 | 8.0.16 | |
--tls版本 | 允许加密连接的协议 | ||
--to-最后日志 | 不要在MySQL服务器请求的二进制日志结束时停止,而是继续打印到最后一个二进制日志的末尾 | ||
- 用户 | 连接到服务器时使用的MySQL用户名 | ||
--verbose | 将行事件重建为SQL语句 | ||
--verify-二进制日志校验和 | 验证二进制日志中的校验和 | ||
- 版 | 显示版本信息并退出 |
--help
,
-?
显示帮助消息并退出。
此选项确定何时应使用
BINLOG
语句
将事件编码为base-64字符串
。
该选项具有这些允许值(不区分大小写):
AUTO
(“自动”)或
UNSPEC
(“未指定”)
BINLOG
在必要时自动
显示
语句(即格式描述事件和行事件)。
如果没有
--base64-output
给出选项,则效果与...相同
--base64-output=AUTO
。
BINLOG
如果您打算使用
mysqlbinlog
的输出
重新执行二进制日志文件内容,
则
自动
显示是唯一安全的行为
。
其他选项值仅用于调试或测试目的,因为它们可能会生成不包含可执行形式的所有事件的输出。
NEVER
导致
BINLOG
语句不显示。
如果找到必须使用的行事件,
mysqlbinlog将
退出并显示错误
BINLOG
。
DECODE-ROWS
指定要
通过指定
选项
将行事件解码并显示为注释的SQL语句的
mysqlbinlog
--verbose
。
比如
NEVER
,
DECODE-ROWS
禁止显示
BINLOG
语句,但
NEVER
与之
不同的是
,如果找到行事件,它不会以错误退出。
有关显示
行事件输出
--base64-output
和
--verbose
对行事件输出
的影响的示例
,请参见
第4.6.8.2节“mysqlbinlog行事件显示”
。
在具有多个网络接口的计算机上,使用此选项可选择用于连接MySQL服务器的接口。
属性 | 值 |
---|---|
命令行格式 | --binlog-row-event-max-size=# |
类型 | 数字 |
默认值 | 4294967040 |
最低价值 | 256 |
最大价值 | 18446744073709547520 |
指定基于行的二进制日志事件的最大大小(以字节为单位)。 如果可能,将行分组为小于此大小的事件。 该值应为256的倍数。默认值为4GB。
安装字符集的目录。 请参见 第10.14节“字符集配置” 。
压缩客户端和服务器之间发送的所有信息(如果可能)。 请参见 第4.2.5节“连接压缩控制” 。
MySQL 8.0.17中添加了此选项。
--connection-server-id=
server_id
--connection-server-id
指定
mysqlbinlog
连接到服务器时报告
的服务器ID
。
它可用于避免与从属服务器或其他
mysqlbinlog
进程
的ID冲突
。
如果
--read-from-remote-server
指定
了该
选项,则
mysqlbinlog将
报告服务器ID为0,这将告知服务器在发送最后一个日志文件后断开连接(非阻塞行为)。
如果
--stop-never
还指定了
该
选项以维持与服务器的连接,则
mysqlbinlog
默认报告服务器ID为1而不是0,并且
--connection-server-id
可以根据需要用于替换该服务器ID。
请参见
第4.6.8.4节“指定mysqlbinlog服务器ID”
。
--database=
,
db_name
-d
db_name
此选项使
mysqlbinlog
输出二进制日志(仅限本地日志)中的条目,该条目在
db_name
被选为默认数据库时发生
USE
。
在
--database
供选择
mysqlbinlog可以
是类似
--binlog-do-db
的选项
mysqld的
,但可以用来指定一个数据库。
如果
--database
多次给出,则仅使用最后一个实例。
此选项的效果取决于基于语句或基于行的日志记录格式是否正在使用,其方式与
--binlog-do-db
依赖于基于语句或基于行的日志记录的效果的使用方式相同。
基于语句的日志记录。
该
--database
选项的工作原理如下:
虽然
db_name
是默认数据库,但无论是修改表
db_name
还是
修改其他数据库,都会输出语句
。
除非
db_name
被选为默认数据库,
否则
不输出语句,即使它们修改了表
db_name
。
有一个例外
CREATE
DATABASE
,
ALTER
DATABASE
以及
DROP
DATABASE
。
在确定是否输出语句时
,
正在
创建,更改或删除
的数据库被
视为默认数据库。
假设通过使用基于语句的日志记录执行这些语句来创建二进制日志:
INSERT INTO test.t1(i)VALUES(100); 插入到db2.t2(j)VALUES(200); 使用测试; INSERT INTO test.t1(i)VALUES(101); 插入t1(i)VALUES(102); 插入db2.t2(j)VALUES(201); 使用db2; INSERT INTO test.t1(i)VALUES(103); 插入db2.t2(j)VALUES(202); 插入t2(j)VALUES(203);
mysqlbinlog --database = test
不输出前两个
INSERT
语句,因为没有默认数据库。
它输出以下三个
INSERT
语句
USE
test
,但不
输出
以下
三个
INSERT
语句
USE db2
。
mysqlbinlog --database = db2
不输出前两个
INSERT
语句,因为没有默认数据库。
它不会输出以下三个
INSERT
语句
USE test
,但会输出以下三个
INSERT
语句
USE db2
。
基于行的日志记录。
mysqlbinlog
仅输出更改属于的表的条目
db_name
。
默认数据库对此没有影响。
假设刚刚描述的二进制日志是使用基于行的日志记录而不是基于语句的日志记录创建的。
mysqlbinlog --database = test
仅输出
t1
在测试数据库
中修改的条目
,无论是否
USE
已发布或默认数据库是什么。
如果服务器运行时
binlog_format
设置为,
MIXED
并且您希望可以将
mysqlbinlog
与该
--database
选项
一起使用
,则
必须确保已修改的表位于所选的数据库中
USE
。
(特别是,不应使用跨数据库更新。)
与
--rewrite-db
选项
一起使用时
,
--rewrite-db
首先应用
该
选项;
然后
--database
使用重写的数据库名称应用
该
选项。
提供选项的顺序在这方面没有区别。
--debug[=
,
debug_options
]-#
[
debug_options
]
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/mysqlbinlog.trace
程序退出时打印一些调试信息。
程序退出时打印调试信息,内存和CPU使用情况统计信息。
有关要使用的客户端身份验证插件的提示。 请参见 第6.2.17节“可插入验证” 。
--defaults-extra-file=
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
仅使用给定的选项文件。
如果文件不存在或无法访问,则会发生错误。
file_name
如果作为相对路径名而不是完整路径名给出,则相对于当前目录进行解释。
例外:即使使用
--defaults-file
,客户端程序
也会
读取
.mylogin.cnf
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不仅要读取常用选项组,还要读取通常名称和后缀的组
str
。
例如,
mysqlbinlog
通常会读取
[client]
和
[mysqlbinlog]
组。
如果
--defaults-group-suffix=_other
给出
了该
选项,
mysqlbinlog
也会读取
[client_other]
和
[mysqlbinlog_other]
组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--disable-log-bin
,
-D
禁用二进制日志。
如果您使用该
--to-last-log
选项并将输出发送到同一MySQL服务器,
这对于避免无限循环很有用
。
在崩溃后进行恢复时,此选项也很有用,以避免重复记录的语句。
此选项使
mysqlbinlog
SET
sql_log_bin = 0
在其输出中
包含一个
语句,以禁用其余输出的二进制日志记录。
sql_log_bin
操作系统变量
的会话值
是受限操作,因此该选项要求您具有足以设置受限会话变量的权限。
请参见
第5.1.9.1节“系统变量权限”
。
不显示中列出的任何组
gtid_set
。
--force-if-open
,
-F
读取二进制日志文件,即使它们已打开或未正确关闭。
--force-read
,
-f
使用此选项,如果 mysqlbinlog 读取它无法识别的二进制日志事件,则会输出警告,忽略该事件并继续。 如果没有此选项, mysqlbinlog会 在读取此类事件时停止。
从服务器请求基于RSA密钥对的密码交换所需的公钥。
此选项适用于使用
caching_sha2_password
身份验证插件
进行
身份验证的
客户端
。
对于该插件,除非有请求,否则服务器不会发送公钥。
对于未使用该插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
有关
caching_sha2_password
插件的
信息
,请参见
第6.4.1.3节“缓存SHA-2可插入身份验证”
。
--hexdump
,
-H
在注释中显示日志的十六进制转储,如 第4.6.8.1节“mysqlbinlog十六进制转储格式”中所述 。 十六进制输出有助于复制调试。
--host=
,
host_name
-h
host_name
从给定主机上的MySQL服务器获取二进制日志。
告诉MySQL服务器在处理更新时使用幂等模式; 这会导致在处理更新时抑制服务器在当前会话中遇到的任何重复键或键未找到的错误。 只要需要或必须将一个或多个二进制日志重放到MySQL服务器(可能不包含日志所引用的所有数据),此选项可能会很有用。
此选项的作用范围包括当前的 mysqlbinlog 客户端和仅会话。
仅显示中列出的组
gtid_set
。
--local-load=
,
dir_name
-l
dir_name
LOAD
DATA
在指定目录中
准备本地临时文件
。
mysqlbinlog 或任何其他MySQL程序 不会自动删除这些临时文件 。
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
不要读任何选项文件。
如果程序启动由于从选项文件中读取未知选项而失败,
--no-defaults
则可用于防止它们被读取。
例外情况是,
.mylogin.cnf
在所有情况下都会读取文件(如果存在)。
这允许以比命令行更安全的方式指定密码,即使
--no-defaults
使用
密码
也是如此。
(
.mylogin.cnf
由
mysql_config_editor
实用程序
创建
。请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。)
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--offset=
,
N
-o
N
跳过
N
日志中
的第一个
条目。
指定要保留的打开文件描述符的数量。
--password[=
,
password
]-p[
password
]
连接服务器时使用的密码。
如果使用短选项表单(
-p
),
则选项和密码之间
不能
有空格。
如果省略
命令行上
password
的
--password
或
-p
选项
后面
的
值
,
mysqlbinlog
会提示输入一个值。
在命令行上指定密码应该被认为是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 您可以使用选项文件以避免在命令行上提供密码。
查找插件的目录。
如果该
--default-auth
选项用于指定身份验证插件但
mysqlbinlog
找不到,
请指定此选项
。
请参见
第6.2.17节“可插入验证”
。
--port=
,
port_num
-P
port_num
用于连接远程服务器的TCP / IP端口号。
打印程序名称以及从选项文件中获取的所有选项。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
从二进制日志打印表相关的元数据。
配置使用的记录的表二进制元数据量
binlog-row-metadata
。
--protocol={TCP|SOCKET|PIPE|MEMORY}
用于连接服务器的连接协议。 当其他连接参数通常会导致协议被使用而不是您想要的协议时,它很有用。 有关允许值的详细信息,请参见 第4.2.3节“连接到MySQL服务器” 。
默认情况下,
mysqlbinlog
读取二进制日志文件并以文本格式写入事件。
该
--raw
选项告诉
mysqlbinlog
以原始二进制格式写入它们。
它的使用
--read-from-remote-server
也需要使用,因为文件是从服务器请求的。
mysqlbinlog
为从服务器读取的每个文件写入一个输出文件。
该
--raw
选项可用于备份服务器的二进制日志。
使用该
--stop-never
选项,备份是
“
实时
”,
因为
mysqlbinlog
保持连接到服务器。
默认情况下,输出文件将写入当前目录,其名称与原始日志文件的名称相同。
可以使用该
--result-file
选项
修改输出文件名
。
有关更多信息,请参见
第4.6.8.3节“使用mysqlbinlog备份二进制日志文件”
。
--read-from-remote-master=
type
从与所述一个MySQL服务器读取二进制日志
COM_BINLOG_DUMP
或
COM_BINLOG_DUMP_GTID
通过选项值设置为任一命令
BINLOG-DUMP-NON-GTIDS
或
BINLOG-DUMP-GTIDS
分别。
如果
--read-from-remote-master=BINLOG-DUMP-GTIDS
与之结合使用
--exclude-gtids
,则可以在主服务器上过滤掉事务,从而避免不必要的网络流量。
连接参数选项与此选项或选项一起使用
--read-from-remote-server
。
这些选项包括
--host
,
--password
,
--port
,
--protocol
,
--socket
,和
--user
。
如果未指定任何远程选项,则忽略连接参数选项。
REPLICATION SLAVE
使用此选项需要
该
权限。
--read-from-remote-server
,
-R
从MySQL服务器读取二进制日志,而不是读取本地日志文件。 此选项要求远程服务器正在运行。 它仅适用于远程服务器上的二进制日志文件,而不适用于中继日志文件。
连接参数选项与此选项或选项一起使用
--read-from-remote-master
。
这些选项包括
--host
,
--password
,
--port
,
--protocol
,
--socket
,和
--user
。
如果未指定任何远程选项,则忽略连接参数选项。
REPLICATION SLAVE
使用此选项需要
该
权限。
--result-file=
,
name
-r
name
如果没有该
--raw
选项,则此选项指示
mysqlbinlog
将文本输出写入的文件。
使用
--raw
,
mysqlbinlog
为从服务器传输的每个日志文件写入一个二进制输出文件,默认使用与原始日志文件相同的名称在当前目录中写入它们。
在这种情况下,
--result-file
选项值被视为修改输出文件名的前缀。
--rewrite-db='
from_name
->to_name
'
从基于行或基于语句的日志读取数据时,重写所有出现
from_name
到
to_name
。
对于基于行的日志,以及
USE
基于语句的日志
的
子句,对
行执行重写
。
使用此选项时,不会重写表名用数据库名限定的语句以使用新名称。
用作此选项的值的重写规则是具有该表单的字符串
,如前所示,因此必须用引号括起来。
'
from_name
->to_name
'
要使用多个重写规则,请多次指定该选项,如下所示:
外壳> mysqlbinlog --rewrite-db='dbcurrent->dbold' --rewrite-db='dbtest->dbcurrent' \
binlog.00001 > /tmp/statements.sql
与
--database
选项
一起使用时
,
--rewrite-db
首先应用
该
选项;
然后
--database
使用重写的数据库名称应用选项。
提供选项的顺序在这方面没有区别。
这意味着,例如,如果
mysqlbinlog可以
开始使用
--rewrite-db='mydb->yourdb'
--database=yourdb
,然后在数据库中的所有更新的任何表
mydb
,并
yourdb
包含在输出。
另一方面,如果它以启动方式启动
--rewrite-db='mydb->yourdb'
--database=mydb
,则
mysqlbinlog
根本不输出任何语句:由于
在应用
选项
之前
所有更新
mydb
都首先被重写为更新
,因此没有匹配的更新
。
yourdb
--database
--database=mydb
仅显示由具有给定服务器ID的服务器创建的事件。
仅使用第一
N
的位
server_id
来识别服务器。
如果二进制日志是由
mysqld
写入的
,server-id-bits设置为小于32,用户数据存储在最高位,则运行
mysqlbinlog
并
--server-id-bits
设置为32可以看到这些数据。
只有 随NDB Cluster分发提供 的 mysqlbinlog 版本支持此选项 ,或者使用NDB Cluster支持构建。
--server-public-key-path=
file_name
包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本的文件的路径名。
该文件必须采用PEM格式。
此选项适用于使用
sha256_password
或
caching_sha2_password
身份验证插件进行
身份验证的客户端
。
对于未使用其中一个插件进行身份验证的帐户,将忽略此选项。
如果不使用基于RSA的密码交换,也会忽略它,例如客户端使用安全连接连接到服务器的情况。
如果
给定并指定了有效的公钥文件,则优先于
。
--server-public-key-path=
file_name
--get-server-public-key
对于
sha256_password
,此选项仅适用于使用OpenSSL构建MySQL的情况。
有关
sha256_password
和
caching_sha2_password
插件的信息,请参见
第6.4.1.2节“SHA-256可插拔认证”
和
第6.4.1.3节“高速缓存SHA-2可插拔认证”
。
在输出中
添加
语句以指定用于处理日志文件的字符集。
SET
NAMES
charset_name
--shared-memory-base-name=
name
在Windows上,要使用的共享内存名称,用于使用共享内存连接到本地服务器。
默认值为
MYSQL
。
共享内存名称区分大小写。
必须使用
--shared-memory
启用共享内存连接
的
选项
启动服务器
。
--short-form
,
-s
仅显示日志中包含的语句,不显示任何额外信息或基于行的事件。 这仅用于测试,不应在生产系统中使用。 它已弃用,将在以后的版本中删除。
不要在输出中显示任何GTID。 从一个或多个包含GTID的二进制日志写入转储文件时需要这样做,如下例所示:
shell>mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql
shell>mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
shell>mysql -u root -p -e "source /tmp/dump.sql"
否则通常不建议在生产中使用此选项。
--socket=
,
path
-S
path
用于连接
localhost
,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。
以“开头”选项
--ssl
指定是否使用SSL连接到服务器,并指明在何处查找SSL密钥和证书。
请参见
第6.3.2节“加密连接的命令选项”
。
--ssl-fips-mode={OFF|ON|STRICT}
控制是否在客户端启用FIPS模式。
该
--ssl-fips-mode
选项与其他选项的不同之处在于
,它不用于建立加密连接,而是用于影响允许的加密操作。
请参见
第6.5节“FIPS支持”
。
--ssl-
xxx
--ssl-fips-mode
允许
这些
值:
OFF
:禁用FIPS模式。
ON
:启用FIPS模式。
STRICT
:启用
“
严格
”
FIPS模式。
如果OpenSSL的FIPS对象模块不可用时,对于唯一的允许值
--ssl-fips-mode
是
OFF
。
在这种情况下,设置
--ssl-fips-mode
为
ON
或
STRICT
导致客户端在启动时生成警告并在非FIPS模式下运行。
在时间戳等于或晚于
datetime
参数
的第一个事件处开始读取二进制日志
。
该
datetime
值相对于运行
mysqlbinlog
的计算机上的本地时区
。
该值应在接受的用于将一个格式
DATETIME
或
TIMESTAMP
数据类型。
例如:
外壳> mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000003
此选项对于时间点恢复很有用。 请参见 第7.3节“备份和恢复策略示例” 。
--start-position=
,
N
-j
N
在位置等于或大于的第一个事件处开始读取二进制日志
N
。
此选项适用于命令行上指定的第一个日志文件。
此选项对于时间点恢复很有用。 请参见 第7.3节“备份和恢复策略示例” 。
在时间戳等于或晚于
datetime
参数
的第一个事件处停止读取二进制日志
。
此选项对于时间点恢复很有用。
--start-datetime
有关该
datetime
值的
信息,
请参阅该
选项
的说明
。
此选项对于时间点恢复很有用。 请参见 第7.3节“备份和恢复策略示例” 。
此选项用于
--read-from-remote-server
。
它告诉
mysqlbinlog
保持连接到服务器。
否则,
当从服务器传输最后一个日志文件时,
mysqlbinlog将
退出。
--stop-never
暗示
--to-last-log
,因此只需要在命令行上命名要传输的第一个日志文件。
--stop-never
通常用于
--raw
进行实时二进制日志备份,但也可以
--raw
在服务器生成日志事件时
不使用它
来维护日志事件的连续文本显示。
随着
--stop-never
,默认情况下,
mysqlbinlog可以
当它连接到服务器报告1的服务器ID。
使用
--connection-server-id
显式地指定一个替代ID报告。
它可用于避免与从属服务器或其他
mysqlbinlog
进程
的ID冲突
。
请参见
第4.6.8.4节“指定mysqlbinlog服务器ID”
。
--stop-never-slave-server-id=
id
此选项已弃用,将在以后的版本中删除。
请使用该
--connection-server-id
选项指定要报告的mysqlbinlog的服务器ID。
在位置等于或大于的第一个事件处停止读取二进制日志
N
。
此选项适用于命令行上指定的最后一个日志文件。
此选项对于时间点恢复很有用。 请参见 第7.3节“备份和恢复策略示例” 。
--tls-ciphersuites=
ciphersuite_list
对于客户端程序,指定客户端允许加密连接的TLSv1.3密码套件。 该值是一个或多个以冒号分隔的密码组名称的列表。 可以为此选项命名的密码套件取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
MySQL 8.0.16中添加了此选项。
客户端允许加密连接的协议。 该值是一个或多个以逗号分隔的协议名称的列表。 可以为此选项命名的协议取决于用于编译MySQL的SSL库。 有关详细信息,请参见 第6.3.6节“加密连接协议和密码” 。
--to-last-log
,
-t
不要在MySQL服务器的请求二进制日志结束时停止,而是继续打印直到最后一个二进制日志结束。
如果将输出发送到同一MySQL服务器,这可能会导致无限循环。
此选项需要
--read-from-remote-server
。
--user=
,
user_name
-u
user_name
连接到远程服务器时使用的MySQL用户名。
--verbose
,
-v
重构行事件并将其显示为注释的SQL语句,并在适用的情况下使用表分区信息。
如果给出此选项两次(通过传入“-vv”或“--verbose
--verbose”),则输出包括指示列数据类型和一些元数据的注释,以及信息日志事件(如行查询日志事件,如果的
binlog_rows_query_log_events
系统变量被设置为
TRUE
。
有关显示
行事件输出
--base64-output
和
--verbose
对行事件输出
的影响的示例
,请参见
第4.6.8.2节“mysqlbinlog行事件显示”
。
验证二进制日志文件中的校验和。
--version
,
-V
显示版本信息并退出。
使用此选项时显示 的 mysqlbinlog 版本号为3.4。
你可以管的输出 mysqlbinlog可以 到 MySQL的 客户端来执行包含在二进制日志中的事件。 当您有旧备份时,此技术用于从崩溃中恢复(请参见 第7.5节“使用二进制日志进行时间点(增量)恢复” )。 例如:
外壳> mysqlbinlog binlog.000001 | mysql -u root -p
要么:
外壳> mysqlbinlog binlog.[0-9]* | mysql -u root -p
如果
mysqlbinlog
生成的语句
可能包含
BLOB
值,那么当
mysql
处理它们
时,这些
语句
可能
会导致问题
。
在这种情况下,
使用该
选项
调用
mysql
--binary-mode
。
如果需要首先修改语句日志(例如,删除因某些原因不想执行的语句), 也可以将 mysqlbinlog 的输出重定向 到文本文件。 编辑文件后,使用它作为 mysql 程序的 输入来执行它包含的语句 :
shell>mysqlbinlog binlog.000001 > tmpfile
shell>edit tmpfile
...... 外壳>mysql -u root -p < tmpfile
当
使用该
选项
调用
mysqlbinlog时
--start-position
,它仅显示二进制日志中偏移量大于或等于给定位置的事件(给定位置必须与一个事件的开头匹配)。
它还具有在看到具有给定日期和时间的事件时停止和启动的选项。
这使您可以使用该
--stop-datetime
选项
执行时间点恢复
(例如,可以说
“
将我的数据库前滚到今天上午10:30的状态
”
)。
处理多个文件。 如果要在MySQL服务器上执行多个二进制日志,则安全方法是使用与服务器的单个连接来处理它们。 这是一个演示可能 不安全 的示例 :
shell>mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
shell>mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!
如果第一个日志文件包含
CREATE
TEMPORARY
TABLE
语句而第二个日志包含使用临时表的语句,
则使用多个服务器连接以这种方式处理二进制日志会导致问题
。
当第一个
mysql
进程终止时,服务器将删除临时表。
当第二个
mysql
进程尝试使用该表时,服务器报告
“
未知表”。
”
要避免这样的问题,请使用 单个 mysql 进程来执行要处理的所有二进制日志的内容。 这是一种方法:
外壳> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
另一种方法是将所有日志写入单个文件,然后处理该文件:
shell>mysqlbinlog binlog.000001 > /tmp/statements.sql
shell>mysqlbinlog binlog.000002 >> /tmp/statements.sql
shell>mysql -u root -p -e "source /tmp/statements.sql"
从MySQL 8.0.12开始,您还可以
使用shell管道
将多个二进制日志文件
作为流输入提供
给
mysqlbinlog
。
压缩二进制日志文件的存档可以解压缩并直接提供给
mysqlbinlog
。
在此示例中,
binlog-files_1.gz
包含多个二进制日志文件以进行处理。
管道提取内容
binlog-files_1.gz
,将二进制日志文件
作为标准输入
传递给
mysqlbinlog
,并将
mysqlbinlog
的输出通过管道
传输
到
mysql
客户端执行:
外壳> gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot -p
您可以指定多个存档文件,例如:
外壳> gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot -p
对于流式输入,请勿使用
--stop-position
,因为
mysqlbinlog
无法识别要应用此选项的最后一个日志文件。
LOAD DATA操作。
mysqlbinlog
可以生成在
LOAD
DATA
没有原始数据文件的情况下
重现
操作的
输出
。
mysqlbinlog
将数据复制到临时文件并写入
LOAD
DATA
LOCAL
引用该文件
的
语句。
写入这些文件的目录的缺省位置是特定于系统的。
要明确指定目录,请使用该
--local-load
选项。
因为
mysqlbinlog
将
LOAD
DATA
语句
转换
为
LOAD
DATA
LOCAL
语句(即,它添加
LOCAL
),所以必须使用
LOCAL
启用
的
功能
配置用于处理语句的客户端和服务器
。
请参见
第6.1.6节“LOAD DATA LOCAL的安全问题”
。
为
LOAD
DATA
LOCAL
语句
创建的临时文件
不会
自动删除,因为在您实际执行这些语句之前需要它们。
在不再需要语句日志后,应自行删除临时文件。
这些文件可以在临时文件目录中找到,并且名称类似于
original_file_name-#-#
。
该
--hexdump
选项导致
mysqlbinlog
生成二进制日志内容的十六进制转储:
外壳> mysqlbinlog --hexdump master-bin.000001
十六进制输出由以...开头的注释行组成
#
,因此对于前面的命令,输出可能如下所示:
/ *!40019 SET @@ SESSION.max_insert_delayed_threads = 0 * /; / *!50003 SET @OLD_COMPLETION_TYPE = @@ COMPLETION_TYPE,COMPLETION_TYPE = 0 * /; #at 4 #051024 17:24:13服务器ID 1 end_log_pos 98 #Location Timestamp Type Master ID Size Master Pos Flags #00000004 9d fc 5c 43 0f 01 00 00 00 5e 00 00 00 62 00 00 00 00 00 #00000017 04 00 35 2e 30 2e 31 35 2d 64 65 62 75 67 2d 6c | ..5.0.15.debug.l | #00000027 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | og .............. | #00000037 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ | #00000047 00 00 00 00 9d fc 5c 43 13 38 0d 00 08 00 12 00 | ....... C.8 ...... | #00000057 04 04 04 04 12 00 00 4b 00 04 1a | ....... K ... | #Start:binlog v 4,server v 5.0.15-debug-log created 051024 17:24:13 #在启动时 ROLLBACK;
十六进制转储输出当前包含以下列表中的元素。 此格式可能会有所变化。 有关二进制日志格式的更多信息,请参阅 MySQL内部:二进制日志 。
Position
:日志文件中的字节位置。
Timestamp
:事件时间戳。
在所示的示例中,
'9d fc 5c 43'
是
'051024 17:24:13'
十六进制
的表示
。
Type
:事件类型代码。
Master ID
:创建事件的主服务器的服务器ID。
Size
:事件的大小(以字节为单位)。
Master Pos
:原始主日志文件中下一个事件的位置。
Flags
:事件标志值。
以下示例说明了
mysqlbinlog
如何
显示指定数据修改的行事件。
这些对应于与事件
WRITE_ROWS_EVENT
,
UPDATE_ROWS_EVENT
和
DELETE_ROWS_EVENT
类型代码。
该
--base64-output=DECODE-ROWS
和
--verbose
选项可用于影响排事件输出。
假设服务器正在使用基于行的二进制日志记录,并且您执行以下语句序列:
创建表t ( id INT NOT NULL, name VARCHAR(20)NOT NULL, date DATE NULL )ENGINE = InnoDB; 开始交易; INSERT IN TO VALUES(1,'apple',NULL); UPDATE t SET name ='pear',date ='2009-01-01'WHERE id = 1; DELETE FROM t WHERE id = 1; 承诺;
默认情况下,
mysqlbinlog
使用
BINLOG
语句
显示编码为base-64字符串的行事件
。
省略多余的行,前面的语句序列产生的行事件的输出如下所示:
外壳> mysqlbinlog log_file
...
#218
#080828 15:03:08服务器id 1 end_log_pos 258 Write_rows:table id 17标志:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA // 8AQAAAAVhcHBsZQ ==
“/ * * /!;
...
#302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows:table id 17 flags:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA //// AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
“/ * * /!;
...
#400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows:table id 17 flags:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA // 4AQAAAARwZWFyIbIP
“/ * * /!;
要以
“
伪SQL
”
语句
的形式将行事件视为注释,请
使用
或
选项
运行
mysqlbinlog
。
此输出级别还显示适用的表分区信息。
输出将包含以下行开头的行
:
--verbose
-v
###
外壳> mysqlbinlog -v log_file
...
#218
#080828 15:03:08服务器id 1 end_log_pos 258 Write_rows:table id 17标志:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA // 8AQAAAAVhcHBsZQ ==
“/ * * /!;
### INSERT INTO test.t
### SET
### @ 1 = 1
### @ 2 ='apple'
### @ 3 = NULL
...
#302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows:table id 17 flags:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA //// AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
“/ * * /!;
###更新test.t
### WHERE
### @ 1 = 1
### @ 2 ='apple'
### @ 3 = NULL
### SET
### @ 1 = 1
### @ 2 ='梨'
### @ 3 ='2009:01:01'
...
#400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows:table id 17 flags:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA // 4AQAAAARwZWFyIbIP
“/ * * /!;
### DELETE FROM test.t
### WHERE
### @ 1 = 1
### @ 2 ='梨'
### @ 3 ='2009:01:01'
指定
--verbose
或
-v
两次也显示每列的数据类型和一些元数据,以及信息日志事件,如
binlog_rows_query_log_events
系统变量设置
为行查询日志事件
TRUE
。
每个列更改后,输出将包含一个附加注释:
外壳> mysqlbinlog -vv log_file
...
#218
#080828 15:03:08服务器id 1 end_log_pos 258 Write_rows:table id 17标志:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA // 8AQAAAAVhcHBsZQ ==
“/ * * /!;
### INSERT INTO test.t
### SET
### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
### @ 2 ='apple'/ * VARSTRING(20)meta = 20 nullable = 0 is_null = 0 * /
### @ 3 = NULL / * VARSTRING(20)meta = 0 nullable = 1 is_null = 1 * /
...
#302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows:table id 17 flags:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA //// AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP
“/ * * /!;
###更新test.t
### WHERE
### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
### @ 2 ='apple'/ * VARSTRING(20)meta = 20 nullable = 0 is_null = 0 * /
### @ 3 = NULL / * VARSTRING(20)meta = 0 nullable = 1 is_null = 1 * /
### SET
### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
### @ 2 ='pear'/ * VARSTRING(20)meta = 20 nullable = 0 is_null = 0 * /
### @ 3 ='2009:01:01'/ * DATE meta = 0 nullable = 1 is_null = 0 * /
...
#400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows:table id 17 flags:STMT_END_F
BINLOG'
fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ =
fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA // 4AQAAAARwZWFyIbIP
“/ * * /!;
### DELETE FROM test.t
### WHERE
### @ 1 = 1 / * INT meta = 0 nullable = 0 is_null = 0 * /
### @ 2 ='pear'/ * VARSTRING(20)meta = 20 nullable = 0 is_null = 0 * /
### @ 3 ='2009:01:01'/ * DATE meta = 0 nullable = 1 is_null = 0 * /
您可以
通过使用
来告诉
mysqlbinlog
来禁止
BINLOG
行事件
的
语句
--base64-output=DECODE-ROWS
选项
。
这类似
--base64-output=NEVER
但如果找到行事件则不会退出并返回错误。
的组合
--base64-output=DECODE-ROWS
,并
--verbose
提供了一个便捷的方式,看看行事件只是作为SQL语句:
外壳> mysqlbinlog -v --base64-output=DECODE-ROWS log_file
...
#218
#080828 15:03:08服务器id 1 end_log_pos 258 Write_rows:table id 17标志:STMT_END_F
### INSERT INTO test.t
### SET
### @ 1 = 1
### @ 2 ='apple'
### @ 3 = NULL
...
#302
#080828 15:03:08 server id 1 end_log_pos 356 Update_rows:table id 17 flags:STMT_END_F
###更新test.t
### WHERE
### @ 1 = 1
### @ 2 ='apple'
### @ 3 = NULL
### SET
### @ 1 = 1
### @ 2 ='梨'
### @ 3 ='2009:01:01'
...
#400
#080828 15:03:08 server id 1 end_log_pos 442 Delete_rows:table id 17 flags:STMT_END_F
### DELETE FROM test.t
### WHERE
### @ 1 = 1
### @ 2 ='梨'
### @ 3 ='2009:01:01'
BINLOG
如果您打算重新执行
mysqlbinlog
输出,
则不应该禁止
语句
。
--verbose
行事件
生成的SQL语句
比相应的
BINLOG
语句
更具可读性
。
但是,它们与生成事件的原始SQL语句不完全对应。
以下限制适用:
原始列名称将丢失并替换为
,其中
是列号。
@
N
N
二进制日志中没有字符集信息,这会影响字符串列显示:
对应的二进制和非二进制字符串类型(
BINARY
和
CHAR
,
VARBINARY
和
VARCHAR
,
BLOB
和
TEXT
)
之间没有区别
。
输出使用
STRING
固定长度字符串和
VARSTRING
可变长度字符串
的数据类型
。
对于多字节字符集,二进制日志中不存在每个字符的最大字节数,因此字符串类型的长度以字节而不是字符显示。
例如,
STRING(4)
将用作以下任一列类型的值的数据类型:
CHAR(4)CHARACTER SET latin1 CHAR(2)CHARACTER SET ucs2
由于类型事件的存储格式
UPDATE_ROWS_EVENT
,
UPDATE
语句将与
WHERE
子句前面的
SET
子句
一起显示
。
对行事件的正确解释需要来自二进制日志开头的格式描述事件的信息。
因为
mysqlbinlog
事先不知道日志的其余部分是否包含行事件,所以默认情况下它会
BINLOG
在输出的初始部分
使用
语句
显示格式描述事件
。
如果已知二进制日志不包含任何需要
BINLOG
语句的
事件
(即没有行事件),则
--base64-output=NEVER
可以使用
该
选项来防止写入此标头。
默认情况下,
mysqlbinlog
读取二进制日志文件并以文本格式显示其内容。
这使您可以更轻松地检查文件中的事件并重新执行它们(例如,通过使用输出作为
mysql的
输入
)。
mysqlbinlog
可以直接从本地文件系统读取日志文件,或者,通过该
--read-from-remote-server
选项,它可以连接到服务器并从该服务器请求二进制日志内容。
mysqlbinlog
将文本输出写入其标准输出,或者
如果给出
该
选项,则将
文件输出写入
选项
的值
。
--result-file=
file_name
mysqlbinlog 可以读取二进制日志文件并写入包含相同内容的新文件,即二进制格式而不是文本格式。 此功能使您可以轻松备份其原始格式的二进制日志。 mysqlbinlog 可以进行静态备份,备份一组日志文件,并在到达最后一个文件的末尾时停止。 它还可以进行连续( “ 实时 ” )备份,当它到达最后一个日志文件的末尾时保持与服务器的连接,并在生成它们时继续复制新事件。 在连续备份操作中, mysqlbinlog 运行直到连接结束(例如,当服务器退出时)或 强制终止 mysqlbinlog 。 当连接结束时, mysqlbinlog 不会等待 并重 试连接,这与从属复制服务器不同。 要在服务器重新启动后继续进行实时备份,还必须重新启动 mysqlbinlog 。
mysqlbinlog 可以备份加密和未加密的二进制日志文件。 但是,使用 mysqlbinlog 生成的加密二进制日志文件的副本 以未加密的格式存储。
二进制日志备份要求您 至少使用两个选项 调用 mysqlbinlog :
该
--read-from-remote-server
(或
-R
)选项告诉
mysqlbinlog可以
连接到服务器并请求其二进制日志。
(这类似于连接到其主服务器的从属复制服务器。)
该
--raw
选项告诉
mysqlbinlog
写入原始(二进制)输出,而不是文本输出。
与此同时
--read-from-remote-server
,通常指定其他选项:
--host
指示服务器的运行位置,您可能还需要指定连接选项,例如
--user
和
--password
。
其他几个选项可用于
--raw
:
--stop-never
:到达最后一个日志文件的末尾后保持与服务器的连接,并继续阅读新事件。
--connection-server-id=
:
mysqlbinlog
连接服务器时报告
的服务器ID
。
当
id
--stop-never
被使用时,默认报告服务器ID为1。如果这导致与从属服务器的ID或其他冲突
mysqlbinlog可以
处理,使用
--connection-server-id
指定备用服务器ID。
请参见
第4.6.8.4节“指定mysqlbinlog服务器ID”
。
--result-file
:输出文件名的前缀,如稍后所述。
要使用
mysqlbinlog
备份服务器的二进制日志文件
,必须指定服务器上实际存在的文件名。
如果您不知道名称,请连接到服务器并使用该
SHOW
BINARY LOGS
语句查看当前名称。
假设该语句产生此输出:
MySQL的> SHOW BINARY LOGS;
+ --------------- + ----------- ----------- + +
| Log_name | File_size | 加密|
+ --------------- + ----------- ----------- + +
| binlog.000130 | 27459 | 没有|
| binlog.000131 | 13719 | 没有|
| binlog.000132 | 43268 | 没有|
+ --------------- + ----------- ----------- + +
使用该信息,您可以使用 mysqlbinlog 将二进制日志备份到当前目录,如下所示(在一行中输入每个命令):
要对
binlog.000130
through
进行静态备份
binlog.000132
,请使用以下任一命令:
mysqlbinlog --read-from-remote-server --host =host_name
--raw binlog.000130 binlog.000131 binlog.000132 mysqlbinlog --read-from-remote-server --host =host_name
--raw --to-last-log binlog.000130
第一个命令显式指定每个文件名。
第二个名称只是第一个文件,用于
--to-last-log
读取最后
一个文件
。
这些命令之间的区别在于,如果服务器
binlog.000133
在
mysqlbinlog
到达结束
之前
打开
binlog.000132
,则第一个命令将不读取它,但第二个命令将会读取。
要进行
mysqlbinlog
启动
的实时备份
binlog.000130
以复制现有日志文件,然后保持连接以在服务器生成它们时复制新事件:
mysqlbinlog --read-from-remote-server --host =host_name
--raw
--stop-never binlog.000130
使用时
--stop-never
,没有必要指定
--to-last-log
读取最后一个日志文件,因为该选项是隐含的。
如果没有
--raw
,
mysqlbinlog
会生成文本输出
--result-file
,如果给定,
则
选项指定写入所有输出的单个文件的名称。
使用
--raw
,
mysqlbinlog
为从服务器传输的每个日志文件写入一个二进制输出文件。
默认情况下,
mysqlbinlog
使用与原始日志文件相同的名称写入当前目录中的文件。
要修改输出文件名,请使用该
--result-file
选项。
与此同时
--raw
,
--result-file
选项值被视为修改输出文件名的前缀。
假设服务器当前具有名为
binlog.000999
up的
二进制日志文件
。
如果使用
mysqlbinlog --raw
备份文件,该
--result-file
选项将生成输出文件名,如下表所示。
您可以通过
--result-file
使用目录路径
开始
值
将文件写入特定目录
。
如果
--result-file
值仅包含目录名,则该值必须以路径名分隔符结尾。
输出文件如果存在则会被覆盖。
--result-file
选项
|
输出文件名 |
---|---|
--result-file=x |
xbinlog.000999
而且
|
--result-file=/tmp/ |
/tmp/binlog.000999
而且
|
--result-file=/tmp/x |
/tmp/xbinlog.000999
而且
|
以下示例描述了一个简单的场景,该场景显示了如何一起使用
mysqldump
和
mysqlbinlog
来备份服务器的数据和二进制日志,以及如何在发生数据丢失时使用备份来还原服务器。
该示例假定服务器正在主机上运行,
host_name
并且其第一个二进制日志文件已命名
binlog.000999
。
在一行中输入每个命令。
使用 mysqlbinlog 对二进制日志进行连续备份:
mysqlbinlog --read-from-remote-server --host = host_name
--raw
--stop-never binlog.000999
使用
mysqldump
创建转储文件作为服务器数据的快照。
使用
--all-databases
,
--events
和
--routines
备份所有数据,并将
--master-data=2
当前二进制日志坐标包含在转储文件中。
mysqldump --host =host_name
--all-databases --events --routines --master-data = 2>dump_file
定期 执行 mysqldump 命令以根据需要创建更新的快照。
如果发生数据丢失(例如,如果服务器崩溃),请使用最新的转储文件来还原数据:
mysql --host =host_name
-u root -p <dump_file
然后使用二进制日志备份重新执行在转储文件中列出的坐标之后写入的事件。 假设文件中的坐标如下所示:
- CHANGE MASTER TO MASTER_LOG_FILE ='binlog.001002',MASTER_LOG_POS = 27284;
如果命名了最新的备份日志文件
binlog.001004
,请重新执行以下日志事件:
mysqlbinlog --start-position = 27284 binlog.001002 binlog.001003 binlog.001004
| mysql --host = host_name
-u root -p
您可能会发现将备份文件(转储文件和二进制日志文件)复制到服务器主机更容易,以便更容易执行还原操作,或者MySQL不允许远程
root
访问。
使用 mysqlbinlog 进行 二进制日志备份 受以下限制:
如果连接丢失, mysqlbinlog 不会自动重新连接到MySQL服务器(例如,如果服务器重新启动或网络中断)。
备份的延迟类似于复制从站的延迟。
当使用该
--read-from-remote-server
选项
调用时
,
mysqlbinlog
连接到MySQL服务器,指定用于标识自身的服务器ID,并从服务器请求二进制日志文件。
您可以使用
mysqlbinlog
以多种方式从服务器请求日志文件:
指定一组显式命名的文件:对于每个文件,
mysqlbinlog
连接并发出
Binlog dump
命令。
服务器发送文件并断开连接。
每个文件有一个连接。
指定开始文件和
--to-last-log
:
mysqlbinlog
连接并
Binlog dump
为所有文件
发出
命令。
服务器发送所有文件并断开连接。
指定开始文件和
--stop-never
(暗示
--to-last-log
):
mysqlbinlog
连接并发出
Binlog dump
所有文件
的
命令。
服务器发送所有文件,但在发送最后一个文件后不会断开连接。
随着
--read-from-remote-server
而已,
mysqlbinlog可以
连接使用0服务器ID,它告诉服务器发送一个请求日志文件后断开。
使用
--read-from-remote-server
和
--stop-never
,
mysqlbinlog
使用非零服务器ID连接,因此服务器在发送最后一个日志文件后不会断开连接。
默认情况下,服务器ID为1,但可以使用此更改
--connection-server-id
。
因此,对于请求文件的前两种方式,服务器断开连接,因为
mysqlbinlog
指定服务器ID为0.如果
--stop-never
给出
,则不会断开连接,
因为
mysqlbinlog
指定非零服务器ID。
MySQL慢查询日志包含有关需要很长时间才能执行的查询的信息(请参见 第5.4.5节“慢查询日志” )。 mysqldumpslow 解析MySQL慢查询日志文件并总结其内容。
通常,
除了数字和字符串数据值的特定值之外
,
mysqldumpslow
对类似的查询进行分组。
它将
这些值
“
抽象
”
为
N
和
'S'
显示摘要输出。
要修改值抽象行为,请使用
-a
和
-n
选项。
像这样 调用 mysqldumpslow :
外壳> mysqldumpslow [options
] [log_file
...]
用法示例:
外壳> mysqldumpslow
从/usr/local/mysql/data/mysqld80-slow.log读取mysql慢查询日志
计数:1时间= 4.32s(4s)锁= 0.00s(0s)行= 0.0(0),根[root] @localhost
从t1插入t2 select *
计数:3时间= 2.53s(7s)锁= 0.00s(0s)行= 0.0(0),根[root] @localhost
插入到t2中选择*从t1限制N.
计数:3时间= 2.13s(6s)锁= 0.00s(0s)行= 0.0(0),根[root] @localhost
从t1插入t1 select *
mysqldumpslow 支持以下选项。
显示帮助消息并退出。
不要将所有数字
N
和字符串
抽象
为
'S'
。
--debug
,
-d
在调试模式下运行。
仅考虑与( grep- style)模式 匹配的查询 。
*-slow.log
文件名
的MySQL服务器的主机
名。
该值可以包含通配符。
默认值为
*
(全部匹配)。
服务器实例的名称(如果使用 mysql.server 启动脚本)。
不要从总时间中减去锁定时间。
N
名称
中至少有
数字的
抽象数字
。
反转排序顺序。
如何对输出进行排序。
sort_type
应从以下列表中选择
值
:
t
,
at
:按查询时间或平均查询时间排序
l
,
al
:按锁定时间或平均锁定时间排序
r
,
ar
:按发送的行或发送的平均行排序
c
:按计数排序
默认情况下,
mysqldumpslow
按平均查询时间(相当于
-s at
)
排序
。
仅显示
N
输出中
的第一个
查询。
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。
本节介绍在开发MySQL程序时可能会发现有用的一些实用程序。
在shell脚本中,您可以使用
my_print_defaults
程序来解析选项文件,并查看给定程序将使用哪些选项。
以下示例显示
my_print_defaults
在被要求显示在
[client]
和
[mysql]
组中
找到的选项时可能产生
的输出
:
外壳> my_print_defaults client mysql
--port = 3306
--socket = / TMP /的mysql.sock
--no-自动翻版
开发人员注意事项:只需在任何命令行参数之前处理相应组或组中的所有选项,即可在C客户端库中实现选项文件处理。 这适用于使用多次指定的选项的最后一个实例的程序。 如果您有一个C或C ++程序以这种方式处理多个指定选项但不读取选项文件,则只需添加两行来为其提供该功能。 检查任何标准MySQL客户端的源代码,看看如何执行此操作。
MySQL的其他几种语言接口基于C客户端库,其中一些提供了访问选项文件内容的方法。 这些包括Perl和Python。 有关详细信息,请参阅首选界面的文档。
mysql_config 为编译MySQL客户端并将其连接到MySQL提供了有用的信息。 它是一个shell脚本,因此只能在Unix和类Unix系统上使用。
pkg-config 可以用作 mysql_config 的替代方法, 用于获取编译MySQL应用程序所需的编译器标志或链接库等信息。 有关更多信息,请参见 第28.7.4.2节“使用pkg-config构建C API客户端程序” 。
mysql_config 支持以下选项。
C编译器标志,用于查找包含文件和关键编译器标志以及编译
libmysqlclient
库
时使用的定义
。
返回的选项与创建库时使用的特定编译器相关联,并且可能与您自己的编译器的设置冲突。
使用
--include
了仅包含包括路径更便携的选择。
喜欢
--cflags
,但对于C ++编译器标志。
用于查找MySQL包含文件的编译器选项。
链接MySQL客户端库所需的库和选项。
链接到线程安全的MySQL客户端库所需的库和选项。
在MySQL 8.0中,所有客户端库都是线程安全的,因此不需要使用此选项。
该
--libs
选项可用于所有情况。
配置MySQL时定义的默认插件目录路径名。
配置MySQL时定义的默认TCP / IP端口号。
配置MySQL时定义的默认Unix套接字文件。
显示指定配置变量的值。
允许的
var_name
值是
pkgincludedir
(头文件目录),
pkglibdir
(库目录)和
plugindir
(插件目录)。
MySQL发行版的版本号。
如果 在没有选项的情况下 调用 mysql_config ,它将显示它支持的所有选项的列表及其值:
外壳> mysql_config
用法:/ usr / local / mysql / bin / mysql_config [options]
选项:
--cflags [-I / usr / local / mysql / include / mysql -mcpu = pentiumpro]
--cxxflags [-I / usr / local / mysql / include / mysql -mcpu = pentiumpro]
--include [-I / usr / local / mysql / include / mysql]
--libs [-L / usr / local / mysql / lib / mysql -lmysqlclient
-lpthread -lm -lrt -lssl -lcrypto -ldl]
--libs_r [-L / usr / local / mysql / lib / mysql -lmysqlclient_r
-lpthread -lm -lrt -lssl -lcrypto -ldl]
--plugindir [/ usr / local / mysql / lib / plugin]
--socket [/tmp/mysql.sock]
--port [3306]
- 版本[5.8.0-m17]
--variable = VAR VAR是以下之一:
pkgincludedir [/ usr / local / mysql / include]
pkglibdir [/ usr / local / mysql / lib]
plugindir [/ usr / local / mysql / lib / plugin]
您可以 在命令行中使用反引号来 使用 mysql_config 来包含它为特定选项生成的输出。 例如,要编译和链接MySQL客户端程序,请使用 mysql_config ,如下所示:
gcc -c`mysql_config --cflags` progname.c gcc -o progname progname.o`mysql_config --libs`
my_print_defaults
显示选项文件的选项组中存在的选项。
输出指示读取指定选项组的程序将使用哪些选项。
例如,
mysqlcheck
程序读取
[mysqlcheck]
和
[client]
选项组。
要查看标准选项文件中这些组中存在哪些选项,
请
像这样
调用
my_print_defaults
:
外壳>my_print_defaults mysqlcheck client
--user =名为myUsername --password =password
主机=本地主机
输出由选项组成,每行一个,其形式将在命令行中指定。
my_print_defaults 支持以下选项。
--help
,
-?
显示帮助消息并退出。
--config-file=
,
file_name
--defaults-file=
,
file_name
-c
file_name
只读给定的选项文件。
--debug=
,
debug_options
-#
debug_options
编写调试日志。
典型的
debug_options
字符串是
。
默认是
。
d:t:o,
file_name
d:t:o,/tmp/my_print_defaults.trace
--defaults-extra-file=
,
file_name
--extra-file=
,
file_name
-e
file_name
在全局选项文件之后读取此选项文件,但在用户选项文件之前(在Unix上)。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--defaults-group-suffix=
,
suffix
-g
suffix
除了在命令行上命名的组之外,还要读取具有给定后缀的组。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--login-path=
,
name
-l
name
从
.mylogin.cnf
登录路径文件中
的指定登录路径中读取选项
。
阿
“
登录路径
”
是含有指定要连接到哪个MySQL服务器和选项哪个帐户作为认证选项组。
要创建或修改登录路径文件,请使用
mysql_config_editor
实用程序。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--no-defaults
,
-n
返回一个空字符串。
有关此选项和其他选项文件选项的其他信息,请参见 第4.2.2.3节“影响选项文件处理的命令行选项” 。
--show
,
-s
my_print_defaults 默认掩盖密码。 使用此选项可将密码显示为明文。
--verbose
,
-v
详细模式。 打印有关程序功能的更多信息。
--version
,
-V
显示版本信息并退出。
所述 lz4_decompress 实用程序解压缩 mysqlpump 这是使用LZ4压缩创建的输出。
如果MySQL配置了该
-DWITH_LZ4=system
选项,
则不会构建
lz4_decompress
。
在这种情况下,
可以使用
系统
lz4
命令。
像这样 调用 lz4_decompress :
外壳> lz4_decompress input_file
output_file
例:
shell>mysqlpump --compress-output=LZ4 > dump.lz4
shell>lz4_decompress dump.lz4 dump.txt
要查看帮助消息,请调用 不 带参数的 lz4_decompress 。
要解压缩 mysqlpump ZLIB压缩输出,请使用 zlib_decompress 。 请参见 第4.8.3节“ zlib_decompress - 解压缩mysqlpump ZLIB压缩输出” 。
perror 显示MySQL或操作系统错误代码的错误消息。 像这样 调用 perror :
外壳> perror [options
] errorcode
...
perror
试图灵活地理解其论点。
例如,对于该
ER_WRONG_VALUE_FOR_VAR
误差,
PERROR
理解任何这些参数:
1231
,
001231
,
MY-1231
,或
MY-001231
,或
ER_WRONG_VALUE_FOR_VAR
。
外壳> perror 1231
MySQL错误代码MY-001231(ER_WRONG_VALUE_FOR_VAR):变量'% - .64s'
不能设置为'% - 。200s'的值
如果错误编号在MySQL和操作系统错误重叠的范围内,则 perror 会显示以下错误消息:
外壳> perror 1 13
操作系统错误代码1:不允许操作
MySQL错误代码MY-000001:无法创建/写入文件'%s'(OS错误%d - %s)
操作系统错误代码13:权限被拒绝
MySQL错误代码MY-000013:无法获取'%s'的统计信息(OS errno%d - %s)
要获取MySQL Cluster错误代码的错误消息,请使用 ndb_perror 实用程序。
系统错误消息的含义可能取决于您的操作系统。 给定的错误代码可能意味着不同操作系统上的不同内容。
perror 支持以下选项。
所述 zlib_decompress 实用程序解压缩 mysqlpump 这是使用ZLIB压缩创建的输出。
如果使用该
-DWITH_ZLIB=system
选项
配置MySQL
,
则不会构建
zlib_decompress
。
在这种情况下,
可以使用
系统
openssl zlib
命令。
像这样 调用 zlib_decompress :
外壳> zlib_decompress input_file
output_file
例:
shell>mysqlpump --compress-output=ZLIB > dump.zlib
shell>zlib_decompress dump.zlib dump.txt
要查看帮助消息,请调用 不 带参数的 zlib_decompress 。
要解压缩 mysqlpump LZ4压缩输出,请使用 lz4_decompress 。 请参见 第4.8.1节“ lz4_decompress - 解压缩mysqlpump LZ4压缩输出” 。
本节列出了MySQL直接或间接使用的环境变量。 其中大部分也可以在本手册的其他地方找到。
命令行上的选项优先于选项文件和环境变量中指定的值,选项文件中的值优先于环境变量中的值。 在许多情况下,最好使用选项文件而不是环境变量来修改MySQL的行为。 请参见 第4.2.2.2节“使用选项文件” 。
变量 | 描述 |
---|---|
AUTHENTICATION_PAM_LOG |
PAM 身份验证插件调试日志记录设置。 |
CC |
C编译器的名称(用于运行 CMake )。 |
CXX |
C ++编译器的名称(用于运行 CMake )。 |
CC |
C编译器的名称(用于运行 CMake )。 |
DBI_USER |
Perl DBI的默认用户名。 |
DBI_TRACE |
Perl DBI的跟踪选项。 |
HOME |
mysql
历史文件
的默认路径
是
$HOME/.mysql_history
。
|
LD_RUN_PATH |
用于指定的位置
libmysqlclient.so
。
|
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN |
启用
mysql_clear_password
身份验证插件;
请参见
第6.4.1.4节“客户端明文可插拔认证”
。
|
LIBMYSQL_PLUGIN_DIR |
查找客户端插件的目录。 |
LIBMYSQL_PLUGINS |
客户端插件预加载。 |
MYSQL_DEBUG |
调试时调试跟踪选项。 |
MYSQL_GROUP_SUFFIX |
选项组后缀值(如指定
--defaults-group-suffix
)。
|
MYSQL_HISTFILE |
mysql
历史文件
的路径
。
如果设置了此变量,则其值将覆盖默认值
$HOME/.mysql_history
。
|
MYSQL_HISTIGNORE |
模式指定
mysql
不应该记录的
语句
$HOME/.mysql_history
,或者
syslog
是否
--syslog
给出。
|
MYSQL_HOME |
服务器特定
my.cnf
文件所在
目录的路径
。
|
MYSQL_HOST |
mysql 命令行客户端 使用的默认主机名 。 |
MYSQL_OPENSSL_UDF_DH_BITS_THRESHOLD |
最大密钥长度
CREATE_DH_PARAMETERS()
。
请参见
第12.19.2节“MySQL Enterprise Encryption用法和示例”
。
|
MYSQL_OPENSSL_UDF_DSA_BITS_THRESHOLD |
最大DSA密钥长度
CREATE_ASYMMETRIC_PRIV_KEY()
。
请参见
第12.19.2节“MySQL Enterprise Encryption用法和示例”
。
|
MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLD |
最大RSA密钥长度
CREATE_ASYMMETRIC_PRIV_KEY()
。
请参见
第12.19.2节“MySQL Enterprise Encryption用法和示例”
。
|
MYSQL_PS1 |
要在 mysql 命令行客户端中 使用的命令提示符 。 |
MYSQL_PWD |
连接 mysqld 时的默认密码 。 使用它是不安全的。 请参见 第6.1.2.1节“密码安全的最终用户指南” 。 |
MYSQL_TCP_PORT |
默认的TCP / IP端口号。 |
MYSQL_TEST_LOGIN_FILE |
.mylogin.cnf
登录路径文件
的名称
。
|
MYSQL_TEST_TRACE_CRASH |
测试协议跟踪插件是否会崩溃客户端。 见下表注释。 |
MYSQL_TEST_TRACE_DEBUG |
测试协议跟踪插件是否产生输出。 见下表注释。 |
MYSQL_UNIX_PORT |
默认的Unix套接字文件名;
用于连接
localhost
。
|
MYSQLX_TCP_PORT |
X Plugin默认的TCP / IP端口号。 |
MYSQLX_UNIX_PORT |
X Plugin默认的Unix套接字文件名;
用于连接
localhost
。
|
NOTIFY_SOCKET |
mysqld 用来与systemd通信的 套接字 。 |
PATH |
用于shell来查找MySQL程序。 |
PKG_CONFIG_PATH |
的位置
mysqlclient.pc
pkg配置
文件。
见下表注释。
|
TMPDIR |
创建临时文件的目录。 |
TZ |
这应该设置为您当地的时区。 请参见 第B.4.3.7节“时区问题” 。 |
UMASK |
创建文件时的用户文件创建模式。 见下表注释。 |
UMASK_DIR |
创建目录时的用户目录创建模式。 见下表注释。 |
USER |
连接到 mysqld 时Windows上的默认用户名 。 |
有关 mysql 历史文件的信息,请参见 第4.5.1.3节“mysql客户端日志记录” 。
MYSQL_TEST_LOGIN_FILE
是登录路径文件的路径名(由
mysql_config_editor
创建的文件
)。
如果未设置,则默认值为
%APPDATA%\MySQL\.mylogin.cnf
Windows和
$HOME/.mylogin.cnf
非Windows系统上的
目录
。
请参见
第4.6.7节“
mysql_config_editor
- MySQL配置实用程序”
。
在
MYSQL_TEST_TRACE_DEBUG
和
MYSQL_TEST_TRACE_CRASH
变量控制测试协议跟踪客户端插件,如果MySQL启用该插件内置。
有关更多信息,请参见
第29.2.4.11.1节“使用测试协议跟踪插件”
。
默认值
UMASK
和
UMASK_DIR
值分别为
0640
和
0750
。
如果以零开头,
MySQL假定值为
UMASK
或
UMASK_DIR
八进制。
例如,设置
UMASK=0600
相当于
UMASK=384
因为0600八进制是384十进制。
在
UMASK
和
UMASK_DIR
变数,尽管他们的名字,被用作模式,没有口罩:
PKG_CONFIG_PATH
如果使用
pkg-config
构建MySQL程序
,可能需要进行设置
。
请参见
第28.7.4.2节“使用pkg-config构建C API客户端程序”
。