4章MySQL程序

目录

4.1概述MySQL程序
4.2使用MySQL的程序
4.2.1调用mysql程序
4.2.2连接MySQL服务器
4.2.3指定程序选项
4.2.4使用命令行选项
4.2.5程序选项修饰符
4.2.6使用选项文件
4.2.7命令行选项选择文件处理的影响
4.2.8使用选项设置程序变量
4.2.9 Option Defaults, Options Expecting Values, and the = Sign
4.2.10设置环境变量
4.3 MySQL服务器,服务器启动程序
4.3.1mysqld- MySQL服务器
4.3.2mysqld_safeMySQL服务器启动脚本
4.3.3mysql.serverMySQL服务器启动脚本
4.3.4mysqld _多管理多个MySQL服务器
4.4 MySQL安装相关程序
4.4.1公司_错误编译MySQL错误信息文件
4.4.2MySQL安装的安全_ _提高MySQL安装的安全性
4.4.3mysql_ssl_rsa_setup创建SSL / RSA文件
4.4.4MySQL _ tzinfo _到_ SQL-加载时区表
4.4.5mysql_upgrade检查升级MySQL表
4.5 MySQL客户端程序
4.5.1MySQL- MySQL命令行工具
4.5.2mysqladmin-管理MySQL服务器客户端
4.5.3mysqlcheck一个表的维护程序
4.5.4mysqldump一个数据库备份方案
4.5.5mysqlimport-数据导入程序
4.5.6mysqlpump一个数据库备份方案
4.5.7MySQLShow显示数据库、表和列的信息,
4.5.8mysqlslap负载仿真客户端
4.6 MySQL管理实用程序
4.6.1ibd2sdi- Innodb Tabla外空SDI提取用途
4.6.2innochecksum离线InnoDB文件校验工具
4.6.3ftdump MyISAM _显示全文索引信息
4.6.4myisamchkMyISAM表-维修工具
4.6.5myisamlog日志文件内容显示MyISAM
4.6.6MyISAMPack-生成压缩,read - only Myisam Table
4.6.7_ _ MySQL配置编辑器MySQL的配置实用程序
4.6.8mysqlbinlog用于处理二进制日志文件的效用
4.6.9mysqldumpslow总结慢查询日志文件
4.7 MySQL程序开发工具
4.7.1_配置MySQL-编译客户端显示选项
4.7.2my_print_defaults从选项文件显示选项
4.7.3resolve_stack_dump解决数字堆栈转储符号
4.8杂项程序
4.8.1lz4_decompress-解压缩mysqlpump lz4压缩输出
4.8.2perror解释错误代码
4.8.3resolveip-解析主机名到IP地址或反之亦然
4.8.4zlib_decompress-解压缩mysqlpump zlib压缩输出
4.9 MySQL程序的环境变量

本章提供了由甲骨文公司提供的MySQL命令行程序的简要概述。还讨论了一般的语法指定选项,当你运行这些程序。大多数程序选项,具体到自己的操作,但是选择的语法是类似的所有的人。最后,本章提供了更详细的个别项目的描述,包括他们认识的选项。

4.1概述MySQL程序

有在MySQL安装许多不同的程序。本节提供的简要概述。后面的章节提供了更详细的描述每一个。每个程序的描述表明它的调用语法和它支持的选项。

大多数的MySQL分布包括所有这些项目,除了那些程序是特定于平台的。(例如,服务器启动脚本不使用Windows。)是个例外,转速分布更专业。有服务器一转,另一个客户端程序,等等。如果你似乎缺少一个或多个程序,看2章,MySQL的安装和升级,对类型的分布信息和所包含的内容。你可能有一个分配,不包括所有的程序,你需要安装额外的软件包。

每个MySQL程序需要许多不同的选项。大多数程序提供--help选项,你可以使用来描述程序的不同选择。例如,尝试MySQL的帮助

您可以重写默认的选项值为MySQL程序通过指定命令行或在一个选项文件选项。看到4.2节,“使用MySQL程序”,在调用程序和指定程序选项的一般信息。

MySQL服务器,mysqld,是主程序,做大部分的工作在一个MySQL的安装。服务器是伴随着几个相关的脚本,帮助您启动和停止服务器:

几个项目进行设置操作MySQL的安装或升级过程中:

MySQL客户端程序连接到MySQL服务器:

MySQL管理实用程序:

MySQL的程序开发工具:

杂项工具:

甲骨文公司还提供了MySQL WorkbenchGUI工具,用于管理MySQL服务器和数据库,创建、执行和评价的查询,和迁移模式和数据从其他关系数据库管理系统使用MySQL。额外的GUI工具包括MySQL的通知MySQL的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,“最终用户指南的密码安全”

4.2使用MySQL的程序

4.2.1调用mysql程序

调用mysql程序命令行(即,从你的内核或命令提示符),输入程序名称后跟任何期权或其他参数需指导你想要它做的程序。下面的命令显示了一些示例程序调用。shell>代表你的命令解释器的提示;它不是你的类型。特别提示你看到的取决于你的命令解释器。典型的提示美元SHksh,或猛击%CSHtcsh,和C:\>为Windows命令程序命令提示符命令解释器

shell> mysql --user=root test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump -u root personnel

参数与单或双破折号开始(-——)指定程序选项。选项通常表明连接程序的类型应该为服务器或影响其运作模式。选项语法描述4.2.3节”指定程序选项”

nonoption参数(没有领先的短跑参数)为程序提供额外的信息。例如,在MySQL程序解释第一nonoption论点作为数据库名称,所以命令mysql --user=root test表明你想使用测试数据库

后面的章节描述个人计划表明,期权计划支持和描述任何额外的nonoption争论的意义。

有些选项是一些方案共同。最常用的是--host(或H),--user(或U),和--password(或P)选项,指定连接参数。他们表示主机的MySQL服务器正在运行,并且用户的名字和你的MySQL帐户密码。所有的MySQL客户端程序了解这些选项;他们可以指定要连接到的服务器和服务器上的帐户使用。其他连接选项--port(或P)来指定一个TCP / IP端口号和--socket(或S)指定一个UNIX UNIX套接字文件(或命名管道的名字在Windows)。在选项,指定连接选项的更多信息,参见4.2.2节,“连接到服务器”

你会发现有必要调用mysql程序使用的路径名bin它们的安装目录。这是可能的情况下,如果你得到一个找不到程序错误当你尝试运行mysql程序从任何目录以外的bin目录让它使用MySQL更方便,你可以添加的路径名箱子目录到你的PATH环境变量设置。使您可以通过键入唯一的名称运行一个程序,而不是它的全路径名。例如,如果MySQL安装在/usr/local/mysql/bin,你可以通过调用它的运行程序MySQL,这是没有必要调用它/usr/local /斌/ MySQL的MySQL

咨询文件对你的命令解释器在设置你的指示PATH变量。设置环境变量的具体语法解释器。(一些信息了第4.2.10条,“环境变量”修改后的你。)PATH设置,打开窗户或记录一个新的控制台窗口又在Unix使设置生效。

4.2.2连接MySQL服务器

本节介绍了如何建立一个MySQL服务器的连接。额外的信息,如果您无法连接,看第6.2.9”故障,连接到MySQL”问题

一个客户端程序能够连接到MySQL服务器,必须使用适当的连接参数,如名称的主机服务器运行和用户的名字和你的MySQL帐户密码。每个连接参数有默认值,但是你可以重写他们必要的使用程序选项指定在命令行或在一个选项文件。

这里的例子使用MySQL客户端程序,但该原则适用于其他客户如mysqldumpmysqladmin,或MySQLShow

这个命令调用MySQL如果不指定任何参数的显式连接:

shell> mysql

因为没有参数选项,默认值的应用:

  • 默认的主机名localhost。在Unix上,这个有着特殊的意义,为后面介绍。

  • 默认的用户名是ODBC在Windows或Unix登录名在UNIX。

  • 如果既没有密码被发送-p也没有--password给出了

  • MySQL,第一nonoption参数作为默认的数据库名称。如果没有这样的选项,MySQL不选择默认的数据库

指定的主机名和用户名的明确,以及密码,提供适当的选项在命令行:

shell> mysql --host=localhost --user=myname --password=password mydb
shell> mysql -h localhost -u myname -ppassword mydb

密码选项,密码值是可选的:

  • 如果你使用一个-p--password选择和指定的密码值,必须有没有空间之间-p--password=和密码后

  • 如果你使用一个-p--password选项,但没有指定的密码值,客户端程序会提示您输入密码。密码不显示为你进入它。这比在命令行上给出密码更安全。在您的系统上的其他用户可能会看到一个密码在命令行上指定执行命令等PS auxw。看到第6.1.2.1,“最终用户指南的密码安全”

正如刚才提到的,包括命令行上的密码值可以是一个安全风险。为了避免这个问题,指定--passwordP没有任何以下密码值的选择:

shell> mysql --host=localhost --user=myname --password mydb
shell> mysql -h localhost -u myname -p mydb

当密码选项没有密码的值,客户端程序打印提示符,等待你输入密码。(在这些例子,mydb解释为一个密码,因为它是由一个空间从前面的密码选项分开。)

在一些系统中,图书馆的常规,MySQL使用提示密码自动限八个字符的密码。是与系统库的问题,不是用MySQL。在内部,MySQL没有密码的长度的任何限制。解决问题,改变你的MySQL密码的值是八或更少的字符,或者把你的密码在一个选项文件。

在Unix上,MySQL程序把主机名localhost特别是,在某种程度上,可能不同于你所期望的相比其他基于网络的程序。连接到本地服务器,MySQL程序试图利用UNIX套接字文件连接到本地服务器。发生这种情况,即使--portP选择了指定端口号。确保客户进行TCP/IP连接到本地服务器,使用--hostH指定主机名称的价值127.0.0.1,或IP地址或名称的本地服务器。你也可以指定连接协议明确,甚至本地服务器,利用--protocol=TCP选项。例如:

内核>mysql --host=127.0.0.1内核>mysql --protocol=TCP

这个--protocol选项允许你建立一个特定类型的连接,甚至当其他选项通常会默认一些其它的协议。

如果服务器配置为接受IPv6连接,客户端可以连接IPv6的使用--host=::1。看到5.1.11节,“IPv6的支持”

在Windows中,你可以强制一个MySQL客户端使用命名管道连接通过指定--pipe--protocol=PIPE通过选择或指定(期)作为主机名称。如果未启用命名管道连接,出现错误。使用--socket选项,如果你不想使用默认的管道名称指定管道的名称。

远程服务器连接使用TCP / IP。此命令连接到服务器上运行remote.example.com使用默认的端口号(3306):

内核>mysql --host=remote.example.com

指定一个端口号明确,使用--portP选项:

shell> mysql --host=remote.example.com --port=13306

您可以指定一个本地连接服务器的端口号,太。然而,如前所述,连接localhost在UNIX将默认使用socket文件。你需要强制TCP/IP连接已经描述或任何选项,指定一个端口号将被忽略。

这个命令,程序采用socket文件在UNIX和--port忽略选项:

内核>mysql --port=13306 --host=localhost

导致端口被使用,在这些方面调用程序:

shell> mysql --port=13306 --host=127.0.0.1
shell> mysql --port=13306 --protocol=TCP

下面的列表总结了选项,可以用来控制客户端程序连接到服务器:

  • --default-auth=plugin

    淡淡的客户端身份验证插件使用。看到第6.3.10,“认证”

  • --host=host_nameHhost_name

    主机服务器正在运行。默认值是localhost

  • --password[=pass_val]【—Ppass_val]

    mysql的帐号密码。如前所述,密码值是可选的,但如果有,一定有没有空间之间-p--password=和密码后。默认是不发密码。

  • --pipeW

    在Windows中,连接到使用命名管道服务器。必须启动服务器的--enable-named-pipe选项可启用命名管道连接。

  • --port=port_numPport_num

    用于连接的端口号,使用TCP / IP进行连接。默认端口号是三三六。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    这个选项显式指定协议用于连接到服务器。它是有用的,其他连接参数通常会导致协议被用作其他比你想要的人。例如,在UNIX系统的连接localhost使用UNIX socket文件默认了:

    内核>mysql --host=localhost

    强迫一个TCP/IP连接来代替,指定--protocol选项:

    内核>mysql --host=localhost --protocol=TCP

    下表显示了允许--protocol选择标准和指标,用于使用每一项价值。价值不太灵敏。

    --protocol价值连接协议允许操作系统
    TCPTCP/IP连接到本地或远程服务器全部
    SOCKETUNIX套接字文件连接到本地服务器Unix只
    PIPE命名管道连接到本地或远程服务器Windows只
    MEMORY共享内存连接到本地服务器Windows只
  • --shared-memory-base-name=name

    在Windows中,共享内存名,使用共享内存连接到本地服务器了。默认值是MYSQL。共享内存的名字是大小写敏感的。

    必须启动服务器的--shared-memory选项来启用共享内存连接。

  • --socket=file_nameSfile_name

    在Unix的UNIX套接字文件的名称使用,使用命名管道连接到本地服务器了。默认的UNIX套接字文件名/tmp/mysql.sock

    在Windows中,该命名管道的名称使用,为本地服务器的连接。默认的Windows管叫MySQL。管道名称不区分大小写。

    必须启动服务器的--enable-named-pipe选项可启用命名管道连接。

  • --ssl*

    选项,从--ssl用于建立安全连接,使用SSL的服务器,如果服务器配置SSL的支持。详情见第6.4.2,“加密连接”命令选项

  • --tls-version=protocol_list

    该协议允许客户端通过加密连接。价值是一个逗号分隔的列表包含一个或多个协议名称。可以指定此选项取决于用来编译MySQL的SSL库的协议。详情见第6.4.6,“加密连接协议和密码”

  • --user=user_nameUuser_name

    用户名的MySQL账户要使用。默认的用户名是ODBC在Windows或Unix登录名在UNIX。

可以指定不同的默认值被用来当你做一个连接,所以你不需要在命令行中输入你每次调用一个客户端程序。这可以在几个方面进行:

4.2.3指定程序选项

有指定MySQL程序选择的几种方式:

  • 列表中的选项在命令行下面的程序名称。这适用于某一特定的调用程序的选项是常见的。

  • 列表中选择文件,程序启动时读取选项。这对于你想要的程序使用,每次运行时选项是常见的。

  • 在环境变量列表的选项(见第4.2.10条,“环境变量”)。这种方法是有用的,你想把每次程序运行选项。在实践中,选择文件比较常用的用于此目的,但第5.7.3,“Unix”运行多个MySQL实例,讨论了环境变量可以是非常有益的一种情况。它描述了一个方便的技术,使用该变量指定的服务器和客户端程序,TCP / IP端口号和Unix套接字文件。

选项的处理顺序,所以如果一个选项指定多次,最后出现优先。下面的命令的原因MySQL连接到服务器上运行localhost

内核>mysql -h example.com -h localhost

如果冲突或相关方案,后来选项优先于早些时候的选择。下面的命令运行MySQL进入未列名模式:

shell> mysql --column-names --skip-column-names

MySQL程序确定哪些选项是首先通过检查环境变量,然后通过处理选项文件,然后通过查看命令行。这意味着,环境变量和命令行选项具有最低的优先级最高。

为服务器,一个例外的适用:mysqld-auto.cnf在数据目录中选择文件的最后处理,因此即使在命令行选项的优先级。

你可以利用MySQL的程序选项指定在一个选项文件程序默认的选项值的方法。这可以使你避免打字他们每次你运行程序,使您能够覆盖默认如果使用命令行选项的必要。

4.2.4使用命令行选项

程序选项在命令行上指定遵循这些规则:

  • 选择该命令名后给出

  • 一种选择的争论始于一个破折号或两个破折号,取决于它是否是一个短或长的选项名称形式。许多选项有短期和长期的形式。例如,-?帮助是该选项指示MySQL程序显示帮助信息的短期和长期的形式。

  • 复选框选项的名字是敏感的。-vV既合法又有不同的意义。(他们的相应的缩写形式--verbose——版本选项。)

  • 一些选项的取值以下的选项名称。例如,-h localhost--host=localhost表明MySQL服务器主机客户端程序。期权价值告诉程序的主机名,在MySQL服务器运行。

  • 一个长的选项,需要一个价值,单独的选项名称和一个值=标志一个短的选项,以价值、期权价值可以立即遵循选择信,或可以有之间的空间:- hlocalhost-h localhost是等价的。一个例外是指定你的MySQL密码的选项。这个选项可以在漫长的形式--password=pass_val或为--password。在后者的情况下(没有密码的值),程序会提示您输入密码。密码选项也可在短的形式Ppass_val或为P。然而,对于短期的形式,如果密码的值是给定的,它必须遵循选择的信没有中间的空间。这样做的原因是,如果一个空间如下选项字母,程序有没有办法知道是否有以下的说法应该是密码值或其他参数。因此,下面两个命令有两种完全不同的含义:

    shell> mysql -ptest
    shell> mysql -p test
    

    第一个命令指示MySQL使用密码值test,但没有指定默认数据库。第二指示MySQL提示密码值和使用test作为默认的数据库

  • 在选择名字,破折号(-underscore(鸭)_)可以互换使用。例如,--skip-grant-tables--skip_grant_tables是等价的。(然而,领先的破折号不能为下划线。)

  • 选项,以一个数值,值可以用后缀KM,或G表明乘数为1024*768,1024或1024。在MySQL 8.0.14,后缀也可以TP,和E表示一个乘数1024,1024或1024。后缀字母可以是大写或小写。

    例如,下面的命令告诉mysqladminping服务器的1024倍,睡在每平10秒:

    shell> mysqladmin --count=1K --sleep=10 ping
    
  • 当指定文件名选项值,避免了使用~shell元字符因为它可能无法解释你所期待的。

包含空格必须引用在命令行上给出的选项值。例如,在--execute(或)选项可用于MySQL通过SQL语句到服务器。使用此选项时,MySQL执行中的期权价值,退出报表。该语句必须用引号括起来。例如,你可以使用下面的命令来获取列表的用户帐户:

shell> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"
Enter password: ******
+------+-----------+
| User | Host      |
+------+-----------+
|      | gigan     |
| root | gigan     |
|      | localhost |
| jon  | localhost |
| root | localhost |
+------+-----------+
shell>
笔记

长期形成的(--execute)后面紧跟一个等号(=

如果你希望在一个语句中使用引用的值,你要么需要逃避内心的引号,或者使用不同类型的引号内的引用语句本身的声明。你的命令处理器的能力决定你的选择是否可以使用单或双引号和转义引号字符的语法。例如,如果您的命令处理器支持报价单或双引号,可以使用双引号声明,和任何引用的值在表单引号。

多个SQL语句可以在期权价值通过在命令行中,用分号分隔:

shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+---------------------+
| VERSION()           |
+---------------------+
| 5.8.0-m17-debug-log |
+---------------------+
+---------------------+
| NOW()               |
+---------------------+
| 2015-11-05 20:00:20 |
+---------------------+

4.2.5程序选项修饰符

一些选项布尔和控制行为,可以打开或关闭。例如,在MySQL客户端支持--column-names选项决定是否显示一列列的名称在查询结果的开始。默认情况下,启用此选项。但是,您可能希望禁用它,在某些情况下,如在发送输出MySQL到另一个程序,希望只看到数据而不是最初的标题行。

禁用的列名称,你可以使用任何这些形式指定选项:

--disable-column-names
--skip-column-names
--column-names=0

这个--disable-跳过前缀和=0后缀都有相同的效果:他们关闭相应的选项。

这个启用该选项可以在任何这些方面的规定:

--column-names
--enable-column-names
--column-names=1

价值观ON真的OFF,和错误的也认识到布尔选项(不区分大小写)。

如果期权是以--loose,一个程序不退出一个错误如果是不认识的选项,但不是唯一的一个警告的问题:

内核>mysql --loose-no-such-optionMySQL:警告:未知选项--松没有这样的选择”

这个--loose前缀可以是有用的当你运行多个安装程序从MySQL数据库在同一台机器上,在一个选项文件列表选项。一个选项,可能不是所有版本的程序确认可以使用——松就是前缀loose在一个选项文件)。的程序,识别过程通常选择版本和版本,不承认它发出警告而忽略它。

这个--maximum前缀是可用的mysqld只允许一个限制被放置在多大的客户端程序,可以设置会话的系统变量。为此,使用--maximum与变量名的前缀。例如,--maximum-max_heap_table_size=32M防止任何客户端从堆表大小的限制较大,超过了32M。

这个--maximum前缀是用于系统的变量,有一个会议的价值。如果应用于系统变量只有一个全局值,出现错误。例如,用--maximum-back_log=200,服务器产生这个错误:

Maximum value of 'back_log' cannot be set

4.2.6使用选项文件

大多数的MySQL程序可以读取选项文件启动选项(有时称为配置文件)。选项文件提供了一个方便的方式来指定常用的选项,所以他们不需要在命令行输入的每次运行一个程序。

判断一个程序读取选项文件,调用它的--help选项。(formysqld,使用--verbose--help。)如果程序读取选项文件,帮助信息指示文件看起来和它认可的选项组。

笔记

MySQL程序开始的--no-defaults选择不读选项以外的其他文件mylogin.cnf。

服务器开始的persisted_globals_load系统变量禁用不读mysqld-auto.cnf

许多选项文件是纯文本文件,使用任何文本编辑器创建。例外的是:

MySQL中寻找,在下面的讨论中描述的选项文件和读取任何存在。如果一个选择你想要的文件不存在,创建它使用适当的方法,正如上面所讨论的。

在Windows中,MySQL的程序读取从下表中显示的文件启动选项,按指定的顺序(排名第一的是先读文件,读取文件后优先)。

阅读在Windows系统文件表4.1选项

文件名目的
%WINDIR%\my.ini%WINDIR%\ my.cnf全局选项
C:\my.iniC:\ my.cnf全局选项
BASEDIR\my.iniBASEDIR\ my.cnf全局选项
defaults-extra-file指定的文件--defaults-extra-file,如果任何
%APPDATA%\MySQL\.mylogin.cnf标语选项(唯一客户)
DATADIR\mysqld-auto.cnf坚持用系统变量SET PERSISTpersist_only(服务器)

在前面的表,%WINDIR%代表你的Windows目录的位置。这是常见的c:\ Windows。使用下面的命令的值确定其精确位置WINDIR环境变量:

C:\>echo %WINDIR%

%APPDATA%表示Windows应用程序数据目录的价值。使用下面的命令的值确定其精确位置应用程序数据环境变量:

C:\> echo %APPDATA%

BASEDIR是MySQL的安装目录。当MySQL 8已经使用MySQL的安装程序安装,这通常是c:\PROGRAMDIRMySQL服务器MySQL 5.0 \ \哪里PROGRAMDIR代表项目目录(通常程序文件在Windows的英文版本),看2.3.3节,“MySQL的Windows安装程序”

DATADIR代表MySQL数据目录。用于发现mysqld-auto.cnf,其默认值是数据目录的位置建在当MySQL被编译,但可以改变--datadir作为一个选项文件或命令行选项前加工mysqld-auto.cnf加工

在UNIX和类UNIX系统,MySQL的程序读取从下表中显示的文件启动选项,按指定的顺序(排名第一的是先读文件,读取文件后优先)。

笔记

在UNIX平台上,MySQL忽略那些世界写入配置文件。这是故意的作为一种安全措施。

阅读在UNIX和类UNIX系统表4.2选项文件

文件名目的
/etc/my.cnf全局选项
/etc/mysql/my.cnf全局选项
SYSCONFDIR/my.cnf全局选项
$MYSQL_HOME/my.cnf服务器选项(服务器)
defaults-extra-file指定的文件--defaults-extra-file,如果任何
~/.my.cnfuser specific options
~/.mylogin.cnf使用特异性博客选项(只有客户)
DATADIR/mysqld-auto.cnf坚持用系统变量SET PERSISTpersist_only(服务器)

在前面的表,~表示当前用户的家目录(值为家

SYSCONFDIR表示指定的目录SYSCONFDIR选项CMake当MySQL建立。默认情况下,这是etc目录下找到安装目录的编制。

MYSQL_HOME是一个环境变量包含路径的目录服务器的特定my.cnf文件驻留。如果MYSQL_HOME是不是和你启动服务器使用mysqld_safe程序,mysqld_safe将其设置为BASEDIR,MySQL库的安装目录。

DATADIR代表MySQL数据目录。用于发现mysqld-auto.cnf,其默认值是数据目录的位置建在当MySQL被编译,但可以改变--datadir作为一个选项文件或命令行选项前加工mysqld-auto.cnf加工

如果发现一个给定的选项的多个实例,最后实例优先,但有一个例外:对mysqld,的第一实例of the--user期权作为一种安全措施,防止一个用户指定一个选项文件在命令行中重写。

以下选项文件语法描述适用于你手工编辑文件。这不包括.mylogin.cnf,这是使用_ _ MySQL配置编辑器和加密,并mysqld-auto.cnf,其中服务器创建JSON格式。

任何长的选项,可以在命令行给出当运行MySQL程序可以给出一个选项文件以及。得到一个程序可用的选项列表,运行它的--help选项。(formysqld,使用--verbose--help。)

指定一个选项文件选项的语法类似于命令行的语法(见4.2.4节,“使用选项在命令行上”)。然而,在一个选项文件,你忽略了领先两个破折号从选项的名称和指定每行只有一个选项。例如,--quick--host=localhost在命令行中应指定为quickhost=localhost在一个选项文件分割线。指定形式的选择--loose-opt_name在一个选项文件,把它作为松—opt_name

在选择文件的空行被忽略。空线路可以采取下列形式:

  • #commentcomment

    注释行的开始#。一#评论可以从中间的一条线一样。

  • [group]

    group是名称的项目或团队要为其设置选项。一组线后,任何选项设置线适用于命名组直到选项文件或另一组行结束了。选项组名称不区分大小写。

  • opt_name

    这相当于--opt_name在命令行

  • opt_name=value

    这相当于--opt_name=value在命令行。在一个设置文件,你可以在有空间=性格,什么不是真的在命令行。的值也可以用单引号或双引号,这是有用的值包含一个#注释字符

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

你可以使用转义序列\bt\nR\\,和-S在选项的值表示退格键,制表符,换行符,回车,回车,和空间特征。在选择文件,这些逃逸的规则:

  • 一个反斜杠后跟一个有效的转义序列特征是转换的序列所代表的字符。例如,\s转换为空间

  • 一个反斜杠后面没有一个有效的转义序列字符保持不变。例如,\S作为是

上述规定意味着,转义符可以作为\\,或作为\如果不是跟着一个有效的转义序列特征。

在选择文件的转义序列规则略有不同,在SQL语句中的字符串转义序列规则。在后者的情况下,如果x不是一个有效的转义序列特征,\x成为x而不是\x。看到9.1.1节,“String Literals”

逃避规则选项文件值为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:\\Program\sFiles\\MySQL\\MySQL\sServer\s8.0

如果一个选项组的名字是作为一个程序名相同,组中的选项应用专门的程序。例如,在[mysqld][数据库]组适用于mysqld服务器和MySQLClient Program,respectively .

这个[client]选项组是由所有客户端程序,MySQL的分布提供了阅读(但mysqld)。了解第三方的客户端程序,使用C API可以使用选项文件,看到C API文档第27.7.7.50,“mysql_options()”

这个[client]组可以指定适用于所有客户的选择。例如,[顾客]是用来连接到服务器指定的密码相应的组。(但要确保选项文件的访问只能通过自己,让其他人不能发现你的密码。)一定不要把一个选项在[client]除非它是公认的组全部客户端程序,你使用。程序不了解选项后显示错误信息,如果你尝试运行他们戒烟。

列表更一般和更具体的选项组第一组后。例如,一个[client]集团一般多是因为它是由所有客户端程序读取,而[ mysqldump ]组是只读的mysqldump。指定的选项后替代选项前面指定,那么将选项组中的顺序[client][ mysqldump ]使能够mysqldump选项重写[client]选项

这是一个典型的全局选项文件:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=128M

[mysqldump]
quick

这是一个典型的用户选项文件:

[client]
# The following password will be sent to all standard MySQL clients
password="my password"

[mysql]
no-auto-rehash
connect_timeout=2

创建选项组是只读的mysqld从具体的MySQL版本系列服务器,使用组名称[mysqld-5.7][ mysqld 6.0-8.0 ],等等。下面一组显示sql_mode设置应该只有8的MySQL服务器,使用X版本号:

[mysqld-8.0]sql_mode=TRADITIONAL

它可以使用!include指令选项文件中包括其他选项文件!includedir搜索特定的文件目录选项。例如,包括/home/mydir/myopt.cnf文件,使用下面的指令:

!包括/家/不要/ myopt.cnf

搜索/home/mydir目录和阅读选项文件发现,使用该指令:

!includedir /家/函数

MySQL是没有保证,在目录中选择文件进行读取顺序。

笔记

任何文件被发现,包括使用!includedir在UNIX操作系统指令必须有文件结尾的名字.cnf。在Windows中,该指令检查文件与INI.cnf扩展

写一个包括选项文件像任何其他选项文件的内容。就是说,它应该包含一组选项,每个前面的[group]线,表明程序的选项应用。

而一个包含文件正在处理中,只应用于组,目前项目正在寻找这些选项。另一组被忽视。假设一个my.cnf文件中包含这一行:

!包括/家/不要/ myopt.cnf

假设/home/mydir/myopt.cnf看起来像这样:

[mysqladmin]force[mysqld]key_buffer_size=16M

如果my.cnfmysqld,只有[mysqld]/家/不要/ myopt.cnf使用。如果文件处理mysqladmin,只有[mysqladmin]组用。如果该文件被其他程序处理,没有选择/家/不要/ myopt.cnf使用

这个!includedir指令处理同样除指定目录下的所有选项的文件是只读的。

如果有一个选择文件!include!includedir通过这些指令的指令,文件命名时,选择文件进行处理,不管它们在文件中出现。

4.2.7命令行选项选择文件处理的影响

大多数的MySQL程序,支持选项文件处理选项。因为这些选项影响选项文件的处理,他们必须在命令行给出并不是一个选项文件。正常工作,每个选项必须在其他的选项,这些例外:

当指定文件名选项值,避免了使用~shell元字符因为它可能无法解释你所期待的。

  • --defaults-extra-file=file_name

    读此选项文件的全局选项文件(Unix)后,但在用户选项文件(所有平台)在登录文件的路径。(大约在使用,选择文件的顺序信息见第4.2.6、“使用选项文件”。)如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

  • --defaults-file=file_name

    只读指定的选项文件。如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

    例外:即使--defaults-filemysqldmysqld-auto.cnf和客户端程序读取mylogin.cnf。

  • --defaults-group-suffix=str

    阅读不仅平时选项组,而且组与通常的名称后缀str。例如,在MySQL客户端通常读取[client][数据库]群组如果--defaults-group-suffix=_other选择了,MySQL也读[client_other][其他] _ MySQL群组

  • --login-path=name

    从指定的登录路径的选择.mylogin.cnf登录文件的路径。一登录路径包含选项指定MySQL服务器连接和帐户认证作为一个选项组。创建或修改登录路径文件,使用_ _ MySQL配置编辑器功用看到4.6.7“,”_ _ MySQL配置编辑器MySQL的配置实用程序”

    客户端程序读取对应指定的登录路径选项组,除了选项组的程序读取默认。考虑这个命令:

    shell> mysql --login-path=mypath
    

    默认情况下,该MySQL客户端读取[client][数据库]选项组。所以对于命令显示,MySQL[client][数据库]其他选项文件,和[client][数据库],和[mypath]从登录文件的路径

    客户端程序读取登录路径文件即使--no-defaults选择使用

    指定一个备用的登录路径文件名,设置MYSQL_TEST_LOGIN_FILE环境变量

  • --no-defaults

    不要读任何选项文件。如果程序启动失败,由于从一个选项文件阅读未知的选项,--no-defaults可以用来防止读

    唯一的例外是,客户端程序读取.mylogin.cnf如果您发现有错误,请尽管发表评论!--no-defaults使用。这允许密码将在一个更安全的方式比在命令行指定即使--no-defaults是目前。(mylogin.cnf。是由_ _ MySQL配置编辑器功用看到4.6.7“,”_ _ MySQL配置编辑器MySQL的配置实用程序”。)

  • --print-defaults

    打印程序的名字和所有的选项,从选项文件获取。密码值是掩盖。

4.2.8使用选项设置程序变量

许多MySQL程序的内部变量,可以在运行时设置使用SET声明。看到第13.7.5.1,”句法变量赋值”,和5.1.8节,“使用系统变量”

大多数这些程序变量也可以设置在使用相同的语法适用于指定程序选项启动服务器。例如,MySQL有一个max_allowed_packet变量,控制其通信缓冲区的最大大小。设置max_allowed_packet变量MySQL一个值16MB,使用以下命令:

shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M

第一个命令指定的字节值。第二指定兆字节的值。对于接受一个数值变量的值,可以得到一个后缀KM,或G表明乘数为1024,1024或1024。(例如,当使用设置max_allowed_packet后缀表示,单位是千字节,兆字节,或千兆字节。)作为MySQL 8.0.14,后缀也可以TP,和E表示一个乘数1024,1024或1024。后缀字母可以是大写或小写。

在一个选项文件,变量的设置没有领先的破折号:

[mysql]
max_allowed_packet=16777216

[mysql]
max_allowed_packet=16M

如果你喜欢,下划线的变量名可以被指定为破折号。下列选项组是等价的。两组服务器的密钥缓冲区的大小为512MB:

[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M

一个变量可以通过写它的全部或任何明确的前缀指定。例如,在max_allowed_packet变量可以被设置为MySQL作为--max_a,但不作为-最大值因为后者是暧昧:

shell> mysql --max=1000000
mysql: ambiguous option '--max=1000000' (max_allowed_packet, max_join_size)

注意,使用变量前缀的事件,新的变量都被实现为一个程序引起的问题。前缀是明确的现在会在未来变得模糊。

指定一个值的乘数可以用来设置一个变量在服务器启动的后缀,而不是设定值SET在运行时。另一方面,随着SET,你可以指定一个变量的值使用的一种表达,这是不是真的当你设置一个变量在服务器启动。例如,下面的第一条是法律在服务器启动,但二不:

内核>mysql --max_allowed_packet=16M内核>mysql --max_allowed_packet=16*1024*1024

相反,该行第二是法律在运行,但首先是不:

mysql> SET GLOBAL max_allowed_packet=16M;
mysql> SET GLOBAL max_allowed_packet=16*1024*1024;

4.2.9 Option Defaults, Options Expecting Values, and the = Sign

按照惯例,长格式选项,指定一个值用一个等于(=)标志,像这样:

内核>mysql --host=tonfisk --user=jon

选择需要的值(即,没有默认值),等号是不需要的,所以下面还有效:

shell> mysql --host tonfisk --user jon

在这两种情况下,的MySQL客户端试图连接到MySQL服务器运行的主机名tonfisk使用一个帐户的用户名乔恩

由于这种行为,问题可以偶尔出现时没有价值提供了一种选择,需要一个。考虑下面的例子,其中一个用户连接到一个MySQL服务器运行的主机tonfisk作为用户乔恩

shell> mysql --host 85.224.35.45 --user jon
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 8.0.14 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| jon@%          |
+----------------+
1 row in set (0.00 sec)

不要求值为这些选择会产生错误,如下图所示:

shell> mysql --host 85.224.35.45 --user
mysql: option '--user' requires an argument

在这种情况下,MySQL无法找到一个值以下--user因为没有了选择后,在命令行。然而,如果你忽略的一个选项,是价值作为最后的选择,你得到一个不同的错误,你可能不希望:

shell> mysql --host --user jon
ERROR 2005 (HY000): Unknown MySQL server host '--user' (1)

因为MySQL假定任何字符串如下--host在命令行是一个主机名,--host--user被解释为--host=--user,和客户端试图连接到MySQL服务器运行的主机名用户

具有默认值总是需要一个等号时,分配一个值的选择;如果不这样做会导致错误。例如,MySQL服务器--log-error选项的默认值host_name错误,在那里host_name是名称的主机上的MySQL正在运行。假设你是一个电脑的主机名称运行mysqltonfisk,并考虑下面的调用mysqld_safe

shell> mysqld_safe &
[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>

关机后重启服务器,如下:

shell> mysqld_safe --log-error &
[1] 11699
shell> 080112 12:53:40 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080112 12:53:40 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
shell>

结果是一样的,因为--log-error不遵守命令行的东西,并提供自己的默认值。(The&字符告诉操作系统在后台运行MySQL;它是由MySQL本身忽视。)现在假设你希望将错误记录到一个文件名为my-errors.err。你可以尝试启动服务器-我的日志错误错误,但这没有预期的效果,如下图所示:

shell> mysqld_safe --log-error my-errors &
[1] 31357
shell> 080111 22:53:31 mysqld_safe Logging to '/usr/local/mysql/var/tonfisk.err'.
080111 22:53:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
080111 22:53:34 mysqld_safe mysqld from pid file /usr/local/mysql/var/tonfisk.pid ended

[1]+  Done                    ./mysqld_safe --log-error my-errors

服务器试图开始使用/usr/local/mysql/var/tonfisk.err为错误日志,然后关闭。检查这个文件的最后几行显示的原因:

内核>tail /usr/local/mysql/var/tonfisk.err2013-09-24t15:36: 22.278034z 0 [错误]的参数太多(第一个额外的是“我的错误”)。2013-09-24t15:36: 22.278059z 0 [注]使用冗长的帮助你获得一个可用的选项!2013-09-24t15:36: 22.278076z 0 [错误] 0 [注] aborting2013-09-24t15:36: 22.279704z InnoDB:开始关闭…2013-09-24t15:36: 23.777471z 0 [注]:关闭InnoDB完成;日志序列号23190862013-09-24t15:36: 23.780134z 0 [注]:关闭mysqld完成

因为--log-error期权提供了一个默认值,您必须使用一个符号来指定一个不同的值,如下所示:

内核>mysqld_safe --log-error=my-errors &[1] 31437shell> 080111 22:54:15 mysqld_safe Logging to '/usr/local/mysql/var/my-errors.err'.080111 22:54:15 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/varshell>

现在服务器已经启动成功,并记录错误的文件/usr/local/mysql/var/my-errors.err

出现在指定选项的值可以在选项文件类似的问题。例如,考虑一个my.cnf文件包含以下:

[ ] hostuser MySQL

MySQL客户端读取这个文件,这些条目解析--host--user--host=--user,与这里显示的结果:

内核>mysql错误2005(未知hy000):MySQL服务器主机的用户(1)

然而,在选择文件,等号不承担。假设my.cnf文件如下所示:

[ ]乔恩的MySQL用户

试图启动MySQL在这种情况下产生不同的错误:

shell> mysql
mysql: unknown option '--user jon'

类似的错误如果你写的发生host tonfisk在选项文件而不是host=tonfisk。相反,你必须使用等号:

[mysql]

user=jon

现在登录尝试成功:

shell> mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 8.0.14 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT USER();
+---------------+
| USER()        |
+---------------+
| jon@localhost |
+---------------+
1 row in set (0.00 sec)

这是不一样的行为和命令行,在等号是不需要的:

shell> mysql --user jon --host tonfisk
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 8.0.14 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SELECT USER();
+---------------+
| USER()        |
+---------------+
| jon@tonfisk   |
+---------------+
1 row in set (0.00 sec)

指定一个选项需要一个价值不在选项文件的值导致服务器终止一个错误。假设my.cnfcontains the following:

[他] log_errorrelay_logrelay_log_index

这将导致服务器无法启动,如下所示:

shell> mysqld_safe &

130924 10:41:46 mysqld_safe Logging to '/home/jon/bin/mysql/var/tonfisk.err'.
130924 10:41:46 mysqld_safe Starting mysqld daemon with databases from /home/jon/bin/mysql/var
130924 10:41:47 mysqld_safe mysqld from pid file /home/jon/bin/mysql/var/tonfisk.pid ended

这个--log-error选项不需要争论;但是,这--relay-log方案要求,在错误日志中显示(这在一个指定的值,没有默认datadir/hostname错误):

内核>tail -n 3 ../var/tonfisk.err130924 10:41:46 mysqld_safe启动mysqld进程从/家/乔恩/斌/ MySQL / var2013-09-24t15:41: 47.217180z 0 [错误] /家/乔恩/斌/ MySQL / libexec / mysqld数据库:选项--中继日志”需要一个argument2013-09-24t15:41: 47.217479z 0 [错误]中止

这是一个从以前的行为改变,其中服务器会解释的最后两行的例子my.cnf文件--relay-log=relay_log_index并创建了一个中继日志文件使用relay_log_indexAs the name的基础。(# 25192 BUG)

4.2.10设置环境变量

环境变量可以在命令提示符下影响你的命令处理器当前的调用,或将永久地影响未来的调用。设置一个变量永久,你可以将它设置在一个启动文件或通过您的系统提供用于此目的的接口。咨询文件对你的命令解释器的特定细节。4.9节,“MySQL程序环境变量”,列出所有环境变量影响MySQL程序操作。

指定一个环境变量的值,使用适合你的命令处理程序的语法。例如,在Windows上,你可以设置USER变量指定你的MySQL帐户名称。这样做,使用此语法:

SET USER=your_name

在UNIX的语法取决于你的内核。假设你想指定的TCP / IP端口号使用MYSQL_TCP_PORT变量。典型的语法(如SHksh猛击Zsh,等等)如下:

MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT

第一个命令集的变量,和export命令出口变量的shell环境使其价值成为了MySQL和其他进程访问。

CSHtcsh,使用环境变量让外内核变可用的环境:

setenv MYSQL_TCP_PORT 3306

该命令设置环境变量可以执行你的命令提示符立即生效,但设置坚持直到你退出。有设置在您每次登录时生效,使用接口提供您的系统或在一个启动文件,你的命令解释器读取每次启动相应的命令或命令。

在Windows中,你可以使用系统控制面板设置环境变量(晚期)。

在Unix系统中,典型的shell启动文件.bashrc.bash _概况猛击,或.tcshrctcsh

假设你的MySQL程序的安装/usr/local/mysql/bin那你想让它容易地调用这些程序。为此,设置的值路径环境变量包括目录。例如,如果你的内核猛击,添加下面一行到你的.bashrc文件:

PATH=${PATH}:/usr/local/mysql/bin

猛击使用不同的启动文件登录和nonlogin贝内核,所以你可能要添加的设置.bashrc登录贝内核和.bash _概况为确保nonlogin内核PATH无论是集

如果你的内核tcsh,添加下面一行到你的.tcshrc文件:

setenv:路径路径元{ } /usr/local MySQL/AM

如果适当的启动文件不在你的家目录存在,创建了一个文本编辑器。

修改后的你PATH设置,打开窗户或记录一个新的控制台窗口又在Unix使设置生效。

4.3 MySQL服务器,服务器启动程序

本节介绍mysqld,MySQL服务器,和几个程序,用于启动服务器。

4.3.1mysqld- MySQL服务器

mysqld,也被称为MySQL服务器,是主程序,做大部分的工作在一个MySQL的安装。MySQL服务器管理访问MySQL数据目录包含数据库和表。数据目录的默认位置等信息的日志文件和状态文件。

笔记

一些安装包中包含的调试版本的服务器命名mysqld调试。调用此版本代替mysqld调试支持,内存分配检查和跟踪文件的支持(见第28.5.1.2,“创建跟踪文件”

当MySQL服务器启动时,它监听网络连接的客户端程序和管理访问数据库的客户代表。

这个mysqld程序有很多选项,可以指定在启动。一个完整的选项列表,运行这个命令:

shell> mysqld --verbose --help

MySQL服务器也有一套系统的变量,影响它的操作运行。系统变量可以设置在服务器启动时,许多人可以在运行时改变影响动态服务器配置。MySQL服务器也有一组状态变量提供有关运行信息。你可以监控这些状态变量访问运行时的性能特点。

为了充分说明MySQL服务器的命令选项,系统变量和状态变量,看第五,“MySQL服务器”。关于安装MySQL和设置初始配置的信息,参见2章,MySQL的安装和升级

4.3.2mysqld_safeMySQL服务器启动脚本

mysqld_safe是推荐的方式开始mysqld对UNIX服务器mysqld_safe增加了一些安全功能,如重新启动服务器时发生错误,错误日志记录运行信息。描述错误日志记录了在本节稍后。

笔记

对于一些Linux平台,从RPM和Debian软件包管理系统的支持,包括MySQL安装MySQL服务器的启动和关闭。在这些平台上,mysqld_safe是不是因为它是不必要的安装。有关更多信息,参见第2.5.9、“系统”管理MySQL服务器

mysqld_safe试图启动一个可执行文件命名mysqld。重写默认行为,明确指定你想要运行的服务器的名称,指定--mysqld--mysqld-version选项mysqld_safe。你也可以使用--ledir显示目录mysqld_safe寻找服务

许多的选项mysqld_safe是相同的选项mysqld。看到第5.1.6、“服务器选项”

选择未知mysqld_safe传递给mysqld如果他们是在命令行中指定,但忽略了如果他们指定的[mysqld_safe]Group of an选项文件。See第4.2.6、“使用选项文件”

mysqld_safe读取所有的选项[mysqld]服务器,和[mysqld_safe]在选择文件节。例如,如果你指定一个[ mysqld ]像这段,mysqld_safe会发现和使用--log-error选项:

[mysqld]log-error=error.log

向后兼容性,mysqld_safe也读[safe_mysqld]段,但是目前你应该重命名等部分[ _ mysqld safe ]

mysqld_safe接受命令行选项,在文件选项,如下表所示。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.3 mysqld_safe选项

格式描述
——则MySQL的安装目录的路径
——核心文件大小大小的核心文件,他应该能够创造
datadir……数据目录的路径
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
帮助显示帮助信息并退出
——LeDiR路径的目录服务器
错误日志…写入错误日志文件名
- Malloch - Lib替代malloc库使用mysqld
mysqld……服务器程序开始的名字(在LeDiR目录)
——mysqld safe日志的时间戳记录时间戳格式
mysqld -版本服务器程序名的后缀
使用好的程序设置服务器调度优先级
没有默认值不看选项文件
--打开文件的限制那他应该能够打开的文件数
PID文件服务器进程ID文件的路径名
- Plujing - dir .插件的安装目录
——端口端口号侦听TCP/IP连接
-跳过杀掉mysqld不要试图杀死流浪mysqld进程
——跳系统不写日志的错误信息;使用错误日志文件
-插座socket文件上听UNIX套接字连接
——系统日志写日志的错误信息
日志标签---写入系统日志消息标签后缀
——时区设置TZ环境变量指定值的时间区
用户运行mysqld用户有名称user_name或数字ID 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型,安装layouts”。)mysqld_safe预计下列条件之一是真实的:

  • 服务器和数据库,可以发现,相对于工作目录(目录中mysqld_safe是的。二进制分配器mysqld_safe看起来它的工作目录下bin数据目录源分布,它看起来libexecVaR目录这种情况应该是遇到了如果你执行mysqld_safe从你的MySQL安装目录(例如,/usr/local/mysql对于二进制分布)

  • 如果服务器和数据库找不到相对的工作目录,mysqld_safe试图找到他们的绝对路径名。典型位置/usr/local/libexec/ usr /是/地方。从价值配置到分配它是建立在时间确定的实际位置。他们应该是正确的如果MySQL安装配置时指定的位置。

因为mysqld_safe试图找到服务器和数据库相对于它自己的工作目录,你可以安装一个MySQL的二进制分布的地方,只要你运行mysqld_safe从MySQL的安装目录:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &

如果mysqld_safe失败,即使调用mysql安装目录,指定--ledir--datadir选项指明服务器和数据库都位于系统目录。

mysqld_safe尝试使用睡眠日期系统工具来确定多少次它试图启动。如果这些设施的存在并试图开始每秒大于5,mysqld_safe等待一秒钟前重新开始。这是为了防止在屡次失败的事件过多的CPU使用率。(错误# 11761530,错误# 54035)

当你使用mysqld_safe开始mysqldmysqld_safe安排错误(注意)从本身和信息mysqld去同一个目的地

有几个mysqld_safe控制这些信息的目的地选项:

  • --log-error=file_name:写的命名错误文件的错误信息。

  • --syslog写错误信息:系统日志对系统的支持记录器程序

  • --skip-syslog:不写错误信息系统日志。消息写入错误日志文件(默认host_name.err在数据目录),或一个指定的文件如果--log-error选择了

如果没有这些选项了,默认是--skip-syslog

什么时候mysqld_safe写一个消息,通知去测井的目的地(syslog或错误日志文件)和标准输出。错误去测井目的stderr

笔记

控制mysqld测井mysqld_safe不推荐使用。使用服务器的本地syslog支持而不是。有关更多信息,参见部分5.4.2.3,”错误记录到系统日志”

4.3.3mysql.serverMySQL服务器启动脚本

在UNIX和类UNIX系统的MySQL分布包括脚本命名mysql.server,启动MySQL服务器使用mysqld_safe。它可用于系统如Linux和Solaris,使用System V运行目录来启动和停止系统服务。它也被用于MySQL MacOS的启动项。

mysql.server是脚本的名称在MySQL源代码树的应用。安装的名称可能不同;例如,mysqldMySQL。在下面的讨论中,调整名称mysql.server适合你的系统

笔记

对于一些Linux平台,从RPM和Debian软件包管理系统的支持,包括MySQL安装MySQL服务器的启动和关闭。在这些平台上,mysql.servermysqld_safe不是因为他们不必要的安装。有关更多信息,参见第2.5.9、“系统”管理MySQL服务器

启动或停止服务器手动使用mysql.server脚本,调用它的命令行和start停止争论:

shell> mysql.server start
shell> mysql.server stop

mysql.server改变位置到MySQL的安装目录,然后调用mysqld_safe。运行服务器的一些特定的用户,添加适当的user选择的[ mysqld ]的全局组/etc/my.cnf选择文件,如本节后面。(这是可能的,你必须编辑mysql.server如果你在一个非标准的位置,安装一个MySQL二进制分布。修改它改变位置到适当的目录运行前mysqld_safe。如果你这样做,你的修改版mysql.server可如果你升级MySQL在未来被覆盖;做一份自己编辑的版本,您可以重新安装。)

mysql.server停止停止服务器发送一个信号到它。你也可以通过执行手动停止服务器关闭

启动和停止MySQL会自动在您的服务器上,您必须添加启动和停止命令你在合适的地方/etc/rc*文件

  • 如果你使用Linux服务器的RPM包(MySQL-server-VERSION.rpm),或一个本地的Linux软件包安装的mysql.server脚本可以安装在/etc/init.d与名称目录mysqldmysql。看到第2.5.4“安装MySQL,使用Oracle Linux“RPM包,对Linux RPM包的更多信息。

  • 如果你安装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

    shell> chkconfig --add mysql
    

    在一些Linux系统,下面的命令似乎也有必要充分使MySQL脚本:

    shell> chkconfig --level 345 mysql on
    
  • 在FreeBSD上,一般应该在启动脚本/usr/local/etc/rc.d/。安装mysql.server脚本/usr/local/etc/rc.d/mysql.server.sh要启用自动启动。这个RC(8)手册页指出,此目录中的脚本执行只有在他们的基地名称匹配*.sh外内核文件名模式。任何其他文件或目录在目录将被忽略。

  • 作为一种替代前面的设置,有些操作系统也使用/etc/rc.local的/ etc / 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/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql

这个mysql.server脚本支持下表中显示的选项。如果指定,他们必须被放置在一个选项文件,在命令行没有。mysql.server仅支持start停止作为命令行参数

表4.4 mysql.server选项文件选项

选项名称描述类型
basedirMySQL的安装目录的路径目录名称
datadirMySQL数据目录的路径目录名称
pid-file文件在服务器应该写它的进程ID文件名
service-startup-timeout多长时间等待服务器启动整数

  • basedir=dir_name

    对MySQL的安装目录的路径。

  • datadir=dir_name

    对MySQL数据目录的路径。

  • pid-file=file_name

    该文件由服务器应该写它的路径名的进程ID。

    如果没有给出这个选项,mysql.server使用默认值host_name.pid。PID文件的值传递给mysqld_safe重写指定的任何值[mysqld_safe]选择文件组。因为mysql.server读取[mysqld]选择文件组而不是[ _ mysqld safe ]组,可以确保mysqld_safe得到相同的值时调用mysql.server当调用手动把相同pid-file设置在两[ _ mysqld safe ][mysqld]群组

  • service-startup-timeout=seconds

    在几秒钟的等待服务器启动确认多久。如果服务器不在这个时间开始,mysql.server一个错误的存在。默认值是900。价值不待在所有启动0。负值意味着永远的等待(没有超时)。

4.3.4mysqld _多管理多个MySQL服务器

mysqld _多设计管理的若干mysqld进程,监听连接在不同的Unix套接字文件和TCP / IP端口。它可以启动或停止服务器,或报告他们的现状。

笔记

对于一些Linux平台,从RPM和Debian软件包管理系统的支持,包括MySQL安装MySQL服务器的启动和关闭。在这些平台上,mysqld _多是不是因为它是不必要的安装。有关使用系统来处理多个MySQL实例的信息,参见第2.5.9、“系统”管理MySQL服务器

mysqld _多组名搜索[mysqldN]进入my.cnf(或在文件命名的--defaults-file备选办法N可以是任意正整数。这个数字是指在以下讨论的选项组数,或GNR。组数区分选项组的从一个作为参数mysqld _多指定你想开始,服务器停止,或得到一个状态报告。在这组选项是一样的,你会用的[mysqld]组用于起动mysqld。(见,例如,2.9.5,“启动和停止MySQL自动”然而,当。)使用多个服务器,这是必要的,每个人用自己的价值选择,如Unix套接字文件和TCP / IP端口号。更多关于这些选项的信息必须在多服务器环境中是唯一的每个服务器,看5.7节,“运行多个MySQL实例一机”

调用mysqld _多用以下的语法:

shell> mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

start停止reload(停止并重新启动),和报告表示要执行的操作。您可以为单个服务器或多个服务器执行指定的操作,根据GNR列表如下选项名称。如果没有列表,mysqld _多表现为在选项文件中的所有服务器的操作。

每个GNR值代表一个选项组数、组数的范围。该值应在选项文件的组名结束数。例如,在GNR一组名为[ mysqld17 ]17。指定一个数字范围,单独的第一个和最后一个数字用一个破折号。这个GNR价值10-13代表组[mysqld10]通过[ mysqld13 ]。多个组或组范围可以在命令行中指定,以逗号分隔。不能有空白字符(空格或制表符)在GNR清单;在空白字符被忽略的东西。

这个命令开始使用选项组单服务器[mysqld17]

内核>mysqld_multi start 17

此命令停止多台服务器,使用选项组[mysqld8][ mysqld10 ]通过[mysqld13]

内核>mysqld_multi stop 8,10-13

例如你可以设置一个选项文件,使用此命令:

shell> mysqld_multi --example

mysqld _多搜索选项文件如下:

选择读取的文件搜索[mysqld_multi][ mysqldN]选项组。的[多] _ mysqld集团可选项mysqld _多本身[mysqldN]Groups can be used for options to specific to specificmysqld实例.

这个[mysqld][ _ mysqld safe ]组可以用于常见的选项都读mysqldmysqld_safe。你可以指定一个--defaults-file=file_name选择使用不同的配置文件,例如,在这种情况下,[ mysqld ][mysqld_safe]Groups from that file will be used for that instance .

mysqld _多(c)支持各种备选方案。

  • --help

    显示帮助信息并退出

  • --example

    显示样本选择的文件

  • --log=file_name

    指定日志文件。如果文件存在,日志输出追加到它。

  • --mysqladmin=prog_name

    这个mysqladmin二元用来停止服务器

  • --mysqld=prog_name

    这个mysqld二是用。请注意,您可以指定mysqld_safe这个选项也为价值。如果你使用mysqld_safe要启动服务器,你可以包括mysqldLeDiR在相应的选项[mysqldN]选项组。这些选项显示的服务器的名称mysqld_safe应该开始的路径名的目录服务器位于何处。(看到这些选项的描述4.3.2“,”mysqld_safeMySQL服务器启动脚本”例子:。。。。。。。)

    [mysqld38]
    mysqld = mysqld-debug
    ledir  = /opt/local/mysql/libexec
    
  • --no-log

    打印日志信息stdout而不是到日志文件。默认情况下,输出到日志文件。

  • --password=password

    mysql的帐号密码使用时调用mysqladmin。注意:密码值不选择此选项,不像其他MySQL程序。

  • --silent

    缓慢的模式

  • --tcp-ip

    连接到每个MySQL服务器通过TCP / IP而不是Unix套接字文件端口。(如果一个套接字文件丢失,服务器可能仍在运行,但只能通过TCP / IP端口。)默认情况下,连接使用Unix套接字文件。这个选项会影响stop报告运营

  • --user=user_name

    使用时调用mysql帐户的用户名mysqladmin

  • --verbose

    更详细的

  • --version

    显示版本信息并退出

关于一些笔记mysqld _多

  • 最重要的:使用前mysqld _多确保你理解传递给被选择的意义mysqld服务器和为什么你会想要分开mysqld过程.小心使用多危险mysqld使用相同的数据目录服务器。使用单独的数据目录,除非你知道你在做什么。启动多个服务器数据目录不一样给你一个线程系统额外的性能。看到5.7节,“运行多个MySQL实例一机”

    重要

    确保每个服务器数据目录的完全访问UNIX帐户的具体mysqld过程开始使用Unixroot考虑到这一点,除非你知道你在做什么。看到6.1.5节,“如何运行MySQL作为一个正常的用户

  • 确保MySQL账户用于停止mysqld服务器(与mysqladmin每个服务器程序)具有相同的用户名和密码。同时,确保账户有SHUTDOWN特权。如果你要管理的服务器有不同的用户名称或密码的管理帐户,您可能希望在每个服务器上创建一个帐户具有相同的用户名和密码。例如,你可以建立一个共同的多_管理员通过执行下面的命令为每个服务器帐户:

    shell> mysql -u root -S /tmp/mysql.sock -p
    Enter password:
    mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
    mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';
    

    看到6.2节,“MySQL的权限系统”。你每次要做这个mysqld服务器更改连接参数连接到每一个适当的时候。注意,帐户名的主机名部分必须允许你连接multi_admin你想要运行在主机mysqld _多

  • UNIX套接字文件和TCP / IP端口号必须为每一个是不同的mysqld。(或者,如果主机有多个网络地址,你可以使用--bind-address使不同的服务器来听不同的接口。)

  • 这个--pid-file如果你正在使用的选择是非常重要的mysqld_safe开始mysqld(例如,--mysqld=mysqld_safe)每mysqld应该有自己的进程ID文件。利用优势mysqld_safe而不是mysqld是的,mysqld_safe监测mysqld程序并重新启动它如果进程终止,由于信号发送使用kill -9或其他原因,如分割故障。

  • 你可能想使用--user选项mysqld,但为此你需要运行mysqld _多单词是一个超级用户root)。在选项文件不要紧,有选择;你只是得到一个警告,如果你不是超级用户,mysqld过程是你自己的UNIX帐户下启动。

下面的示例显示如何可以设置使用一个选项文件mysqld _多。the order in which themysqld程序启动或停止取决于他们出现在选项文件的顺序。组数不需要形成一个完整的序列。第一和第五[mysqldN]组被有意省略的例子来说明你可以空白在选项文件。这给你更多的灵活性。

# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /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.6、“使用选项文件”

4.4 MySQL安装相关程序

本节中的程序进行安装或升级MySQL时。

4.4.1公司_错误编译MySQL错误信息文件

公司_错误创建errmsg.sys所用的文件mysqld确定错误信息不同错误代码显示。公司_错误正常运行时自动MySQL建立。编写errmsg.sys从文本文件位于文件SQL /分享/ errmsg-utf8.txt在MySQL源分布

公司_错误也产生mysqld_error.h_ mysqld ername.h,和sql_state.h头文件

为更多的信息关于错误信息的定义,见MySQL内部手册

援引公司_错误这样地:

shell> comp_err [options]

公司_错误(c)支持各种备选方案。

4.4.2MySQL安装的安全_ _提高MySQL安装的安全性

这个程序允许你在以下方面提高你的MySQL安装的安全性:

  • 你可以设置一个密码root账户.

  • 您可以删除root帐户是从外部访问本地主机。

  • 你可以将匿名用户帐户。

  • 你可以删除test数据库(默认情况下可以访问的所有用户,即使是匿名用户),和特权,允许任何人访问的名字开始与数据库_试验

MySQL安装的安全_ _帮助你实现安全建议类似的描述第2.9.4,”保证初始MySQL账户”

正常使用连接到MySQL服务器调用的地方;MySQL安装的安全_ _如果没有参数:

shell> mysql_secure_installation

当执行,MySQL安装的安全_ _这是提示你确定行动的执行。

这个validate_password组件可用于密码强度检查。如果没有安装插件,MySQL安装的安全_ _提示用户是否安装。任何密码输入后进行检查插件是否启用。

最平常的MySQL客户端选项如--host--port可以使用命令行选项和文件。例如,在使用端口3307的IPv6连接到本地服务器,使用此命令:

内核>mysql_secure_installation --host=::1 --port=3307

MySQL安装的安全_ _支持以下选项,可以在命令行中指定或[mysql_secure_installation][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.5

格式描述介绍
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
帮助显示帮助信息并退出
——主机连接到的主机(IP地址或主机名)
没有默认值不看选项文件
——密码接受的目标总是Ignored。当安装MySQL _安全_是援引,the user is for a密码提示,不顾一切。
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
TLS版本……加密连接许可协议
使用默认的执行没有用户交互
用户MySQL用户名连接到服务器时使用

4.4.3mysql_ssl_rsa_setup创建SSL / RSA文件

这个程序创建的SSL证书和密钥文件和RSA密钥对的文件需要支持安全连接使用SSL加密连接和使用RSA的安全密码,如果那些文件丢失。mysql_ssl_rsa_setup可如果现有的已过期的文件创建新的SSL。

笔记

mysql_ssl_rsa_setup使用OpenSSL命令,所以它的使用是偶然在OpenSSL安装在你的机器。

另一种方法来生成SSL和RSA文件,MySQL分布编译使用OpenSSL,是让服务器自动生成。看到第6.4.3.1,“创建SSL和RSA证书和使用MySQL”键

重要

mysql_ssl_rsa_setup有助于降低门槛,使用SSL使它更容易生成所需的文件。然而,证书所产生的mysql_ssl_rsa_setup是自签名的,这是非常不安全的。在你获得的经验使用创建的文件mysql_ssl_rsa_setup,考虑获得注册证书权威CA证书。

援引mysql_ssl_rsa_setup这样地:

shell> mysql_ssl_rsa_setup [options]

典型的选项--datadir指定在创建文件,并--verbose看到OpenSSL命令mysql_ssl_rsa_setup执行

mysql_ssl_rsa_setup试图创建SSL和RSA使用一组默认的文件名的文件。它的工作原理如下:

  1. mysql_ssl_rsa_setup检查的OpenSSL在指定的位置的二进制PATH环境变量。如果OpenSSL没有找到,mysql_ssl_rsa_setup什么也不做。如果OpenSSL是存在的,mysql_ssl_rsa_setup寻找默认SSL和RSA在MySQL数据目录中指定的文件--datadir选项,或编译的数据目录,如果--datadir没有给出选项

  2. mysql_ssl_rsa_setup检查具有下列名称SSL文件数据目录:

    ca.pem
    server-cert.pem
    server-key.pem
    
  3. 如果任何这些文件都存在,mysql_ssl_rsa_setup创造没有SSL文件。否则,它调用OpenSSL创造了他们,再加上一些额外的文件:

    ca.pem               Self-signed CA certificate
    ca-key.pem           CA private key
    server-cert.pem      Server certificate
    server-key.pem       Server private key
    client-cert.pem      Client certificate
    client-key.pem       Client private key
    

    这些文件使客户端的连接使用SSL;看第6.4.1配置MySQL,使用加密的连接”

  4. mysql_ssl_rsa_setup检查具有下列名称RSA文件数据目录:

    private_key.pem      Private member of private/public key pair
    public_key.pem       Public member of private/public key pair
    
  5. 如果这些文件都存在,mysql_ssl_rsa_setup没有创建加密的文件。否则,它invokesOpenSSL创建它们。这些文件使安全密码交换的帐户通过未加密的连接采用RSAsha256_passwordcaching_sha2_password这个插件;第6.5.1.2,“SHA-256认证”,和第6.5.1.3,“缓存SHA-2认证”

有关创建的文件的特征信息mysql_ssl_rsa_setup,看到第6.4.3.1,“创建SSL和RSA证书和使用MySQL”键

在启动时,MySQL服务器会自动使用了SSL文件mysql_ssl_rsa_setup如果没有明确给出了SSL选项比其他启用SSL--ssl(可能随着--ssl-cipher)。如果您希望指定的文件明确,调用客户提供--ssl-ca--ssl-cert,和--ssl-key选择在启动时的名字ca.pemserver-cert.pem,和server-key.pemFilles,respectively .

服务器也会自动使用了RSA文件mysql_ssl_rsa_setup如果没有明确的RSA方案使RSA。

如果服务器启用了SSL,客户端使用SSL连接的默认的。指定证书和密钥文件明确,使用--ssl-ca--ssl-cert,和--ssl-key选项名称ca.pemclient-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创建新的:

  1. 停止服务器

  2. 重命名或删除现有的SSL文件。你不妨做一个备份它们的第一。(RSA文件不过期,所以你不需要删除它们。mysql_ssl_rsa_setup会发现他们的存在和不覆盖它们。)

  3. 运行mysql_ssl_rsa_setup--datadir选项指定在创建新的文件。

  4. 重新启动服务器

mysql_ssl_rsa_setup支持以下命令行选项,可以在命令行中指定或[mysql_ssl_rsa_setup][ mysqld ]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.6 mysql_ssl_rsa_setup选项

格式描述
datadir……数据目录的路径
帮助显示帮助信息并退出
——后缀后缀为X509证书通用名称属性
——UID名称有效用户使用文件的权限
--详细详细模式
——版本显示版本信息并退出

  • --help

    显示帮助信息并退出

  • --datadir=dir_name

    的目录的路径,mysql_ssl_rsa_setup应检查默认SSL和RSA文件和它应该如果缺少创建文件。默认是编译的数据目录。

  • --suffix=str

    在X509证书通用名称属性后缀。后缀值限制为17个字符。默认是基于MySQL的版本号。

  • --uid=nameV

    谁应该是任何创建的文件的所有者的用户的名称。价值是一个用户的名字,不是一个数字的用户ID,在这种选择的情况下,文件创建mysql_ssl_rsa_setup由谁执行它的用户拥有。只有当你执行程序作为此选项是有效的root一个系统,支持(乔恩)系统调用

  • --verboseV

    详细模式。产生更多的输出程序干什么。例如,程序显示OpenSSL命令运行,并产生输出指示是否忽略SSL或RSA文件创建一些默认的文件已经存在。

  • --versionV

    显示版本信息并退出

4.4.4MySQL _ tzinfo _到_ SQL-加载时区表

这个MySQL _ tzinfo _到_ SQL程序加载时区中的表mysql数据库它是用来在系统中有一个中经银讯数据库(描述时区文件集)。这样的系统的例子是Linux,FreeBSD,Solaris,和OS X的一个可能的位置,这些文件是/usr/share/zoneinfo目录(/ usr /分享/图书馆/中经银讯在Solaris)。如果你的系统没有中经银讯数据库,您可以使用下载的软件包描述第5.1.12,MySQL服务器的时区支持”

MySQL _ tzinfo _到_ SQL可以用几种方式:

shell> mysql_tzinfo_to_sql tz_dir
shell> mysql_tzinfo_to_sql tz_file tz_name
shell> mysql_tzinfo_to_sql --leap tz_file

对于第一个调用语法,通过中经银讯目录路径名MySQL _ tzinfo _到_ SQL并将输出发送到MySQL程序。例如:

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

MySQL _ tzinfo _到_ SQL读你的系统的时区文件和生成SQL语句从他们。MySQL处理这些报表加载时区表。

第二语法的原因MySQL _ tzinfo _到_ SQL加载一个时区文件tz_file对应于一个时区名称tz_name

内核>mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql

如果你的时区需要考虑闰秒,调用MySQL _ tzinfo _到_ SQL使用第三的语法,它初始化闰秒信息。tz_file是您的时区文件的名称:

内核>mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql

运行后MySQL _ tzinfo _到_ SQL,最好是重新启动服务器,以便它不会继续使用以前缓存的时区数据。

4.4.5mysql_upgrade检查升级MySQL表

mysql_upgrade检查所有数据库中的所有表与MySQL服务器的当前版本不兼容。mysql_upgrade同时升级的系统表,这样就可以利用新的权利或能力可能已添加。

如果mysql_upgrade发现桌上有一个可能不兼容,它执行表检查,如果发现问题,尝试修复一台。如果表无法修复,看第2.10.3,“重建或修复表或索引”手动表修复策略

你应该执行mysql_upgrade每次你升级MySQL。

mysql_upgrade与MySQL服务器直接通信,发送需要进行升级的SQL语句。

注意安全

你应该经常备份你当前的MySQL安装之前执行升级。看到7.2节,“数据库备份方法

一些升级不可能你升级你的MySQL安装和运行前需要特殊处理mysql_upgrade。看到2.10.1节,“升级MySQL”,说明确定任何该等不适用于您的安装和如何处理它们。

使用mysql_upgrade,确保服务器运行。然后调用这样的维修检查表和升级系统表:

shell> mysql_upgrade [options]

运行后mysql_upgrade,停止并重新启动服务器,它使系统表生效的任何变化。

如果你有多个MySQL服务器实例运行,调用mysql_upgrade连接参数的适当连接所需的服务器。例如,运行在本地主机上部分3306通过3308台服务器,提升每个人的连接到相应的端口:

shell> mysql_upgrade --protocol=tcp -P 3306 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3307 [other_options]
shell> mysql_upgrade --protocol=tcp -P 3308 [other_options]

UNIX平台上的本地主机的连接,这--protocol=tcp选项强制连接使用TCP / IP而不是Unix套接字文件。

笔记

如果你运行的服务器的disabled_storage_engines系统变量设置为禁用某些存储引擎(例如,MyISAM),mysql_upgrade可能会失败,这样的错误:

mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled
(Table creation is disallowed).

为了解决这个问题,重新启动服务器disabled_storage_engines禁用。然后你就可以运行mysql_upgrade成功。之后,重新启动服务器disabled_storage_engines设置为其初始值

mysql_upgrade所有数据库中的所有表的过程,这可能需要很长的时间来完成。每个表被锁定,因此无法使用其他部分,它正在处理。检查和修复操作可以是费时的,特别是对于大型的表。

关于什么的查表操作的细节需要,看到的描述FOR UPGRADE期权的CHECK TABLE声明(见第13.7.3.2,“检查表语法”

所有的检查和修理表标有当前MySQL版本号。这确保下次运行mysql_upgrade与服务器相同的版本,它可以告诉是否需要检查或修理桌子了。

mysql_upgrade也节省了MySQL版本号文件命名mysql_upgrade_info在数据目录。这是用于快速检查是否所有的表都被检查过这个版本,查表可以跳过。忽略这个文件并执行检查不管,使用--force选项

mysql_upgrade检查user表中的行,与空的任何行插件柱套,柱,'mysql_native_password'如果凭据用的插件兼容哈希格式。一个老的密码哈希的行必须手动升级。

mysql_upgrade不升级的帮助表的内容。升级的说明,见第5.1.13,“服务器端”

除非用--skip-sys-schema选项,mysql_upgrade安装sys模式如果没有安装,升级到当前版本,否则。mysql_upgrade返回一个错误如果sys图式的存在,但没有版本看来,在假设的情况下提示用户创建的模式:

Error occurred: A sys schema exists with no sys.version view. If
you have a user created sys schema, this must be renamed for the
upgrade to succeed.

在这种情况下升级,删除或重命名现有的sys图式首先

mysql_upgrade检查partitioned forInnoDB表格,使用通用的分割处理,试图提升他们的创造InnoDB本地分区。你可以升级这些表分别在MySQL客户端使用ALTER TABLE ... UPGRADE PARTITIONINGSQL语句

默认情况下,mysql_upgrade运行mysqlroot用户如果root当你运行密码过期mysql_upgrade,你会看到一条消息,你的密码已经过期,mysql_upgrade作为一个结果失败。要纠正此问题,重置root对unexpire并运行密码mysql_upgrade再一次.首先,连接到服务器root

内核&#62;mysql -u root -p输入密码:****<- enter root password here

重置密码的使用ALTER USER

MySQL的&#62;ALTER USER USER() IDENTIFIED BY 'root-password';

然后退出MySQL和运行mysql_upgrade再一次:

shell> mysql_upgrade [options]

mysql_upgrade支持以下选项,可以在命令行中指定或[mysql_upgrade][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.7 mysql_upgrade选项

格式描述介绍
——绑定地址使用指定的网络接口连接到MySQL服务器
- Character - Sets - dir目录中的字符集设置
我compress压缩所有客户端和服务器之间发送的信息
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
- Force即使mysql_upgrade已经对MySQL的当前版本执行力执行
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
——主机在给定的主机连接到MySQL服务器
——登录路径读取登录路径选项。mylogin.cnf
——max allowed packet最大包长度来发送或接收从服务器
网络缓冲区长度缓冲区大小为TCP/IP协议和Socket通信
没有默认值不看选项文件
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——共享内存库的名字使用共享内存连接的共享内存名
-跳过系统架构不要安装或升级系统架构
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
TLS版本……加密连接许可协议
——升级系统表只更新系统表,没有数据
用户MySQL用户名连接到服务器时使用
--详细详细模式
-版-检查检查适当的服务器版本
——写binlog所有语句写二进制日志

4.5 MySQL客户端程序

本节描述了客户端程序连接到MySQL服务器。

4.5.1MySQL- MySQL命令行工具

MySQL与输入线编辑功能简单的SQL内核。它支持交互式和非交互式的使用。当交互使用,查询结果是一个ASCII表的格式。当使用非交互(例如,作为一个过滤器),结果以制表符分隔的格式。输出的格式可以使用命令选项改变。

如果你有问题,由于内存不够大的结果集,使用--quick选项。这个力量MySQL结果从服务器检索一行一次而不是检索整个结果集缓冲在记忆之前显示它。这是通过返回的结果集使用了mysql_use_result()C API函数在服务器/客户端库而不是mysql_store_result()

笔记

另外,mysql提供的X devapi。详情见MySQL的内核(8.0 8.0 MySQL的一部分)

使用MySQL是很容易的。从你的命令解释器调用它的提示如下:

shell> mysql db_name

shell> mysql --user=user_name --password db_name
Enter password: your_password

然后键入SQL语句,结束它;G,或\G按回车键

打字控制C中断当前的声明,如果有一个,或取消任何部分的输入线,否则。

你可以在一个脚本文件执行SQL语句(批处理文件)像这样:

shell> mysql db_name < script.sql > output.tab

在UNIX的MySQL客户端日志进行交互的历史文件报表。看到第4.5.1.3,“MySQL日志”

4.5.1.1 MysQL选项

MySQL支持以下选项,可以在命令行中指定或[mysql][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.8 MySQL选项

格式描述介绍远离的
自动重复启用自动重复
自动垂直输出启用自动垂直结果集显示
——批不要使用历史文件
二进制十六进制在十六进制显示二进制值8.0.2
二进制模式禁用\r\n - \n翻译和处理0月底查询
——绑定地址使用指定的网络接口连接到MySQL服务器
- Character - Sets - dir目录中的字符集设置
——列名结果写列名
柱型信息显示结果集元数据
- Comments是否保留或报表条评论发送到服务器
我compress压缩所有客户端和服务器之间发送的信息
——连接过期密码指示服务器,客户端可以处理过期密码沙盒模式。
——connect_timeout连接超时之前的秒数
数据库数据库的使用
——调试编写调试日志;如果MySQL与调试支持内置支持
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
-定界设置语句分隔符
——使明文插件使明文认证插件
--执行执行该语句并退出
- Force即使一个SQL错误时继续
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
histignore……模式指定要忽略测井报表
——主机在给定的主机连接到MySQL服务器
我的HTML生成HTML输出
-先生-空间忽略空格后的函数名
——init命令SQL语句执行后连接
-行-数字错误写行数
本地文件启用或禁用本地负荷数据文件的能力
——登录路径读取登录路径选项。mylogin.cnf
——max_allowed_packet最大包长度来发送或接收从服务器
-马克思在加入时使用安全更新自动限行
——命令使指定的MySQL命令
——net_buffer_length缓冲区大小为TCP/IP协议和Socket通信
没有汽车的翻版禁用自动重新
我没有哔哔声不响铃时发生错误
没有默认值不看选项文件
一个数据库忽略陈述除了默认的数据库命令行上指定
——传呼机使用了分页查询输出命令
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
-提示设置提示到指定的格式
——协议连接协议使用
——快不缓存查询结果
——原写列值没有逃生的转换
——重新连接如果对服务器的连接丢失,自动尝试重新连接
- I在A虚拟安全更新只允许更新和删除语句指定的键值
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
——select_limit选择语句时使用安全更新自动限制
--公共密钥服务器路径路径名的文件含有RSA公钥
——共享内存库的名字使用共享内存连接的共享内存名
警告-显示警告每个语句后如果有任何
——也忽略忽略SIGINT信号(通常是输入控制C结果)
——寂静静音模式
-跳过自动rehash禁用自动重新
-跳过列名不在结果写列名
-跳过线数跳过行号错误
-跳过指定的命令禁用指定的MySQL命令
-跳过传呼机禁用分页
-跳过连接禁用连接
-插座连接到本地主机,Unix套接字文件或Windows命名管道使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
——系统日志交互式报表syslog日志
以表格格式显示输出
做……附上一份输出到指定的文件
TLS版本……加密连接许可协议
——缓冲每次查询后刷新缓冲区
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出
——垂直打印查询输出行垂直(每列值一行)
--等待如果无法建立连接,等待并重试而中止
- XML生成XML输出

  • --help-?

    显示帮助信息并退出

  • --auto-rehash

    启用自动重复。此选项在默认情况下,它使数据库、表和列的名称,完成。使用--disable-auto-rehash禁止改作。导致MySQL启动速度更快,但你必须发出rehash命令或其“#如果你想用快捷完成名称。

    完成一个名称,进入第一部分按Tab。如果是明确的,MySQL完成它。否则,你可以再次按下Tab看到可能的名字,开始与您键入的内容为止。完成不如果没有默认数据库发生。

    笔记

    此功能需要使用MySQL客户端编译的readline图书馆通常情况下,的readline在Windows库不可用。

  • --auto-vertical-output

    因为结果集是垂直显示如果他们太宽为当前窗口,并使用正常的表格格式否则。(这适用于语句终止;G。)

  • --batchB

    使用标签作为列分隔符的打印结果,每行一个新的线。使用此选项,MySQL不使用历史文件

    在nontabular输出格式的批处理模式的结果和特殊字符转义。逃避可以用原模式禁用;看到的描述--raw选项

  • --binary-as-hex

    当这个选项了,MySQL显示二进制数据使用十六进制记数法(0xvalue)。这是无论是整体输出的显示格式是表格、垂直、HTML或XML。

  • --binary-mode

    此选项有助于当处理mysqlbinlog输出可能包含BLOB价值观。默认情况下,MySQL翻译\r\n在语句的字符串\n解读\0as the statement终结者。--binary-mode禁用功能。它也禁止所有MySQL命令除了charset分隔符在非交互模式(输入管道MySQL或加载使用source命令)

  • --bind-address=ip_address

    在具有多个网络接口的计算机,使用此选项来选择用于连接到MySQL服务器的接口。

  • --character-sets-dir=dir_name

    目录中的字符集设置。看到10.14节,“字符集配置”

  • --column-names

    结果写列名

  • --column-type-info

    显示结果集元数据

  • --commentsC

    是否带或保存注释语句发送到服务器。默认值是--skip-comments(带注释),使--comments(保存的意见)

    笔记

    这个MySQL客户总是通过优化程序提示服务器,不管这个选项了。

    注释剥离是过时的。此功能和选项来控制它将在未来的MySQL版本中删除。

  • --compressC

    压缩所有信息在客户端和服务器之间发送的如果都支持压缩。

  • --connect-expired-password

    指示服务器,客户端可以使用连接的帐户已过期的密码处理沙盒模式。这可能是有用的交互调用MySQL因为通常服务器断开连接交互的客户端尝试使用一个帐户的密码过期。(见第6.3.9条,“服务器处理过期的密码”。)

  • --database=db_nameDdb_name

    数据库的使用。这是在一个选项文件很有用。

  • --debug[=debug_options]- # [debug_options]

    写一个调试日志。一个典型的debug_options字符串D:T:O,file_name。默认值是D:T:啊,/甲氧苄啶/ mysql.trace

    此选项仅当mysql建成使用WITH_DEBUG。MySQL发布的二进制文件由Oracle提供的是使用这个选项了

  • --debug-check

    打印一些调试信息,在程序退出时。

  • --debug-infoT

    打印调试信息和内存和CPU使用率统计程序退出时。

  • --default-auth=plugin

    淡淡的客户端身份验证插件使用。看到第6.3.10,“认证”

  • --default-character-set=charset_name

    使用charset_name设置客户端连接的默认字符。

    这个选项是有用的如果操作系统使用一个字符集和MySQL客户端默认使用另一个。在这种情况下,输出的格式可能不正确。你通常可以解决这样的问题,使用这个选项强制客户端使用系统的字符集,而不是。

    有关更多信息,参见10.4节,“连接字符集和Collations”,和10.14节,“字符集配置”

  • --defaults-extra-file=file_name

    读此选项文件的全局选项文件(Unix)后,但在用户选项文件。如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

  • --defaults-file=file_name

    只能使用指定的选项文件。如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

    例外:即使--defaults-file客户端程序读取,mylogin.cnf。

  • --defaults-group-suffix=str

    阅读不仅平时选项组,而且组与通常的名称后缀str。例如,MySQL通常读取[client][数据库]群组如果--defaults-group-suffix=_other选择了,MySQL也读[client_other][其他] _ MySQL群组

  • --delimiter=str

    设置语句分隔符。默认是分号字符(;

  • --disable-named-commands

    禁用指定的命令。使用\*只使用指定的命令,或仅在一行的结尾分号开始(MySQL从这个选项启用默认情况下。然而,即使有这样的选择,只要格式命令还是从第一线工作。看到4.5.1.2节,“MySQL命令”

  • --enable-cleartext-plugin

    使mysql_clear_password获取明文身份验证插件。(See第6.5.1.4,“客户端明文认证”。)

  • --execute=statementstatement

    执行该语句并退出。默认的输出格式是这样产生的--batch。看到4.2.4节,“使用选项在命令行上”,一些例子。使用此选项,MySQL不使用历史文件

  • --forceF

    即使一个SQL错误时继续。

  • --get-server-public-key

    请求从服务器的RSA密钥对的公钥密码交换所需的基础。此选项适用于客户,验证的caching_sha2_password身份验证插件。这个插件,服务器不发送公钥除非要求。这个选项是账户不验证插件忽略。也正是基于RSA密码如果交换不使用的忽视,如当客户端连接到服务器使用安全连接。

    如果--server-public-key-path=file_name给出指定有效的公钥文件,它将优先于--get-server-public-key

    的信息caching_sha2_password插件,看第6.5.1.3,“缓存SHA-2认证”

  • --histignore

    冒号分隔的一个或多个模式指定语句忽略日志记录表。这些模式被添加到默认模式表("*IDENTIFIED*:*PASSWORD*")。此选项指定的值会影响写入历史文件的日志语句,并系统日志如果--syslog选择了。有关更多信息,参见第4.5.1.3,“MySQL日志”

  • --host=host_nameHhost_name

    在给定的主机连接到MySQL服务器。

  • --htmlH

    产生的HTML输出

  • --ignore-spaces-

    忽略空格后的函数名。这样做的效果是在讨论IGNORE_SPACESQL模式(这第5.1.10,”服务器的SQL模式”

  • --init-command=str

    SQL语句执行连接到服务器后。如果自动重新启用,语句重新连接后发生再次执行。

  • --line-numbers

    错误写行数。禁用此--skip-line-numbers

  • --local-infile[={0|1}]

    启用或禁用LOCAL能力LOAD DATA INFILE。为MySQL,这个功能默认是禁用的。没有价值,期权使LOCAL。该选项可作--local-infile=0--local-infile=1显式禁用或启用当地。使本地数据加载也需要服务器允许它;看第6.1.6,“负荷数据的本地“安全问题

  • --login-path=name

    从指定的登录路径的选择.mylogin.cnf登录文件的路径。一登录路径包含选项指定MySQL服务器连接和帐户认证作为一个选项组。创建或修改登录路径文件,使用_ _ MySQL配置编辑器功用看到4.6.7“,”_ _ MySQL配置编辑器MySQL的配置实用程序”

  • --named-commandsG

    使命名MySQL命令。长格式的命令是允许的,不只是短暂的格式命令。例如,quitQ 0这是公认的。使用--skip-named-commands禁用指定的命令。看到4.5.1.2节,“MySQL命令”

  • --no-auto-rehash-在

    这具有相同的效果--skip-auto-rehash。看到描述--auto-rehash

  • --no-beepB

    不响铃时发生错误

  • --no-defaults

    不要读任何选项文件。如果程序启动失败,由于从一个选项文件阅读未知的选项,--no-defaults可以用来防止读

    例外的是.mylogin.cnf文件,如果存在,是在所有情况下读。这允许密码将在一个更安全的方式比在命令行指定即使--no-defaults使用。(mylogin.cnf。是由_ _ MySQL配置编辑器功用看到4.6.7“,”_ _ MySQL配置编辑器MySQL的配置实用程序”。)

  • --one-database-或

    忽略陈述除了那些发生在默认的数据库是一个命令行上指定。这个选项是最基本的,要小心使用。语句过滤是基于USE声明.

    最初,MySQL执行在输入语句因为指定数据库db_name在命令行上相当于插入USE db_name在输入的开始。然后,每个USEencountered statement,MySQL接受或拒绝以下取决于命名的数据库命令行上的一个声明。表述的内容是无形的。

    假设MySQL调用过程这套报表:

    DELETE FROM db2.t2;
    USE db2;
    DROP TABLE db1.t1;
    CREATE TABLE db1.t1 (i INT);
    USE db1;
    INSERT INTO t1 (i) VALUES(1);
    CREATE TABLE db2.t1 (j INT);
    

    如果命令行MySQL数据库DB1 --力--MySQL处理输入如下:

    • 这个DELETE声明是因为默认的数据库执行DB1,尽管声明的名字在不同的数据库表。

    • 这个DROP TABLECREATE TABLE陈述并非因为默认的数据库是不执行DB1,即使报表名称的表中db1

    • 这个INSERTCREATE TABLE声明是因为默认的数据库执行DB1,即使CREATE TABLE声明的名字在不同的数据库表。

  • --pager[=command]

    使用了分页查询输出命令。如果命令被省略,默认页是你的价值PAGER环境变量。有效的寻呼机较少的更多猫[文件名] &#62;,等等。此选项仅适用于UNIX和只有在交互模式。禁用分页,使用--skip-pager4.5.1.2节,“MySQL命令”,讨论进一步输出分页。

  • --password[=password]【—Ppassword]

    在连接到服务器时使用的密码。如果你使用的是短的期权形式(-p),你不能有选项和密码之间的空间。如果省略password以下的值--passwordP在命令行选项,MySQL提示一

    指定命令行上的密码应该被认为是不安全的。看到第6.1.2.1,“最终用户指南的密码安全”。你可以使用一个选项文件以避免在命令行上提供的密码。

  • --pipeW

    在Windows中,连接到使用命名管道服务器。如果服务器支持命名管道连接适用此选项。

  • --plugin-dir=dir_name

    目录中查找插件。指定此选项如果--default-auth选项用于指定一个身份验证插件,但MySQL没有找到它。看到第6.3.10,“认证”

  • --port=port_numPport_num

    TCP / IP端口用于连接。

  • --print-defaults

    打印程序的名字和所有的选项,从选项文件获取。

  • --prompt=format_str

    设置提示到指定的格式。默认值是mysql>。这提示可以包含特殊的顺序进行4.5.1.2节,“MySQL命令”

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    连接协议用于连接到服务器。它是有用的,其他连接参数通常会导致协议被用作其他比你想要的人。在允许值的详细信息,参见4.2.2节,“连接到服务器”

  • --quickQ

    不缓存每个查询结果,打印每一行在收到。这可能会降低服务器如果输出是暂停。使用此选项,MySQL不使用历史文件

  • --rawR

    For Tab份子Outturn,the拳击在一列列使价值区别于另一个。对于nontabular输出(如在批处理模式下生产或当--batch--silent选项给出),特殊字符都逃跑的输出可以很容易识别。换行符、制表,,和反斜杠写成\nt\0,和。这个--raw选项禁用这个字符转义。

    下面的示例演示的表格与nontabular输出和原模式禁用逃生使用:

    % mysql
    mysql> SELECT CHAR(92);
    +----------+
    | CHAR(92) |
    +----------+
    | \        |
    +----------+
    
    % mysql -s
    mysql> SELECT CHAR(92);
    CHAR(92)
    \\
    
    % mysql -s -r
    mysql> SELECT CHAR(92);
    CHAR(92)
    \
    
  • --reconnect

    如果对服务器的连接丢失,自动尝试重新连接。一个单一的连接尝试,每一次连接丢失。抑制重行为,使用--skip-reconnect

  • --safe-updates--i-am-a-dummyU

    只允许那些UPDATEDELETE语句指定哪些行修改通过使用关键值。如果你有一个选项文件中设置此选项,您可以重写它的使用--safe-updates在命令行。看到第4.5.1.6,MySQL提示”有关此选项的更多信息。

  • --secure-auth

    这个选项是在MySQL 8.0.3删除。

  • --server-public-key-path=file_name

    一种基于密码的RSA密钥对的公钥交换服务器要求客户端复制文件的路径名。该文件必须在PEM格式。此选项适用于客户端验证的sha256_passwordcaching_sha2_password身份验证插件。这个选项是账户不认证有一个插件忽略。也正是基于RSA密码如果交换不使用的忽视,如当客户端连接到服务器使用安全连接。

    如果--server-public-key-path=file_name给出指定有效的公钥文件,它将优先于--get-server-public-key

    此选项仅当MySQL建立使用OpenSSL提供。

    的信息sha256_passwordcaching_sha2_password插件,看第6.5.1.2,“SHA-256认证”,和第6.5.1.3,“缓存SHA-2认证”

  • --shared-memory-base-name=name

    在Windows中,共享内存名,使用共享内存连接到本地服务器了。默认值是MYSQL。共享内存的名字是大小写敏感的。

    必须启动服务器的--shared-memory选项来启用共享内存连接。

  • --show-warnings

    原因是每一句警告后如有任何。此选项适用于交互式和批处理模式。

  • --sigint-ignore

    忽略SIGINT信号(通常是打印结果控制C

  • --silentS

    静音模式。产生更少的输出。此选项可以多次产生更少的输出。

    此选项的结果nontabular输出格式和特殊字符转义。逃避可以用原模式禁用;看到的描述--raw选项

  • --skip-column-namesn

    不在结果写列名

  • --skip-line-numbersL

    不要错误写行数。有用的当你想比较结果文件,包括错误消息。

  • --socket=pathSpath

    连接到localhost,UNIX socket文件使用,或者,在Windows环境下,使用命名管道的名称。

  • --ssl*

    选项,从--ssl指定是否使用SSL连接的服务器,在哪里可以找到的SSL密钥和证书。看到第6.4.2,“加密连接”命令选项

  • --ssl-fips-mode={OFF|ON|STRICT}

    控制是否启用FIPS模式在客户端。这个--ssl-fips-mode期权不同于其他- SSLxxx选项,它不是用来建立加密连接,而是影响加密操作是允许的。看到6.6节,“FIPS支持”

    这些--ssl-fips-mode值是允许的:

    • OFF模式:fips disable。

    • ON:使fips模式

    • STRICT使:严格的FIPS模式

    笔记

    如果OpenSSL FIPS对象模块是不可用的,唯一被允许的值--ssl-fips-mode关闭。在这种情况下,设置--ssl-fips-mode打开(放)STRICT使客户产生在启动警告,在非FIPS模式操作。

  • --syslogJ

    此选项MySQL发送交互式报表系统日志功能。在Unix上,这是syslog;在Windows,这是Windows事件日志。目的地在哪里出现是系统相关的日志信息。在Linux中,目标往往是/是/日志/;文件

    这是一个基于Linux的输出产生利用样本--syslog。此输出格式化为可读性;每个登录的消息实际上需要一个单一的线。

    12月25 myhost 7::[ 39 ]:系统mysqlclient 20824 _ MySQL用户:用户:奥斯卡,奥斯卡是我_ _ connection ID号:23,_ DB服务器,_:127.0.0.1,DB—,::是使用测试查询;7日:12 39 [ 28 ]:myhost mysqlclient 20824 _:系统用户:用户:MySQL _奥斯卡,奥斯卡是我_ connection ID号:23,_ DB服务器,_:127.0.0.1测试:是,是,DB查询:显示表;

    有关更多信息,参见第4.5.1.3,“MySQL日志”

  • --tableT

    以表格形式显示输出。这是交互式使用默认的,但可以用来批量生产模式表输出。

  • --tee=file_name

    附上一份输出到指定文件。此选项仅在交互模式下工作。4.5.1.2节,“MySQL命令”讨论了三通文件,进一步。

  • --tls-version=protocol_list

    该协议允许客户端通过加密连接。价值是一个逗号分隔的列表包含一个或多个协议名称。可以指定此选项取决于用来编译MySQL的SSL库的协议。详情见第6.4.6,“加密连接协议和密码”

  • --unbufferedn

    每次查询后刷新缓冲区。

  • --user=user_nameUuser_name

    MySQL用户名连接服务器时使用。

  • --verboseV

    详细模式。产生更多的输出程序干什么。此选项可以多次产生更多的产出。(例如,-v -v -v产生表输出格式即使在批处理模式。)

  • --versionV

    显示版本信息并退出

  • --vertical

    打印查询输出行垂直(每列值一行)。没有这个选项,你可以通过终止他们与指定单个报表垂直输出\G

  • --waitW

    如果无法建立连接,等待并重试而中止。

  • --xmlX

    生成XML输出

    <field name="column_name">NULL</field>
    

    输出时--xml使用MySQL火柴,mysqldump--xml。看到4.5.4“,”mysqldump一个数据库的备份计划”,详情

    XML输出也使用XML命名空间,如下所示:

    shell> 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">
    <row>
    <field name="Variable_name">version</field>
    <field name="Value">5.0.40-debug</field>
    </row>
    
    <row>
    <field name="Variable_name">version_comment</field>
    <field name="Value">Source distribution</field>
    </row>
    
    <row>
    <field name="Variable_name">version_compile_machine</field>
    <field name="Value">i686</field>
    </row>
    
    <row>
    <field name="Variable_name">version_compile_os</field>
    <field name="Value">suse-linux-gnu</field>
    </row>
    </resultset>
    

    (这个错误# 25946。)

你也可以通过设置以下变量--var_name=value

  • connect_timeout

    连接超时之前的秒数。(默认值是0。)

  • max_allowed_packet

    最大尺寸的缓冲器的客户端/服务器通信。默认为16MB,最大为1GB。

  • max_join_size

    自动限制在使用时加入行--safe-updates。(默认值是1000000。)

  • net_buffer_length

    缓冲区的大小为TCP/IP协议和Socket通信。(默认值为16KB。)

  • select_limit

    自动限制SELECT使用时的静态--safe-updates。(默认值是1000。)

4.5.1.2 MySQL命令

MySQL把你的问题到服务器来执行SQL语句。还有一组命令MySQL本身的解释。列出了这些命令,类型helpHmysql>提示:

mysql> help

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given
               outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing
               binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.

For server side help, type 'help contents'

如果MySQL被调用的--binary-mode所有的选择,MySQL命令禁用除charset分隔符在非交互模式(输入管道MySQL或加载使用source命令)

每个命令都有一个长期和短期的形式。长期形成的是大小写不敏感;短形式。长期形成的可以通过一个可选的分号的终结者,但短形式不应该。

在多线的短形式的命令的使用/* ... */评论是不支持的

  • help [arg]\ H [arg]\?【arg]?【arg]

    显示帮助信息列出可用的MySQL命令

    如果你提供的一个参数help命令,MySQL使用它作为一个搜索字符串从MySQL参考手册的内容访问服务器的帮助。有关更多信息,参见4.5.1.4节,“MySQL服务器端的帮助”

  • charset charset_name0 Ccharset_name

    更改默认字符集和问题SET NAMES声明。这使得将保持同步的客户端和服务器如果字符MySQL是运行自动重新启用(不推荐),因为指定的字符集进行重新连接。

  • clear0 C

    清除当前输入。如果执行该语句,你正在进入你改变主意,用这个。

  • connect [db_name host_name]]R [db_namehost_name] ]

    连接到服务器。可选的数据库名和主机名参数可以指定默认的数据库或主机上运行的服务器。如果省略,使用当前值。

  • delimiter str0 Dstr

    更改字符串MySQL解读之间的SQL语句的分离器。默认是分号字符(;

    分隔符的字符串可以被指定为一个引号或引用的参数delimiter命令行。引用可以用单引号(&#39;(二)报价"),或反引号(`)字符。包括引用字符串内的报价,要么引用字符串与一个不同的引号字符或逃脱一个反斜杠引用(\)字符。反斜杠应避免引用字符串之外,因为它是MySQL转义字符。一个不带引号的说法,分隔符是读到线的第一空间或结束。一个引用的论据,分隔符是读到匹配的引用就行了。

    MySQL将分隔符字符串实例作为语句分隔符的任何地方发生,除了在引用字符串。要定义一个分隔符在其他词可能出现的小心。例如,如果你定义的分隔符为X,您将无法使用这个词指数在陈述MySQL对此的解释为INDE其次是分隔符X

    当分隔符识别MySQL设置的东西比其他的默认值;,该字符被发送到服务器没有解释实例。然而,服务器本身还是解释作为一个语句分隔符和工艺报表相应。这种行为在服务器端进入多个语句执行起(见第27.7.19,“C API多语句执行的支持”),并用于分析存储过程和函数、触发体,和事件(见23.1节,“定义存储的程序”

  • edit0和

    当前输入语句编辑MySQL查查照片EDITOR视觉环境变量来确定编辑器的使用。默认的编辑器不及物动词如果没有变量设置

    这个edit命令只有在UNIX的作品。

  • egoG

    发送当前语句的服务器被执行和使用垂直格式显示结果。

  • exitQ 0

    出口MySQL

  • goG

    发送当前语句的服务器来执行。

  • nopager\n

    禁用输出分页。看到描述pager

    这个nopager命令只有在UNIX的作品。

  • noteet

    禁用输出复制到T恤文件。看到描述tee

  • nowarningW

    在每个语句后禁止显示警告。

  • pager [command]”(Pcommand]

    使输出分页。通过使用--pager当你援引时MySQL,可以浏览或与UNIX程序如互动模式的搜索查询结果较少的更多,或任何其他类似的计划。如果你指定的选项没有价值,MySQL检查的价值PAGER环境变量设置寻呼机。寻呼机的功能只有在交互模式下工作。

    输出分页可以启用交互式的pager命令和残疾人nopager。命令以一个可选的参数;如果,分页程序设置。没有争论,传呼机设置为页面设置命令行,或stdout如果没有指定寻呼机

    输出页面只能在UNIX因为它使用popen()功能,它不存在于Windows。对于Windows,这T恤衫选项可以用来保存查询的输出,虽然不方便pager在某些情况下浏览输出。

  • print\ p

    打印当前输入语句不执行。

  • prompt [str]R [str]

    重新配置MySQL提示给定字符串。特殊字符的序列,可用于提示在本节后面介绍。

    如果您指定的prompt没有参数的命令,MySQL重置默认的提示mysql>

  • quitQ 0

    出口MySQL

  • rehash“#

    重建完成哈希使数据库、表和列的名称,当你输入语句完成。(看到的描述--auto-rehash选项。)

  • resetconnectionx

    复位清除会话状态的连接。

    重置连接有相同的效果mysql_change_user()或自动重新连接,连接不关闭并重新打开,并重新认证不做。看到第27.7.7.3,“mysql_change_user()”)和它的第27.7.24,“C API自动重联控制”

    这个例子显示了如何resetconnection清除一个价值保持会话状态:

    MySQL的&#62;SELECT LAST_INSERT_ID(3);----------------------- |负荷_插入_ ID(3)| ----------------------- | | ----------------------- MySQL>3SELECT LAST_INSERT_ID();_ ------------------ |负载插入_ ID(3)| ------------------ | MySQL &#62; | ------------------resetconnection;MySQL的&#62;SELECT LAST_INSERT_ID();------------------ | last_insert_id() | ------------------ | 0 | ------------------
  • source file_name\file_name

    阅读指定的文件并执行其中的语句。在Windows中,您可以指定路径名隔板/

    引号字符作为文件名的一部分本身。最好的结果是,名称不包含空格字符。

  • status-S

    提供状态信息的连接和服务器,你使用的是。如果你正在运行--safe-updates模式,地位同时打印值为MySQL影响你的查询变量

  • system command\!command

    执行给定的命令使用默认的命令解释器。

    这个system命令只有在UNIX的作品。

  • tee [file_name]不[file_name]

    通过使用--tee当你援引时MySQL,你可以登录报表输出。所有的数据都显示在屏幕上添加一个给定的文件。这对于调试非常有用。MySQL冲的结果文件在每个语句后,就在它打印下一个提示。TEE的功能只有在交互模式下工作。

    您可以启用此功能交互与tee命令。如果没有参数,以前的文件使用。这个T恤衫文件可以被禁用的notee指挥。执行T恤衫再使测井

  • use db_name1db_name

    使用db_name作为默认的数据库

  • warningsW

    使每个语句后的警告显示(如果有)。

这是关于几个小窍门pager命令:

  • 你可以用它来写一个文件,结果只会在文件:

    mysql> pager cat > /tmp/log.txt
    

    你也可以通过你想用你的寻呼程序的任何选项:

    mysql> pager less -n -i -S
    
  • 在前面的示例中,请注意-S选项你可能会发现它非常有用的查询结果浏览广。有时一个很宽的结果集是很难在屏幕上阅读。这个S选项较少的可以使结果更加可读的因为你可以横向使用向左和向右箭头键滚动。你也可以使用-S交互在较少的横向浏览模式切换和关闭。欲了解更多信息,阅读较少的手册页:

    shell> man less
    
  • 这个-FX可以使用的选项较少的使其输出是否适合在一个屏幕上退出,这是方便没有滚动的必要时:

    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
    

    在本例中,该命令将查询结果在两个不同的文件系统安装在不同的目录文件/dr1DR2 /结果显示在屏幕上,但仍然使用较少的

你也可以结合tee寻呼机功能.有一个tee文件启用寻呼机设置较少的,你可以浏览结果较少的程序还追加到一个文件中同时一切。在UNIX的区别tee寻呼机命令和MySQL内置tee命令是内置的T恤衫即使你没有UnixT恤衫可用内置tee也记录一切打印在屏幕上,而UNIXT恤衫使用pager不记录太多。此外,T恤衫文件记录可以开启和关闭交互的MySQL。当你想记录一些查询到一个文件,这是有用的,而不是别人。

这个prompt命令重新配置默认MySQL的&#62;提示。为明确提示字符串可以包含下列特殊序列。

选项描述
\C当前的连接标识符
\c一个计数器,每个声明你问题的增量
\D完整的当前日期
\d默认的数据库
\h服务器主机
\l目前的分隔符
\m当前时间的分钟
\n换行符
\O三信的格式当月(Jan,Feb,…)
\o在数字格式的当前月
\P上午/下午
\p当前的TCP / IP端口和套接字文件
\R当前时间,24小时军事时间(0–23)
\r当前的时间,标准时间12小时(1–12)
\S分号
\s当前时间的秒
\t一个制表符
\U

你的全部user_name@host_name帐户名称

\u你的用户名
\v服务器版本
\w三信的格式,本周今天(周一,周二,…)
\Y今年,四位
\y今年,两位数
\_一个空间
\ 一个空间(空间包括反斜杠)
\'单引号
\"双引号
\\一个文字\反斜杠字符
\x

x,任何x以上未列出的

你可以在几个方面设置提示:

  • 使用环境变量你可以设置MYSQL_PS1环境变量提示字符串。例如:

    内核&#62;export MYSQL_PS1="(\u@\h) [\d]> "
  • 使用命令行选项你可以设置--prompt在命令行选项MySQL。。。。。。。例如:

    shell> mysql --prompt="(\u@\h) [\d]> "
    (user@host) [database]>
    
  • 使用一个选项文件你可以设置prompt选项中的[数据库]任何MySQL选项文件组,如/etc/my.cnfmy.cnf在你的家目录文件。例如:

    [mysql]
    prompt=(\\u@\\h) [\\d]>\\_
    

    在这个例子中,注意反斜线都翻了一番。如果你设置提示使用prompt在一个选择文件选项,最好是双反斜杠时使用的特殊提示选项。在允许的提示选项和特殊的转义序列,在选项文件确认集合一些重叠。(在选项文件中列出的转义序列规则第4.2.6、“使用选项文件”。)的重叠可能会导致你的问题,如果你用单斜线。例如,\s被解释为一个空间,而不是当前的秒值。下面的示例演示如何定义一个提示在一个选项文件包含当前时间HH:MM:SS &#62;格式:

    [mysql]
    prompt="\\r:\\m:\\s> "
    
  • 设置提示交互你可以改变你的及时交互使用prompt(或R)命令。例如:

    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>
    

4.5.1.3 MySQL日志

这个MySQL客户可以做这种类型的语句执行交互式登录:

  • 在UNIX,MySQL写入历史文件的声明。默认情况下,此文件名为.mysql_history在你的家目录。指定一个不同的文件,设置的值MySQL _ histfile环境变量

  • 在所有平台上,如果--syslog选择了,MySQL写入系统日志功能的报表。在Unix上,这是syslog;在Windows,这是Windows事件日志。目的地在哪里出现是系统相关的日志信息。在Linux中,目标往往是/是/日志/;文件

下面的讨论描述的特点,适用于所有的日志类型和提供特定于每个记录型信息。

测井时

每个启用的日志记录的目的,记录发生如下声明:

  • 报表记录只有当执行交互式。例如,非交互式报表,当读取一个文件或管道。它也可能抑制语句测井应用--batch--execute选项

  • 语句被忽略,不记录是否匹配在任何模式忽略列表这个列表是后来所描述的。

  • MySQL记录每个nonignored,空语句行单独。

  • 如果一个nonignored语句跨越多行(不包括终止符),MySQL连接线形成完整的语句,地图版本的空间,并记录结果,再加上一个分隔符。

因此,输入语句可以跨多行记录了两次。考虑输入:

mysql> SELECT
    -> 'Today is'
    -> ,
    -> CURDATE()
    -> ;

在这种情况下,MySQL日志选择“今天是&#39;curdate(),和系读他们。它还记录完整的语句,映射后SELECT\n'Today is'\n,\nCURDATE()选择“今天”,curdate(),再加上一个分隔符。因此,这些线路出现在日志输出:

SELECT
'Today is'
,
CURDATE()
;
SELECT 'Today is' , CURDATE();

MySQL忽略了目的陈述,在任何模式匹配的记录忽略列表默认情况下,该模式列表"*IDENTIFIED*:*PASSWORD*",忽视语句引用的密码。模式匹配是大小写不敏感。在图案,两个字符是特殊的:

  • ?匹配任何单个字符

  • *匹配任何序列的零或多个字符。

要指定额外的模式,使用--histignore选择或设置麦斯汀娜环境变量。(如果都是指定的,期权价值优先。)的值应该是一个冒号分隔的一个或多个模式列表,并附加到默认模式列表。

模式在命令行上指定需要引用或逃到阻止你的命令解释器从特殊处理它们。例如,抑制测井UPDATE删除除了陈述,指密码语句,调用MySQL这样地:

shell> mysql --histignore="*UPDATE*:*DELETE*"
控制历史文件

这个.mysql_history文件应该受限制的访问模式,可以将敏感信息写入,如SQL语句包含密码的文本。看到第6.1.2.1,“最终用户指南的密码安全”

如果你不想保持一个历史文件,先删除.mysql_history如果它真的存在。然后使用以下技术来防止它再次:

  • 设置MYSQL_HISTFILE环境变量/dev/null。造成这个设置每次登录生效,把它放在一个shell启动文件。

  • 创造.mysql_history作为一个符号链接/dev/null这需要做的只有一次:

    shell> ln -s /dev/null $HOME/.mysql_history
    
系统日志的特点

如果--syslog选择了,MySQL将交互式报表系统日志功能。消息记录具有以下特点。

记录发生在信息水平。这对应于LOG_INFO优先系统日志On Unix / Linuxsyslog能力和_ EventLog _信息类型对Windows事件日志。咨询你的记录能力配置你的系统文件。

消息大小的冰有限公司两个1024字节。

消息包含标识符MysqlClient遵循这些价值观:

  • SYSTEM_USER

    该系统的用户名(登录名)或--如果用户是未知的

  • MYSQL_USER

    MySQL用户名(指定的--user期权)或——如果用户是未知的

  • CONNECTION_ID

    客户端连接标识符。这是一样的CONNECTION_ID()会话中的功能价值

  • DB_SERVER

    服务器主机或--如果主机是未知的

  • DB

    默认的数据库或--如果没有选择数据库

  • QUERY

    对记录的声明全文

这是一个基于Linux的输出产生利用样本--syslog。此输出格式化为可读性;每个登录的消息实际上需要一个单一的线。

12月25 myhost 7::[ 39 ]:系统mysqlclient 20824 _ MySQL用户:用户:奥斯卡,奥斯卡是我_ _ connection ID号:23,_ DB服务器,_:127.0.0.1,DB—,::是使用测试查询;7日:12 39 [ 28 ]:myhost mysqlclient 20824 _:系统用户:用户:MySQL _奥斯卡,奥斯卡是我_ connection ID号:23,_ DB服务器,_:127.0.0.1测试:是,是,DB查询:显示表;

4.5.1.4 MySQL服务器端的帮助

mysql> help search_string

如果你提供的一个参数help命令,MySQL使用它作为一个搜索字符串从MySQL参考手册的内容访问服务器的帮助。这个命令的正确运行需要的帮助表mysql数据库可以帮助主题信息初始化(见第5.1.13,“服务器端”

如果没有匹配的搜索字符串,搜索失败:

mysql> help me

Nothing found
Please try to run 'help contents' for a list of all accessible topics

使用帮助内容查看帮助类别:

mysql> help contents
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the
following categories:
   Account Management
   Administration
   Data Definition
   Data Manipulation
   Data Types
   Functions
   Functions and Modifiers for Use with GROUP BY
   Geographic Features
   Language Structure
   Plugins
   Storage Engines
   Stored Routines
   Table Maintenance
   Transactions
   Triggers

如果搜索字符串匹配的多个项目,MySQL显示匹配的主题:

mysql> help logs
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following topics:
   SHOW
   SHOW BINARY LOGS
   SHOW ENGINE
   SHOW LOGS

使用主题作为搜索字符串中看到该主题的帮助下进入:

mysql> help show binary logs
Name: 'SHOW BINARY LOGS'
Description:
Syntax:
SHOW BINARY LOGS
SHOW MASTER LOGS

Lists the binary log files on the server. This statement is used as
part of the procedure described in [purge-binary-logs], that shows how
to determine which logs can be purged.

mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000015 |    724935 |
| binlog.000016 |    733481 |
+---------------+-----------+

搜索字符串可以包含通配符%_。这些具有相同含义的模式匹配操作进行的LIKE算子。例如,帮助代表%返回主题列表,开始rep

MySQL的&#62;HELP rep%Many help items for your request exist.To make a more specific request, please type 'help <item>',where <item> is one of the followingtopics:   REPAIR TABLE   REPEAT FUNCTION   REPEAT LOOP   REPLACE   REPLACE FUNCTION

4.5.1.5执行从一个文本文件中的SQL语句

这个MySQL客户端通常是交互使用,这样:

shell> mysql db_name

然而,它也可能把你的SQL语句中的一个文件,然后告诉MySQL读取输入文件。这样做,创建一个文本文件text_file包含要执行的语句。然后调用MySQL如图所示:

shell> mysql db_name < text_file

如果你把一个USE db_name声明文件中的第一个语句,不需要在命令行中指定的数据库名称:

内核&#62;mysql < text_file

如果您已经运行了MySQL,你可以执行SQL脚本文件使用source命令或\命令:

mysql> source file_name
mysql> \. 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的批处理模式”

4.5.1.6 mysql提示

本节介绍一些技巧可以帮助你用MySQL更有效

4.5.1.6.1输入行编辑

MySQL支持输入行编辑,使您可以修改当前的输入线的地方或回想以前的输入线。例如,在左箭头右箭头键水平移动在当前输入行,和向上箭头向下箭头键上下移动,通过事先输入的线。退格键删除光标前的字符,键入新字符进入他们在光标位置。进入线,按进入

在Windows中,编辑关键序列是相同的支持在控制台窗口的编辑命令。在Unix系统中,密钥序列取决于用来建立输入库MySQL(例如,在libeditreadline图书馆)

www.un.org / arabic / galibeditreadline图书馆在线提供。改变的关键序列允许通过一个给定的输入库,库中的启动文件中定义的键绑定。这是在你的家目录文件:.editrclibedit.inputrcreadline

例如,在libedit控制W删除当前光标位置和之前的一切控制你deletes the全部在线。在readline控制W删除光标前的单词和控制你删除一切在当前光标位置。如果MySQL建成使用libedit世界卫生组织prefers,A用户的readline这两个键的行为可以把下面的线在.editrc文件(如果需要创建文件):

结合“^ W“删除”沪指wordbind ^ U”VI杀线沪指

看到按键绑定当前,暂时放线,只说bind在结束editrcMySQL当它开始将节目The绑定。

4.5.1.6.2 Unicode支持Windows

基于Windows提供的API读取和写入控制台的UTF-16LE;MySQLWindows用户可以使用这些API。Windows安装程序会创建一个项目在MySQL菜单命名MySQL command line client - Unicode。这项调用MySQL与属性设置为通过控制台使用Unicode的MySQL服务器客户端。

利用这种支持手动运行MySQL在一个控制台,使用兼容Unicode字体和设置设置为Unicode字符集,用于与服务器通信支持默认的字符:

  1. 打开一个控制台窗口

  2. 走到控制台窗口属性,选择字体选项卡,选择龙力控制台或其他兼容的Unicode字体。这是必要的因为控制台窗口开始使用DOS光栅字体,是不足为Unicode默认。

  3. 执行mysql.exe--default-character-set=utf8(或utf8mb4)选项。这个选项是必要的因为utf16le不支持作为一个连接字符集。

那些变化,MySQL将使用Windows API来使用UTF-16LE控制台进行通信,并使用gb3212服务器通信。(菜单项前面提到的设置设置为字体和字符的描述。)

为了避免这些步骤每次运行MySQL,你可以创建一个快捷方式调用mysql.exe。快捷设置控制台字体龙力控制台或其他兼容的Unicode字体,并通过--default-character-set=utf8(或utf8mb4)选项mysql.exe

另外,创建一个快捷方式,设置控制台的字体,并设置中设置的字符[mysql]组你my.ini文件:

[mysql]
default-character-set=utf8
4.5.1.6.3查询结果显示垂直

一些查询结果更可读时,垂直显示,而不是通常的水平表格式。查询可以通过终止与垂直而不是分号查询显示。例如,较长的文本值,包括换行符通常是垂直输出读容易多了:

mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 LIMIT 300,1\G
*************************** 1. row ***************************
  msg_nro: 3068
     date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
    reply: monty@no.spam.com
  mail_to: "Thimble Smith" <tim@no.spam.com>
      sbj: gb3212
      txt: >>>>> "Thimble" == Thimble Smith writes:

Thimble> Hi.  I think this is a good idea.  Is anyone familiar
Thimble> with gb3212 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.

Yes, please do that.

Regards,
Monty
     file: inbox-jani-1
     hash: 190402944
1 row in set (0.09 sec)
4.5.1.6.4使用安全更新选项

对于初学者来说,一个有用的启动选项--safe-updates(或--i-am-a-dummy,具有同样的效果)。它有助于案件时你可能发删除tbl_name声明,但忘记了哪里条款.通常,这样的语句删除表中所有的行。与--safe-updates,你只能通过指定键值识别删除行。这有助于防止事故的发生。

当你使用--safe-updates选项,MySQL发出以下声明,当它连接到MySQL服务器:

SET sql_safe_updates=1, sql_select_limit=1000, max_join_size=1000000;

看到第5.1.7,服务器“系统变量”

这个SET语句有以下作用:

  • 你不允许执行UPDATEDELETE声明,除非你指定在一个关键的制约因素哪里条款或提供LIMIT从句(或双方)。例如:

    更新tbl_name配置not_key_column=val哪里key_column=val;更新tbl_name配置not_key_column=val限制1;
  • 服务器限制所有大SELECT结果1000行,除非该声明包括极限条款.

  • 多台服务器中止SELECT这可能需要检查超过1000000排组合报表。

指定不同于1000和1000000的限制,您可以重写默认使用--select_limit-马克思选项:

shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
4.5.1.6.5禁用MySQL的自动重新连接

如果MySQL客户端失去连接到服务器在发送的一份声明中,它立即自动尝试重新连接到服务器并发送一次再次表态。然而,即使MySQL成功连接,第一次连接已经结束,你以前所有的Session对象和设置了临时表的自动提交模式,和用户和会话变量。另外,任何当前事务回滚。这种行为对你可能的危险,如下面的示例中,服务器被关闭和重新启动的第一和第二语句之间没有你知道吗:

mysql> SET @a=1;
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO t VALUES(@a);
ERROR 2006: MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    1
Current database: test

Query OK, 1 row affected (1.30 sec)

mysql> SELECT * FROM t;
+------+
| a    |
+------+
| NULL |
+------+
1 row in set (0.05 sec)

这个@a用户变量已失去连接,和之后的重联是未定义的。如果它是重要的是要有MySQL终止一个错误如果连接已经丢失了,你可以开始MySQL客户端与--skip-reconnect选项

有关自动重新连接和状态信息的影响的更多信息,当重新连接时,看到第27.7.24,“C API自动重联控制”

4.5.2mysqladmin-管理MySQL服务器客户端

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

援引mysqladmin这样地:

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

mysqladmin支持以下命令。一些命令参数如下命令名称。

  • create db_name

    创建新的数据库名db_name

  • debug

    告诉服务器写入调试信息的错误日志。连接的用户必须有SUPER特权。这些信息的格式和内容如有更改。

    这包括对事件的调度信息。看到第23.4.5,“事件调度器的状态”

  • drop db_name

    删除指定的数据库db_name和所有的表

  • extended-status

    显示服务器状态变量和它们的值。

  • flush-hosts

    冲洗所有的主机缓存信息。

  • flush-logs [log_type ...]

    冲洗所有的日志

    这个mysqladmin刷新日志命令允许可选的日志类型是给定的,指定日志刷新。继flush-logs命令,你可以提供一个空间分隔的一个或多个以下日志类型列表:二元的engine错误general继电器slow。这些对应的日志类型,可以指定为FLUSH LOGSSQL语句

  • flush-privileges

    重新加载授权表(同reload

  • flush-status

    清晰的状态变量

  • flush-tables

    冲洗所有的表

  • flush-threads

    刷新线程缓存

  • kill id,id,...

    杀死服务器线程。如果多个线程ID值,必须在列表中没有空格。

    杀死线程属于其他用户的连接,用户必须有CONNECTION_ADMINSUPER特权

  • password new_password

    设置一个新密码。这改变了密码new_password你使用的帐户mysqladmin为连接到服务器。因此,下次调用mysqladmin(或任何其他的客户端程序)使用相同的帐户,您将需要指定新密码。

    警告

    设置一个密码使用mysqladmin应考虑不安全的。在某些系统上,你的密码是系统状态的程序如可见PS这可能是由其他用户调用显示命令行。MySQL客户端通常覆盖有零点的命令行参数初始化序列中的密码。然而,仍然有一个短暂的间隔期间,价值是可见的。另外,在一些系统的覆盖策略是无效的,密码仍然是可见的PS。(了UNIX系统和别人也许是这个问题。)

    如果new_password值包含空格或其他特殊字符命令解释器,你需要将它放在引号。在Windows中,一定要使用双引号而不是单引号;单引号不是密码剥离,而是被解释为密码的一部分。例如:

    内核&#62;mysqladmin password "my new password"

    在MySQL 8中,新的密码可以省略以下password命令行。在这房子,mysqladmin提示输入密码值,这可以使你避免在命令行中指定的密码。省略的密码值应该做的只有password在最后的命令mysqladmin命令行。否则,下一个参数作为密码。

    注意安全

    如果不启动服务器以使用该命令的使用--skip-grant-tables选项没有密码的更改将应用。这是真实的即使你之前密码命令flush-privileges在同一命令行重新启用授权表因为冲洗操作发生在你连接。然而,你可以使用mysqladmin嵌入式的权利要重新启用授权表,然后使用一个单独的mysqladmin密码命令更改密码

  • ping

    检查服务器是否可用。返回状态mysqladmin0如果服务器正在运行,1如果它不是。这是0连在一个错误等情况Access denied,因为这意味着服务器正在运行,但拒绝连接,这是不同的从服务器没有运行。

  • processlist

    显示一个列表的服务器线程。这是一样的输出SHOW PROCESSLIST声明。如果--verbose选项,输出是一样的SHOW FULL PROCESSLIST。。。。。。。(这第13.7.6.29,“显示列表的语法”。)

  • reload

    重新加载授权表

  • refresh

    冲洗所有的表和关闭和打开日志文件。

  • shutdown

    停止服务器

  • start-slave

    在从服务器开始复制

  • status

    短消息服务器状态显示。

  • stop-slave

    停在一个从服务器复制。

  • variables

    显示服务器的系统变量和它们的值。

  • version

    从服务器显示版本信息。

所有的命令都可以缩短到任何独特的前缀。例如:

shell> mysqladmin proc stat
+----+-------+-----------+----+---------+------+-------+------------------+
| Id | User  | Host      | db | Command | Time | State | Info             |
+----+-------+-----------+----+---------+------+-------+------------------+
| 51 | monty | localhost |    | Query   | 0    |       | show processlist |
+----+-------+-----------+----+---------+------+-------+------------------+
Uptime: 1473624  Threads: 1  Questions: 39487
Slow queries: 0  Opens: 541  Flush tables: 1
Open tables: 19  Queries per second avg: 0.0268

这个并发数命令结果显示以下值:

  • Uptime

    秒的MySQL服务器已经运行数。

  • Threads

    活动线程的数量(客户)。

  • Questions

    问题的数量(查询)从客户自服务器启动。

  • Slow queries

    这已经超过了查询数long_query_time秒。看到第5.4.5、“慢查询日志”

  • Opens

    表服务器打开数

  • Flush tables

    flush-*刷新,和reload服务器已执行的命令

  • Open tables

    表,目前开放的数量

如果你执行关闭使用UNIX套接字文件连接到本地服务器时,mysqladmin等到服务器进程ID文件已被删除,以确保服务器已停止正常。

mysqladmin支持以下选项,可以在命令行中指定或[mysqladmin][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.9 mysqladmin选项

格式描述介绍远离的
——绑定地址使用指定的网络接口连接到MySQL服务器
我compress压缩所有客户端和服务器之间发送的信息
——connect_timeout连接超时之前的秒数
-计数要重复命令的执行次数
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——使明文插件使明文认证插件
- Force即使一个SQL错误时继续
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
——主机在给定的主机连接到MySQL服务器
——登录路径读取登录路径选项。mylogin.cnf
我没有哔哔声不响铃时发生错误
没有默认值不看选项文件
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
——相对显示当前和以前的时候用睡眠选项值之间的差异
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——共享内存库的名字使用共享内存连接的共享内存名
警告-显示警告语句执行后
_ -关闭超时等待服务器关闭的最大秒数
——寂静静音模式
——睡眠执行命令的反复,睡眠延迟秒之间
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
TLS版本……加密连接许可协议
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出
——垂直打印查询输出行垂直(每列值一行)
--等待如果无法建立连接,等待并重试而中止

你也可以通过设置以下变量--var_name=value

  • connect_timeout

    在连接超时的最大秒数。默认值是43200(12小时)。

  • shutdown_timeout

    等待服务器关闭的最大秒数。默认值为3600(一小时)。

4.5.3mysqlcheck一个表的维护程序

这个mysqlcheck客户端执行表的维护:检查,维修,优化,或分析表。

每个表被锁定,因此无法使用其他会议而被加工,虽然检查作业,桌上一把READ(这只锁定第13.3.6,“锁表和解锁表语法”为更多的信息,READ锁)。表的维护操作可以是费时的,特别是对于大型的表。如果你使用--databases--all-databases选择在一个或多个数据库中所有表,一个调用mysqlcheck可能需要很长的时间。(这也是真实的mysql_upgrade因为程序调用mysqlcheck检查所有的表和维修,如果必要的。)

mysqlcheck必须使用时mysqld服务器正在运行,这意味着你不需要停止服务器执行表的维护。

mysqlcheck使用SQL语句CHECK TABLEREPAIR TABLEANALYZE TABLE,和OPTIMIZE TABLE在一个方便的方式为用户。它决定了使用想要执行的操作,报表,并将报表服务器将执行。为详细了解它的存储引擎每个语句,这些语句的描述中看到第13.7.3,“表维护报表”

所有的存储引擎不一定支持所有四个维护操作。在这种情况下,显示一个错误消息。例如,如果test.t是一个内存表,尝试检查它产生这样的结果:

shell> mysqlcheck test t
test.t
note     : The storage engine for the table doesn't support check

如果mysqlcheck无法修复一个表,看第2.10.3,“重建或修复表或索引”手动表修复策略。这将为例,为是的情况下,InnoDB表,可检查CHECK TABLE,但不修复REPAIR TABLE

注意安全

这是最好的执行表修复手术前使一个表的备份;在某些情况下的操作可能会导致数据丢失。可能的原因包括但不限于文件系统错误。

一般有三种方式来调用mysqlcheck

shell> mysqlcheck [options] db_name [tbl_name ...]
shell> mysqlcheck [options] --databases db_name ...
shell> 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][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

Ttable 4.10 Mysqlcheck选项

格式描述介绍远离的
所有的数据库检查所有数据库中的所有表
所有-在- 1 -每个数据库的所有表的名字从数据库中执行一个语句
-分析分析表
——汽车修理如果一个检查表已损坏,自动修复它
——绑定地址使用指定的网络接口连接到MySQL服务器
- Character - Sets - dir目录中的字符集设置
检查检查错误的表
检查的变化检查只有自上次检查变化表
检查升级使用检查表的升级选项
我compress压缩所有客户端和服务器之间发送的信息
数据库…解释所有参数为数据库名称
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——使明文插件使明文认证插件
扩展检查和修复表
你的快餐只检查没有正确关闭表
- Force即使一个SQL错误时继续
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
——主机在给定的主机连接到MySQL服务器
——登录路径读取登录路径选项。mylogin.cnf
中检查做个检查,比一个扩展运行更快
没有默认值不看选项文件
——优化优化表
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
——快检查的最快方法
修复进行修复,可以修复任何除了独特的钥匙,是不是唯一的
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——共享内存库的名字使用共享内存连接的共享内存名
——寂静静音模式
-跳过数据库忽略操作数据库
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
我的表重写--数据库或B选项
TLS版本……加密连接许可协议
-使用- FRM维修作业对MyISAM表
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出
——写binlog日志分析、优化、维修报表的二进制日志。——漏写binlog加no_write_to_binlog这些语句。

4.5.4mysqldump一个数据库备份方案

这个mysqldump顾客效用行使逻辑备份,产生一组SQL语句可以执行复制原始数据库对象定义和数据表。它将一个或多个备份或转移到另一个SQL Server,MySQL数据库。这个mysqldump命令还可以生成输出CSV,其他分隔符的文本,或XML格式。

mysqldump至少需要SELECT为把表的特权,SHOW VIEW对倾销的看法,TRIGGER为把触发器,和LOCK TABLES如果--single-transaction选项不使用。某些选项可能需要其他权限选项的描述中指出。

重载转储文件,您必须执行,它包含报表的权限,如适当的CREATE通过这些语句创建的对象权限。

mysqldump输出可以包括ALTER DATABASE语句更改数据库的排序规则。这些可以用来倾倒时存储的程序保存的字符编码。重新加载包含这些陈述的转储文件,改变对于受影响的数据库权限是必需的。

笔记

一堆使用PowerShell对输出重定向Windows创建,UTF-16编码的文件:

shell> mysqldump [options] > dump.sql

然而,UTF-16是不允许连接字符集(见10.4节,“连接字符集和Collations”),所以转储文件不能正确加载。若要解决此问题,使用--result-file选项,创建ASCII格式输出:

内核&#62;mysqldump [options] --result-file=dump.sql

性能和可伸缩性的因素

mysqldump优点包括查看甚至编辑输出之前恢复的方便性和灵活性。你可以发展和DBA工作克隆数据库,或产生用于测试现有数据库中的细微变化。它不是作为备份大量的数据快速的、可扩展的解决方案。大数据量,即使备份步骤需要一个合理的时间,数据恢复会很慢因为重放SQL语句涉及磁盘I/O插入,创建索引,等等。

对于大规模的备份和恢复,一身体的备份是比较合适的,复制其原来的格式,可以快速恢复数据文件:

  • 如果你的表是InnoDB表,或者如果你有一个混合的InnoDBMyISAM表,请考虑使用mysqlbackup对MySQL企业备份产品的命令。(可作为企业认购部分)提供了最好的性能InnoDB以最小的中断备份;它还可以备份表MyISAM和其他存储引擎;它提供了一个方便的选择以适应不同的备份方案。看到第29,MySQL企业备份概述”

mysqldump可以检索和转储表内容按行,或它可以检索记忆表和缓冲它的整个内容之前倾倒。缓冲存储器可以如果你倾销大表是一个问题。倒排表,使用--quick期权(或--opt,使--quick)。the--opt(和因此选项--quick)是默认启用的,所以启用内存缓冲,使用--skip-quick

如果你使用的是最新版本mysqldump生成转储被重新加载到一个很老的MySQL服务器,使用--skip-opt而不是选择--opt--extended-insert选项

有关更多信息mysqldump,看到7.4节,“使用mysqldump备份”

调用语法

一般有三种方式来使用mysqldump为了把一组一个或多个表,一组一个或多个完整的数据库,或一个MySQL服务器,如下所示:

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

把整个数据库,不叫任何表如下db_name,或使用--databases--all-databases选项

查看你的版本的选项mysqldump支持,发出命令mysqldump -帮助

选项语法字母总结

mysqldump支持以下选项,可以在命令行中指定或[mysqldump][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.11 mysqldump选项

格式描述介绍远离的
-添加删除数据库在每次创建数据库表添加删除数据库表
-添加删除表在每次添加DROP TABLE语句创建表的语句
-添加删除触发器在CREATE TRIGGER语句添加删除触发器的语句
——加锁围绕每个表转储表加锁和解锁表报表
所有的数据库把所有表中的所有数据库
关键词allow……允许列名称,关键词创作
——使用奴隶的陈述包括停止奴隶改变主表和最后输出之前开始的奴隶
——绑定地址使用指定的网络接口连接到MySQL服务器
- Character - Sets - dir目录中的字符集设置
——列统计信息写分析表报表生成统计直方图8.0.2
- Comments将文件添加注释
粉盒产生更紧凑的输出
——兼容产生的输出,与其他数据库系统或旧的MySQL服务器更兼容
——完成插入使用完整的插入语句,包括列名
我compress压缩所有客户端和服务器之间发送的信息
——创建选项包括所有的MySQL特定的选项在创建表的语句表
数据库…解释所有名参数数据库名称
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——删除主日志在一个主复制服务器,进行转储操作后删除二进制日志
——禁用按键每个表的INSERT语句与语句,环绕禁用和启用的钥匙
——把日期包括日期为“垃圾”的垃圾评论,评论了如果完成
——倾倒的奴隶包括更改主表,列出了奴隶主的二进制对数坐标
——使明文插件使明文认证插件
事件垃圾倾倒事件数据库
扩展插件使用多行插入语法
——封闭的领域使用此选项,选项中的有作为的LOAD DATA INFILE相应条款相同的意义
——领域了使用此选项,选项中的有作为的LOAD DATA INFILE相应条款相同的意义
——领域选择封闭使用此选项,选项中的有作为的LOAD DATA INFILE相应条款相同的意义
——字段终止符使用此选项,选项中的有作为的LOAD DATA INFILE相应条款相同的意义
——刷新日志同花顺MySQL服务器日志文件在开始转储
-冲洗privileges发出一个FLUSH PRIVILEGES语句后倾的MySQL数据库
- Force即使表转储期间发生SQL错误继续
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
-十六进制BLOB转储二进制列使用十六进制记数法
——主机连接到的主机(IP地址或主机名)
-先生-误差忽略指定的错误
——忽略表不要把给定的表
包括主机端口包括master_host / master_port变化掌握语句生成选项--把奴隶
-插入-不知道写插入忽略而不是插入语句
——线终止使用此选项,选项中的有作为的LOAD DATA INFILE相应条款相同的意义
锁定所有表锁定所有表的所有数据库
锁定表锁定所有表前倾倒
错误日志…命名文件附加警告和错误
——登录路径读取登录路径选项。mylogin.cnf
工商管理硕士-日期写入二进制日志文件的名称和位置输出
——max_allowed_packet最大包长度来发送或接收从服务器
——net_buffer_length缓冲区大小为TCP/IP协议和Socket通信
网络超时增加网络超时允许较大的表转储8.0.1
没有自动提交Enclose the INSERT statements for each dumped table within SET autocommit = 0 and COMMIT statements
没有创建数据库不写数据库创建报表
没有创建信息不写了,重新创建每一个创建表语句
-不-日期不要把表的内容
没有默认值不看选项文件
——没有固定的名字同样,跳过设置字符集
-没有- tablespaces不写任何创建日志文件组或创建表报表输出
- 8速记--添加删除表——加锁--创建选项禁用按键扩展插入锁定表--快--设置字符集。
——以小学把每个表中的行的主键排序,或通过它的第一个唯一索引
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
——快检索行表从服务器一次一行
——引用名称在那些引用标识符字符
——更换写替换语句而不是插入语句
——结果文件直接输出到一个文件
——程序自存储程序(过程和函数)从倾倒的数据库
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——设置字符集添加设置名称default_character_set输出
——集gtid清除是否添加设置”@global.gtid_purged输出
——共享内存库的名字使用共享内存连接的共享内存名
单交易问题一开始倾销之前数据从服务器的SQL语句
-跳过添加表不要在每次创建表的语句添加DROP TABLE语句
——不加锁不加锁
-跳过注释不要把文件添加注释
-跳过紧凑不产生更紧凑的输出
-跳过禁用按键不禁用按键
-跳过扩展插入关闭扩展插入
你跳的选择关闭选项设置--选择
-跳过快不检索行表从服务器一次一行
-跳过引用名称不要引用标识符
-跳过设置字符集不写集名称的声明
-跳过触发器不要把触发器
-跳过TZ UTC关掉TZ UTC
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
-标签产生制表符分隔的数据文件
我的表重写--数据库或B选项
TLS版本……加密连接许可协议
——触发器每个甩表转储触发器
- TZ-UTCAdd SET TIME_ZONE='+00:00' to dump file
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出
——转储只行给予条件选择
- XML生成XML输出

连接选项

这个mysqldump命令登录到MySQL服务器提取信息。以下选项指定如何连接到MySQL服务器,可以在同一台计算机或远程系统。

你也可以通过设置以下变量--var_name=value语法:

  • max_allowed_packet

    最大尺寸的缓冲器的客户端/服务器通信。默认值为最高,最大为1GB。

  • net_buffer_length

    初始大小的缓冲区的客户端/服务器通信。创建多行时INSERT报表(与--extended-insert--opt期权),mysqldump创建行了net_buffer_length字节。如果你增加这个变量,确保MySQL服务器net_buffer_length系统变量的值至少大

选择文件选项

这些选项是用来控制选项文件的读取。

DDL选项

使用场景mysqldump包括建立一个新的MySQL实例(包括数据库表),换到一个现有的实例数据与现有的数据库和表。下面的选项可以让你指定哪些东西推倒和建立恢复转储时,通过编码各种DDL语句在转储文件。

弹出调试操作

以下选项打印调试信息,编码在转储文件的调试信息,或者让转储操作着手无论潜在的问题。

  • --allow-keywords

    允许列名称,关键词创作。本作品由前缀每列名称与表名。

  • --comments-

    写中的附加信息转储文件如程序版本,服务器版本,和主机。默认是启用。为了抑制这种附加的信息,使用--skip-comments

  • --debug[=debug_options]- # [debug_options]

    写一个调试日志。一个典型的debug_options字符串D:T:O,file_name。默认值是D:T:啊,/甲氧苄啶/ mysqldump.trace

  • --debug-check

    打印一些调试信息,在程序退出时。

  • --debug-info

    打印调试信息和内存和CPU使用率统计程序退出时。

  • --dump-date

    如果--comments选择了,mysqldump在下列形式转储结束产生一个评论:

    -- Dump completed on DATE
    

    然而,转储文件的日期的原因在不同的时间被似乎是不同的,即使是相同的数据。--dump-date--skip-dump-date控制日期是否被添加到评论。默认值是--dump-date(包括茶茶日期Comment)。--skip-dump-date抑制打印日期

  • --forceF

    忽略所有的错误;即使表转储期间发生SQL错误继续。

    此选项的用途之一是引起mysqldump继续执行,即使遇到认为无效因为定义是指表已被删除。没有--forcemysqldump用一个错误消息退出。与--forcemysqldump打印错误信息,但它也将包含视图定义的转储输出SQL注释和继续执行。

    如果--ignore-error也就是选择忽视具体的错误,--force优先

  • --log-error=file_name

    通过将其添加到指定的文件记录警告和错误。默认是不记录。

  • --skip-comments

    看到的描述--comments选项

  • --verboseV

    详细模式。打印更多的信息关于程序干什么。

帮助选项

下列有关选项的显示信息mysqldump命令本身

  • --help-?

    显示帮助信息并退出

  • --versionV

    显示版本信息并退出

国际化的选择

下列选项的变化如何mysqldump命令代表国家语言设置的字符数据。

复制选项

这个mysqldump命令是经常被用来创建一个空的实例或实例包括数据,在复制配置一个从服务器。下列选项适用于倾销和恢复数据复制主从服务器。

  • --apply-slave-statements

    一场生产的奴隶--dump-slave选项,添加一个STOP SLAVE之前的说法CHANGE MASTER TO声明和START SLAVE在输出语句

  • --delete-master-logs

    在一个主复制服务器,发送一个删除二进制日志PURGE BINARY LOGS报表服务器之后进行转储操作。这个选项可以自动启用--master-data

  • --dump-slave[=value]

    这个选项是相似的--master-data除了它是用来将复制从服务器产生一个转储文件,可设置另一台服务器作为一个奴隶,主人为把服务器相同。它使转储输出包括CHANGE MASTER TO声明表示二进制对数坐标(文件名和位置)的倾销奴隶的主人。这个CHANGE MASTER TO语句读取值relay_master_log_fileExec_Master_Log_PosSHOW SLAVE STATUS输出和使用他们的master_log_fileMASTER_LOG_POS分别。这些都是主服务器坐标从奴隶应该开始复制。

    笔记

    从中继日志已执行的交易序列不一致,会造成错误的位置可。看到第17.4.1.34,“复制和事务不一致”更多信息

    --dump-slave使坐标从主要使用而不是那些被抛弃的服务器,是通过--master-data选择。在加法中,这一选择的原因工商管理硕士-日期选择被覆盖,如果使用,有效地忽略。

    警告

    此选项不能用于如果服务器在转储将应用gtid_mode=ONMASTER_AUTOPOSITION=1

    期权价值的处理相同的方式作为--master-data(设置没有价值或1原因改变主声明要写入转储,设置2使语句写但包裹在SQL注释)和具有相同的效果--master-data从启用或禁用其他的选择及如何锁定处理。

    此选项mysqldump停止从SQL线程在转储和重新启动后再次。

    结合--dump-slave,的--apply-slave-statements--include-master-host-port也可以使用选项

  • --include-master-host-port

    对于CHANGE MASTER TO在从垃圾产生的声明--dump-slave选项,添加master_hostMASTER_PORT为主机名和TCP / IP的奴隶主端口选项。

  • --master-data[=value]

    使用此选项可将主复制服务器产生一个转储文件,可以用来建立一个服务器作为一个主人的奴隶。它使转储输出包括CHANGE MASTER TO声明表示二进制对数坐标(文件名和位置)的倾销服务器。这些都是主服务器坐标从奴隶应该开始复制你加载转储文件到从后。

    如果选项值是2,theCHANGE MASTER TO写一个SQL语句的评论,从而丰富而已;它没有效果的时候,转储文件加载。如果选项值为1,声明不写评论并生效的转储文件加载。如果没有选项指定值,默认值是1。

    此选项要求RELOAD特权和二进制日志必须启用。

    这个--master-data选择自动关闭--lock-tables。它也将--lock-all-tables,除非--single-transaction还规定,在这种情况下,一个全局读锁,获得只有很短的时间在转储开始(见说明--single-transaction)。在所有的情况下,对日志的任何行动发生在转储的时刻。

    它也可以设置一个奴隶倾倒主现有的奴隶,使用--dump-slave选项,这将覆盖工商管理硕士-日期使其成为如果同时使用这两个选项被忽略。

  • --set-gtid-purged=value

    此选项可以在全局事务ID控制(gtid)写入转储文件的信息,以指示是否添加SET @@global.gtid_purged报表输出。这个选项也可能造成一个语句被写入到输出禁用二进制日志转储文件被加载时。

    下表显示了允许期权价值。默认值是AUTO

    价值意义
    OFF不加SET报表输出
    ON添加一个SET报表输出。如果GTIDs不在服务器上启用时发生错误。
    AUTO添加一个SET语句的输出如果gtids在服务器上启用。

    从一个服务器,使用基于gtid复制部分转储要求--set-gtid-purged={ON|OFF}选项可以指定。使用打开(放)如果要部署一个新的复制从只使用一些从倾销服务器数据。使用OFF如果意图是通过复制它在拓扑修复表。使用关闭如果要复制的复制拓扑是不相交的,今后仍将如此之间的桌子。

    这个--set-gtid-purged选项对二进制日志下面的效果时,转储文件加载:

    • --set-gtid-purged=OFFSET @@SESSION.SQL_LOG_BIN=0;不添加到输出

    • --set-gtid-purged=ONSET @@SESSION.SQL_LOG_BIN=0;添加到输出

    • --set-gtid-purged=AUTOSET @@SESSION.SQL_LOG_BIN=0;如果你gtids在备份服务器上启用添加到输出(即,如果AUTO评价打开(放)

    笔记

    不推荐加载转储文件时,gtids在服务器上启用(gtid_mode=ON),如果你的转储文件包含系统表。mysqldump问题的系统表使用非事务性存储引擎MyISAM DML指令,这样的组合是不允许的,gtids启用。注意,加载转储文件从服务器gtids启用,到另一个服务器gtids启用,使不同的事务标识符的生成。

格式选项

下列选项指定如何代表整个转储文件或某些种类的转储文件中的数据。他们还控制是否某些可选信息写入转储文件。

  • --compact

    产生更紧凑的输出。此选项使--skip-add-drop-table--skip-add-locks--skip-comments--skip-disable-keys,和--skip-set-charset选项

  • --compatible=name

    产生的输出,与其他数据库系统或旧的MySQL服务器更兼容。唯一被允许的值,该选项ansi,具有设置服务器的SQL模式的相应选项相同的意义。看到第5.1.10,”服务器的SQL模式”

  • --complete-insertC

    使用完整的INSERT报表,包括列的名称

  • --create-options

    包括所有的MySQL特定的表中的选项CREATE TABLE声明.

  • --fields-terminated-by=...--fields-enclosed-by=...--fields-optionally-enclosed-by=...--fields-escaped-by=...

    使用这些选项的--tab选择有意义相同的对应领域条款LOAD DATA INFILE。看到第13.2.7、“LOAD DATA INFILE语法”

  • --hex-blob

    转储二进制列使用十六进制表示法(例如,'abc'成为0x616263)。受影响的数据类型BINARYVARBINARY,的BLOB类型,并BIT

  • --lines-terminated-by=...

    使用此选项的--tab选择具有相应的意义相同线条款LOAD DATA INFILE。看到第13.2.7、“LOAD DATA INFILE语法”

  • --quote-namesQ

    引用标识符(如数据库、表和列名)内`人物如果ANSI_QUOTESSQL模式启用,标识符引用的内人物默认是启用。它可以被禁用--skip-quote-names,但这个选项应该是任何选项,如后--compatible这可能使--quote-names

  • --result-file=file_nameRfile_name

    直接输出到指定的文件。结果文件被创建和其以前的内容覆盖,即使在生成转储发生错误。

    应使用此选项在Windows防止换行\n被转换为字符R n回车/换行符的字符序列。

  • --tab=dir_nameTdir_name

    产生制表符分隔的文本格式的数据文件。每个甩表,mysqldump创建一个tbl_name.sql文件包含CREATE TABLE语句创建表,和服务器写入tbl_nametxt文件包含的数据。期权价值的目录写文件。

    笔记

    这一选择应仅适用于mysqldump是在同一台机器上运行的mysqld服务器因为服务器创建*.txt目录中的文件所指定的目录必须是可写的,由服务器和MySQL帐户,你必须FILE特权。因为mysqldump创建*.sql在同一个目录,它必须由你的系统登录帐号可写。

    默认情况下,该.txt数据文件是使用制表符列值和行尾换行符之间的格式化。格式可以明确指定使用——领域—xxx--lines-terminated-by选项

    列的值转换为指定的字符集--default-character-set选项

  • --tz-utc

    此选项使TIMESTAMP列被抛弃和重新加载服务器之间在不同的时区。mysqldump设置时区为UTC并添加连接SET TIME_ZONE='+00:00'到转储文件。没有这个选项,TIMESTAMP柱倾倒和重装上阵的时区的本地源服务器和目标服务器,可如果服务器在不同的时区导致价值观的改变。- TZ-UTC还可以防止由于日光节约时间的变化。--tz-utc默认情况下启用。要禁用它,使用-跳过TZ UTC

  • --xmlX

    写转储输出为格式良好的XML。

    NULL“空”,和空值一个命名列:column_name,的无效的值、空字符串和字符串值'NULL'区别于另一个所产生的输出选项如下。

    价值:XML表示:
    NULL未知的价值

    <field name="column_name" xsi:nil="true" />

    ''空字符串

    <field name="column_name"></field>

    'NULL'字符串值

    <field name="column_name">NULL</field>

    从输出MySQL客户端运行时使用--xml选择也遵循前面的规则。(见第4.5.1.1,MySQL选项”。)

    XML输出mysqldump包括XML命名空间,如下所示:

    shell> 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"
    Collation="latin1_swedish_ci" Create_options="" Comment="" />
    </table_structure>
    <table_data name="City">
    <row>
    <field name="ID">1</field>
    <field name="Name">Kabul</field>
    <field name="CountryCode">AFG</field>
    <field name="District">Kabol</field>
    <field name="Population">1780000</field>
    </row>
    
    ...
    
    <row>
    <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>
    </row>
    </table_data>
    </database>
    </mysqldump>
    

过滤选项

以下选项控制哪种模式对象写入转储文件:按类别,如触发器或事件;的名字,例如,选择数据库和表倾倒;甚至过滤列使用一个表中的数据WHERE条款.

  • --all-databases-在

    把所有表中的所有数据库。这是相同的采用--databases选择和命名上的所有数据库的命令行。

    MySQL 5.0之前的--routines--events选项mysqldumpmysqlpump不需要存储程序和事件时,使用--all-databases选项包括:转储MySQL系统的数据库,因此也mysql.procmysql.event表中存储程序和事件的定义。在MySQL 8的mysql.eventmysql.proc不使用表。对于相应的对象定义存储在数据字典表,但这些表不甩了。包括存储程序和转储事件使用--all-databases,使用--routines--events选择明确

  • --databasesB

    several数据库转储。normally,mysqldump对第一名参数在命令行上作为数据库名、表名等名称。使用此选项,则对所有名参数为数据库名称。CREATE DATABASEUSE声明包含在输出之前,每一个新的数据库。

    这个选项可以用来倾倒performace_schema数据库,通常不倾倒,甚至与--all-databases选项。(also use the)--skip-lock-tables选项。)

  • --events

    包括倾销数据库输出事件的事件调度器。此选项要求EVENT这些数据库的权限

    通过使用输出--events包含CREATE EVENT创建报表to the events。

  • --ignore-error=error[,error]...

    忽略指定的错误。期权的价值是一个逗号分隔的错误数指定要忽略在错误列表mysqldump执行。if the--force也选择了忽略所有的错误,--force优先

  • --ignore-table=db_name.tbl_name

    不要把给定的表,必须使用指定的数据库和表的名称。忽略多个表,多次使用这个选项。这个选项也可以用来忽略的观点。

  • --no-dataD

    不写任何表行信息(即不要把表的内容)。如果你想甩掉只有这是有用的CREATE TABLE为表的语句(例如,创建一个空的表副本加载转储文件)。

  • --routinesR

    包括存储子程序(过程和函数)的倾销数据库输出。此选项要求全球SELECT特权

    通过使用输出--routines包含CREATE PROCEDURECREATE FUNCTION语句创建的例程

  • --tables

    重写--databasesB选项mysqldump把所有的名字下面的选项参数表名。

  • --triggers

    包括触发器每甩表的输出。默认是启用的;禁用它--skip-triggers

    能把一个表的触发器,你必须TRIGGER表的特权

    多个触发器允许mysqldump将触发激活顺序,当转储文件加载,触发器在相同的激活顺序创建。然而,如果一个mysqldump转储文件包含多个触发器的表有相同的触发事件和行动的时候,发生了一个错误的尝试加载转储文件到一个旧的服务器不支持多个触发器。(一个变通方法,看从MySQL 5.7影响下调的变化;你可以转换触发器是老服务器兼容。)

  • --where='where_condition'“W”where_condition&#39;

    自行由给定的选择WHERE条件如果它包含空格或其他特殊字符你的命令解释器在条件报价是强制性的。

    实例:

    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"
    

性能选项

下列选项最相关的性能尤其是在还原操作。大数据集的处理,恢复操作(INSERT转储文件中声明)是最耗时的部分。当它是恢复数据的快速紧迫,计划和提前测试这个阶段的性能。为恢复测量时间的时候,你可能更喜欢另一个备份和恢复解决方案,如MySQL企业备份InnoDB只有和混合使用的数据库。

性能也受影响transactional选项,主要用于转储操作

  • --column-statistics

    添加ANALYZE TABLE报表输出产生甩表直方图统计当转储文件加载。这个选项默认是禁用的,大表的直方图生成需要很长的时间。

  • --disable-keysk

    对于每个表,环绕INSERT报表/ *!4修改表tbl_name禁用键*/;/ *!4修改表tbl_name使键*/;声明.这使得加载转储文件更快,因为索引插入之后的所有行了。此选项仅对非唯一索引是有效的MyISAM

  • --extended-insert

    INSERT使用多行的语法,包括几个语句价值观列表这个结果在一个较小的转储文件加快文件时重新插入。

  • --insert-ignore

    INSERT IGNORE语句而不是INSERT声明.

  • --opt

    这个选项,默认情况下启用,是结合速记--add-drop-table--add-locks--create-options--disable-keys--extended-insert--lock-tables--quick--set-charset。它提供了一个快速转储操作产生一个转储文件可以加载到一个MySQL服务器快。

    因为--opt选项是默认启用的,你只指定了它的逆,--skip-opt关掉几个默认设置。见的讨论mysqldump选项组关于选择性地启用或禁用受选项子集信息- 8

  • --quickQ

    此选项是有用的倾销大表。它的力量mysqldump检索行表从服务器一行一次而不是检索整个行集和在内存中缓冲它之前写出来。

  • --skip-opt

    看到的描述--opt选项

转换选项

下列选项中权衡转储操作的性能,对导出数据的可靠性和一致性。

  • --add-locks

    围绕每个表转储LOCK TABLESUNLOCK TABLES声明.这将导致更快的插入当转储文件加载。看到第8.2.5.1,“优化INSERT语句”

  • --flush-logsF

    嵌入式MySQL服务器日志文件在开始转储。此选项要求RELOAD特权。如果你结合使用此选项--all-databases选择日志刷新对于每个数据库倾倒。唯一的例外是当使用--lock-all-tables--master-data,或--single-transaction:在这种情况下,日志刷新只有一次,对应的时刻,所有的表都被锁定FLUSH TABLES WITH READ LOCK。如果你想让你的转储和日志冲洗在同一时刻发生,你应该使用——刷新日志在一起--lock-all-tables--master-data,或--single-transaction

  • --flush-privileges

    添加一个FLUSH PRIVILEGES语句转储输出后倾MySQL数据库这个选项应该用于任何时间转储包含mysql数据库和其他数据库,取决于数据MySQL适当的恢复数据库

    笔记

    从旧版本的MySQL 5.7.2或更高的升级,不使用--flush-privileges。在这种情况下,升级说明,见第2.10.1.2,影响升级到MySQL 8”的变化

  • --lock-all-tablesX

    锁定所有表的所有数据库。这是通过获取对整个垃圾时间一个全局读锁实现。此选项将自动关闭--single-transaction--lock-tables

  • --lock-tablesL

    每个存储,锁定所有表被倾倒在倾销他们。表锁定READ LOCAL允许并发插入的情况下MyISAM表事务表等InnoDB--single-transaction是不是更好的选择锁定表因为它不需要在所有的锁表。

    因为--lock-tables锁表为每个数据库分别,此选项不能保证转储文件中的表之间的数据库在逻辑上是一致的。在不同的数据库中的表可到完全不同的状态。

    一些选项,如--opt,自动启用锁定表。如果你想重写,使用--skip-lock-tables在选项列表的结尾

  • --no-autocommit

    附上INSERT每把表内的陈述SET autocommit = 0COMMIT声明.

  • --order-by-primary

    把每个表中的行的主键排序,或者通过它的第一个独特的指标,如果这些指标存在。这是有用的当倾销MyISAM表被加载到InnoDB表,但使转储操作需要很长时间。

  • --shared-memory-base-name=name

    在Windows中,共享内存名,使用共享内存连接到本地服务器了。默认值是MYSQL。共享内存的名字是大小写敏感的。

    必须启动服务器的--shared-memory选项来启用共享内存连接。

  • --single-transaction

    这个选项设置事务隔离模式REPEATABLE READ并发送START TRANSACTIONSQL语句到服务器之前倾销数据。它是有用的只有事务表等InnoDB然后,因为把数据库的一致状态时START TRANSACTION没有阻止任何应用程序发布。

    使用此选项时,你应该记住,只有InnoDB表被倾倒在一个一致性状态。例如,任何MyISAMMEMORY倾倒而使用此选项还可以改变状态表。

    --single-transaction倾倒过程中,确保一个有效的转储文件(正确的表格内容和二进制日志坐标),没有其他的连接应使用以下语句:ALTER TABLECREATE TABLEDROP TABLERENAME TABLETRUNCATE TABLE。一致读的不是那些陈述孤立的,所以使用它们在桌子上被使SELECT这是由mysqldump检索表的内容得到不正确的内容或失败。

    这个--single-transaction选择和--lock-tables选项是互斥的,LOCK TABLES导致任何悬而未决的交易,将隐式。

    把大表,结合--single-transaction期权与--quick选项

选项组

  • 这个--opt选项打开几个设置,共同执行一个快速转储操作。所有这些设置都是默认的,因为- 8在默认情况下是。因此你很少指定--opt。相反,你可以将这些设置了一组由指定你跳的选择,可选择重新启用某些设置由指定相关的选项后,在命令行。

  • 这个--compact选择关闭一些设置,控制是否可选的陈述和评论出现在输出。再次,你可以按照这个选项与其他选项,重新启用某些设置,或者把所有的设置用-跳过紧凑形式

当你有选择性地启用或禁用一组选项的作用,顺序是很重要的因为选项依次处理。例如,--disable-keys--lock-tables--skip-opt不会有预期的效果;它是一样的--skip-opt本身

实例

使整个数据库备份:

shell> mysqldump db_name > backup-file.sql

加载转储文件到服务器:

shell> mysql db_name < backup-file.sql

另一种方式来加载转储文件:

shell> mysql -e "source /path-to-backup/backup-file.sql" db_name

mysqldump同样是非常有用的用于填充数据库的数据从一个MySQL服务器复制到另一个:

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name

你可以把多个数据库一个命令:

shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

把所有的数据库,使用--all-databases选项:

内核&#62;mysqldump --all-databases > all_databases.sql

InnoDB桌子,mysqldump提供了一种方法,使一个在线备份:

shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql

此备份获取所有表全局读锁(使用FLUSH TABLES WITH READ LOCK)在转储开始。只要这个锁已获得的二进制日志坐标读锁被释放。如果长时间的更新语句运行时FLUSH声明发出后,MySQL服务器可能会停滞,直到那些语句完成。之后,垃圾变成无锁和不打扰的读和写在桌子上。如果更新报表,MySQL服务器接收短(执行时间),初始锁定期应不明显,甚至有许多更新。

在时间点恢复(也被称为前滚,当你需要恢复一个旧的备份和回放,备份以来发生的变化,它旋转)的二进制日志往往是有益的(见5.4.4节,“二进制日志”)或至少知道二进制日志的转储对应坐标:

shell> mysqldump --all-databases --master-data=2 > all_databases.sql

shell> mysqldump --all-databases --flush-logs --master-data=2
              > all_databases.sql

这个--master-data--single-transaction选项可以同时使用,它提供了一个方便的方式来进行在线备份适合使用之前的时间点恢复如果表存储使用InnoDB存储引擎

有关备份的详细信息,参见7.2节,“数据库备份方法,和7.3节,“例如备份和恢复策略”

限制

mysqldump不倒performance_schema系统模式默认。把所有这些,叫他们明确的命令行。你也可以给他们的--databases选项为performance_schema,同时使用--skip-lock-tables选项

mysqldump不倒INFORMATION_SCHEMA图式

mysqldump包括报表的创建general_log_ _慢查询日志为把表mysql数据库日志表内容不倾倒。

如果你遇到了问题,备份的看法由于权限不足,看到第5,“限制的观点”一个解决方法

4.5.5mysqlimport-数据导入程序

这个mysqlimport客户提供的命令行界面LOAD DATA INFILESQL语句。大多数选项mysqlimport直接对应的条款LOAD DATA INFILE语法。看到第13.2.7、“LOAD DATA INFILE语法”

援引mysqlimport这样地:

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

每个文本文件的命令行上指定,mysqlimport带文件名的任何扩展和使用结果来确定表的名字导入文件的内容。例如,文件名为patient.txtpatient.text,和patient所有将被导入到一个表名病人

mysqlimport支持以下选项,可以在命令行中指定或[mysqlimport][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.12 mysqlimport选项

格式描述介绍远离的
——绑定地址使用指定的网络接口连接到MySQL服务器
专栏这是一个以逗号分隔的列名列表作为其价值
我compress压缩所有客户端和服务器之间发送的信息
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
删除空的餐桌前导入文本文件
——使明文插件使明文认证插件
——封闭的领域这个选项对于LOAD DATA INFILE相应条款相同的意义
——领域了这个选项对于LOAD DATA INFILE相应条款相同的意义
——领域选择封闭这个选项对于LOAD DATA INFILE相应条款相同的意义
——字段终止符这个选项对于LOAD DATA INFILE相应条款相同的意义
- Force即使一个SQL错误时继续
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
——主机在给定的主机连接到MySQL服务器
-不知道看到的替换选项的描述
——忽略线忽略第一N的数据文件的行
——线终止这个选项对于LOAD DATA INFILE相应条款相同的意义
-本地从客户端本地读取输入文件
锁定表锁在处理任何文本文件写的所有表
——登录路径读取登录路径选项。mylogin.cnf
低优先级使用低的优先级的先验时间
没有默认值不看选项文件
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
——更换——取代和忽略选项控制处理输入行复制现有行独特的核心价值观
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——共享内存库的名字使用共享内存连接的共享内存名
——寂静输出只有当错误发生
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
TLS版本……加密连接许可协议
使用线程并行文件加载线程数
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出

下面是一个示例,演示如何使用会话mysqlimport

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test
shell> ed
a
100     Max Sydow
101     Count Dracula
.
w imptest.txt
32
q
shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040
shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

4.5.6mysqlpump一个数据库备份方案

这个mysqlpump顾客效用行使逻辑备份,产生一组SQL语句可以执行复制原始数据库对象定义和数据表。它将一个或多个备份或转移到另一个SQL Server,MySQL数据库。

mysqlpump功能包括:

  • 数据库的并行处理,和对象的数据库,加快垃圾处理

  • 更好地控制数据库和数据库对象(表、存储程序、用户帐户)转储

  • 倾销的用户帐户的帐户管理报表(CREATE USERGRANT)而不是插入MySQL系统数据库

  • 创建压缩的输出能力

  • 进度指示器(值估计)

  • 用于转储文件重装,更快的辅助索引创建InnoDB通过插入行后添加索引表

笔记

mysqlpump使用MySQL的特点介绍了MySQL 5.7,因此假定使用MySQL 5.7或更高。

mysqlpump至少需要SELECT为把表的特权,SHOW VIEW对倾销的看法,TRIGGER为把触发器,和LOCK TABLES如果--single-transaction选项不使用。这个SELECT特权的MySQL系统要求用户定义数据库转储。某些选项可能需要其他权限选项的描述中指出。

重载转储文件,您必须执行,它包含报表的权限,如适当的CREATE通过这些语句创建的对象权限。

笔记

一堆使用PowerShell对输出重定向Windows创建,UTF-16编码的文件:

shell> mysqlpump [options] > dump.sql

然而,UTF-16是不允许连接字符集(见10.4节,“连接字符集和Collations”),所以转储文件不能正确加载。若要解决此问题,使用--result-file选项,创建ASCII格式输出:

内核&#62;mysqlpump [options] --result-file=dump.sql

Mysqlpup援引合成器

默认情况下,mysqlpump将所有数据库(某些例外注意mysqlpump限制)。指定此行为明确,使用--all-databases选项:

内核&#62;mysqlpump --all-databases

把一个单一的数据库,或某些表的数据库内,名在命令行的数据库,后跟表名:

shell> mysqlpump db_name
shell> mysqlpump db_name tbl_name1 tbl_name2 ...

对所有名参数为数据库名称,使用--databases选项:

内核&#62;mysqlpump --databases db_name1 db_name2 ...

默认情况下,mysqlpump不把用户账户的定义,即使你倾倒mysql包含授权表系统数据库。倾倒许可表内容在形式逻辑的定义CREATE USERGRANT报表,使用--users选择压制所有数据库倾销:

内核&#62;mysqlpump --exclude-databases=% --users

在前面的命令,%是一个通配符匹配所有数据库名称为--exclude-databases选项

mysqlpump支持包括或不包括数据库,几个选项表,存储的程序,和用户定义。看到mysqlpump对象选择

重载转储文件,执行它所包含的陈述。例如,使用MySQL客户:

shell> mysqlpump [options] > dump.sql
shell> mysql < dump.sql

下面的讨论提供了额外的mysqlpump使用的例子

查看选项mysqlpump支持,发出命令mysqlpump --帮助

mysqlpump期权的概述

mysqlpump支持以下选项,可以在命令行中指定或[mysqlpump][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4 mysqlpump选项

格式描述介绍远离的
-添加删除数据库在每次创建数据库表添加删除数据库表
-添加删除表在每次添加DROP TABLE语句创建表的语句
-添加删除用户在每次创建用户表添加删除用户声明
——加锁围绕每个表转储表加锁和解锁表报表
所有的数据库把所有的数据库
——绑定地址使用指定的网络接口连接到MySQL服务器
- Character - Sets - dir目录中的字符集设置
——列统计信息写分析表报表生成统计直方图8.0.2
——完成插入使用完整的插入语句,包括列名
我compress压缩所有客户端和服务器之间发送的信息
——压缩输出输出压缩算法
数据库…解释所有名参数数据库名称
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
-默认并行并行处理的默认线程数
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——推迟表索引加载,延迟加载后创建索引到表中的行
事件垃圾倾倒事件数据库
——排除数据库排除从转储数据库
事件-拒绝拒绝从转储events to
——排除程序排除转储程序
——排除表表排除转储
——排除触发触发器来排除转储
——排除的用户用户排除转储
扩展插件使用多行插入语法
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
-十六进制BLOB转储二进制列使用十六进制记数法
——主机连接到的主机(IP地址或主机名)
包括数据库数据库包括转储
事件-包括事件包括在转储
--包括例程包括在转储程序
——包括表表格包括转储
--包括触发器触发器包括转储
包括用户用户包括转储
-插入-不知道写插入忽略而不是插入语句
——日志文件错误命名文件附加警告和错误
——登录路径读取登录路径选项。mylogin.cnf
——max allowed packet最大包长度来发送或接收从服务器
网络缓冲区长度缓冲区大小为TCP/IP协议和Socket通信
没有创建数据库不写数据库创建报表
没有创建信息不写了,重新创建每一个创建表语句
没有默认值不看选项文件
并行模式指定架构处理的并行性
——密码连接到服务器时使用的密码
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
——更换写替换语句而不是插入语句
——结果文件直接输出到一个文件
——程序自存储程序(过程和函数)从倾倒的数据库
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——设置字符集添加设置名称default_character_set输出
——集gtid清除是否添加设置”@global.gtid_purged输出8.0.1
单交易转储表内单笔交易
-跳过定义省略的定义和SQL安全条款从视图和存储程序创建报表
——箕斗行不要把表行
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
TLS版本……加密连接许可协议
——触发器每个甩表转储触发器
- TZ-UTCAdd SET TIME_ZONE='+00:00' to dump file
用户MySQL用户名连接到服务器时使用
用户把用户帐户
——版本显示版本信息并退出
看进步显示进度指示器

mysqlpump选项的描述

mysqlpump对象选择

mysqlpump有一套包含和排除的选项,使几个对象类型过滤和提供灵活的控制对象转储:

任何包含或排除的选项可能会多次。效果是添加剂。这些选项的顺序并不重要。

每个包含和排除选项的值是一个逗号分隔的合适的对象类型名称列表。例如:

--exclude-databases=test,world
--include-tables=customer,invoice

通配符在对象名称允许:

  • %匹配任何序列的零或多个字符。

  • _匹配任何单个字符

例如,--include-tables=t%,__tmp匹配所有的表的名字开始T和所有五个字符表的名称,结束tmp

对于用户来说,没有一个指定的主机部分解释隐含的主机%。例如,U1u1@%是等价的。这是等值的,适用于一般(参见MySQL第6.2.4,“指定的帐户名”

纳入和排除选项作用如下:

  • 默认情况下,不包含或排除的选项,mysqlpump将所有数据库(某些例外注意mysqlpump限制

  • 如果包含的选项是在排除没有选择,只有对象包括被命名为。

  • 如果排除选项中没有包含的选项,所有的对象被命名为排除除外。

  • 如果纳入和排除选项,所有的物体命名为排除,不包括不被命名为。其它所有的物体都甩了。

如果多个数据库被抛弃,它是可能的名字表,触发器,和限定的对象名称和数据库名称在一个特定的数据库例程。下面的命令将数据库db1db2,但不包括表db1.t1db2.t2

shell> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2

下列选项提供替代的方法来指定转储数据库:

mysqlpump并行处理

mysqlpump可以使用并行实现并行处理。你可以选择并发数据库之间(将多个数据库同时)在数据库(将多个对象从一个给定的数据库同步)。

默认情况下,mysqlpump建立两个线程队列。你也可以创建额外的队列和控制分配给每一个线程的数量,包括默认的队列:

  • --default-parallelism=N专门用于每一个尾巴的故障数。in the absence of this option,N2

    默认的队列总是使用线程的默认值。附加队列的线程使用默认号码除非你指定。

  • --parallel-schemas=[N:]db_list建立了一个反倾销数据库命名处理队列db_list还可以指定多少线程队列使用。db_list是一个逗号分隔的数据库名称的列表。如果选择的争论开始N,队列的使用N螺纹。否则,--default-parallelism选择确定队列的线程数。

    的多个实例--parallel-schemas选择多个量子

    数据库中的表的名称可以包含相同的%_通配符支持过滤选项(见mysqlpump对象选择

mysqlpump使用默认的队列处理任何数据库命名不明确与--parallel-schemas选项,并为用户定义的命令选项选择倾销如果他们。

在一般情况下,与多个队列,mysqlpump采用队列处理数据库的集合之间的并行性,将多个数据库同时。一个队列,使用多线程,mysqlpump采用并行数据库内,将多个对象从一个给定的数据库同步。可能发生的例外;例如,mysqlpump可能阻塞队列而取得的在数据库中的对象的服务器列表。

随着并行启用,来自不同数据库的输出是交错的可能。例如,INSERT来自多个表的倾倒在并行语句可以交错;语句不写在任何特定的顺序。这并不影响重装因为输出语句限定对象名称和数据库名称或之前USE报表的要求

并行的粒度是一个单一的数据库对象。例如,一个表是无法使用多线程并行。

实例:

shell> mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3

mysqlpump建立一个队列来处理db1db2另一个队列中,db3,和一个默认的队列来处理所有其他数据库。所有队列使用一个线程。

内核&#62;mysqlpump --parallel-schemas=db1,db2 --parallel-schemas=db3--default-parallelism=4

这是由于以前的例子除了使用四个线程的队列。

shell> mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3

队列db1db2采用五线程队列db3使用三个线程,并默认队列使用双线程的默认。

作为一个特殊的情况下,与--default-parallelism=0没有--parallel-schemas选项,mysqlpump运行一个单线程的创建过程,不用排队。

mysqlpump限制

mysqlpump不倒performance_schemandbinfo,或sys模式默认。把所有这些,叫他们明确的命令行。你也可以给他们的--databases--include-databases选项

mysqlpump不倒INFORMATION_SCHEMA图式

mysqlpump将用户帐户使用的逻辑形式CREATE USERGRANT陈述(例如,当您使用--include-users--users备选办法为了这个原因,杜莫MySQL系统数据库的默认不包括包含用户定义的授权表:userDBtables_privcolumns_privprocs_priv,或proxies_priv。把任何的授权表,名称mysql数据库由表名:

内核&#62;mysqlpump mysql user db ...

4.5.7MySQLShow显示数据库、表和列的信息,

这个MySQLShow客户端可以用来快速查看数据库的存在,他们的表或表的列或索引。

MySQLShow提供一个命令行界面的几个SQLSHOW站住见第13.7.6,“语法”。同样的信息可以通过直接使用这些陈述了。例如,你可以从他们的问题MySQL客户端程序

援引MySQLShow这样地:

shell> mysqlshow [options] [db_name [tbl_name [col_name]]]
  • 如果没有数据库了,数据库名称显示的列表。

  • 如果没有表,所有匹配的数据库中的表示。

  • 如果没有列了所有匹配的列和列类型表中显示。

输出只显示那些数据库,表或列的名称,你有特权。

如果最后一个参数包含内核或SQL通配符(*%,或_),只有那些名字所示的通配符匹配。如果一个数据库名称包含下划线,那些应该加上一个反斜杠逃(一些UNIX shell需要两)获得一系列正确的表或列。*字符转换成SQL%_通配符。这可能是当你尝试显示一列的造成一些混乱_的名字,因为在这种情况下,MySQLShow显示你只匹配模式的表名。这是通过增加一个额外的不容易%在命令行上的最后一个参数。

MySQLShow支持以下选项,可以在命令行中指定或[mysqlshow][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.14 MySQLShow选项

格式描述介绍远离的
——绑定地址使用指定的网络接口连接到MySQL服务器
我compress压缩所有客户端和服务器之间发送的信息
-计数显示行数每桌
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
-默认字符集指定默认字符集
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——使明文插件使明文认证插件
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
——主机在给定的主机连接到MySQL服务器
-我的钥匙显示表的索引
——登录路径读取登录路径选项。mylogin.cnf
没有默认值不看选项文件
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
——协议连接协议使用
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——共享内存库的名字使用共享内存连接的共享内存名
-显示的表类型显示一个列的表式说明
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
地位显示有关每个表的额外信息
TLS版本……加密连接许可协议
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出

4.5.8mysqlslap负载仿真客户端

mysqlslap是一个诊断程序设计来模拟一个MySQL服务器和客户端负载报告时间的每一个阶段。它的作品,如果多个客户端访问服务器。

援引mysqlslap这样地:

shell> mysqlslap [options]

某些选项如--create--query使您能够指定一个字符串包含一个SQL语句或一个文件包含语句。如果你指定一个文件,默认情况下它必须每一行包含一个声明。(即隐式声明的换行符分隔符使用。)--delimiter选项指定一个不同的分隔符,它使您能够指定报表,在一个单一的线路跨越多行或多个语句。你不能在一个文件中包含注释;mysqlslap不理解他们

mysqlslap在3个阶段:

  1. 创建数据库,表,可选择任何存储程序或数据用于测试。这一阶段采用单客户端连接。

  2. 运行负载测试。这一阶段可以使用客户端连接。

  3. 清理(断开、删除表如果指定)。这一阶段采用单客户端连接。

实例:

提供您自己的创建和查询的SQL语句,50客户查询和200选择(输入每一行命令):

mysqlslap --delimiter=";"
  --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"
  --query="SELECT * FROM a" --concurrency=50 --iterations=200

mysqlslap一桌两创建查询的SQL语句INT柱和3VARCHAR专栏使用五客户查询各20次。不能创建表、插入数据(即,使用以前的测试的架构和数据):

mysqlslap --concurrency=5 --iterations=20  --number-int-cols=2 --number-char-cols=3  --auto-generate-sql

告诉程序加载的创建、插入、查询的SQL语句从指定的文件,在create.sql文件有多个表的创建语句分隔&#39;;&#39;和多个插入语句分隔';'。这个-查询文件有多个查询范围';'。运行所有的load语句,然后运行查询文件的所有查询五客户(各五次):

mysqlslap --concurrency=5  --iterations=5 --query=query.sql --create=create.sql  --delimiter=";"

mysqlslap支持以下选项,可以在命令行中指定或[mysqlslap][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

mysqlslap 4.15选项表

格式描述介绍远离的
自动生成SQL生成SQL语句自动在文件或使用命令选项不提供
自动生成SQL添加递增自动生成的表中添加auto_increment柱
自动生成SQL执行数指定自动生成多少查询
自动生成SQL GUID小学自动生成的GUID基于主键的表添加
自动生成SQL负载型指定测试的负载类型
自动生成SQL辅助索引指定要添加到自动生成的表多少次要指标
自我生成的SQL查询。有多少不同的查询生成的自动测试。
自动生成SQL独特写数字有多少不同的查询生成,自动生成SQL写数字
自动生成SQL写数字有多少行插入到每个线程执行
——承诺执行之前,有多少语句。
我compress压缩所有客户端和服务器之间发送的信息
——并发模拟时发出SELECT语句的客户数
创造包含语句用于创建表文件或字符串
——创建模式模式中运行测试
——CSV生成逗号分隔值格式输出
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
-定界在SQL语句中使用的分隔符
——分离分离(关闭并重新打开连接后每组陈述)
——使明文插件使明文认证插件
引擎存储引擎,用于创建表格
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
——主机在给定的主机连接到MySQL服务器
——迭代运行测试的次数
——登录路径读取登录路径选项。mylogin.cnf
没有默认值不看选项文件
--没有下降不要滴在试运行期间创建的任何模式
——char列数许多的VARCHAR列使用自动生成SQL指定如果
——int列数一些int列使用如果自动生成SQL指定
——number of查询限制每个客户约这个号码查询
仅打印不能连接到数据库。mysqlslap只打印什么就做了
——密码连接到服务器时使用的密码
——管在Windows中,连接到使用命名管道服务器
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
-后查询包含该语句执行后测试已完成的文件或字符串
——邮政系统字符串执行使用system()试验后已完成
预-查询包含该语句运行测试之前执行文件或字符串
-预系统字符串执行使用system()运行测试之前
印刷缺陷打印的默认选项
——协议连接协议使用
-查询包含SELECT语句用于检索数据文件或字符串
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——共享内存库的名字使用共享内存连接的共享内存名
——寂静静音模式
-插座连接到本地主机,Unix套接字文件使用
SQL模式设置客户端会话的SQL模式
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
TLS版本……加密连接许可协议
用户MySQL用户名连接到服务器时使用
--详细详细模式
——版本显示版本信息并退出

4.6 MySQL管理实用程序

本节介绍了行政程序和执行各种实用操作程序。

4.6.1ibd2sdi- Innodb Tabla外空SDI提取用途

ibd2sdi一种实用的提取序列化的字典信息(SDI)从InnoDB表空间文件。SDI is present的持久性数据InnoDB表空间文件

ibd2sdi可以运行在文件表表格文件*.ibd文件),一般的表空间文件(*.ibd文件),系统表空间文件(ibdata*文件和数据字典表)(mysql.ibd)。不支持使用临时表空间或撤销表空间。

ibd2sdi可以在运行时使用,或者在服务器离线。在DDL操作,ROLLBACK操作,并撤消日志清除操作相关设施,可能会有一个短时间间隔时ibd2sdi无法读取存储在表空间的SDI数据。

ibd2sdi从指定的tabelespace SDI未提交读。重做日志和撤消的日志没有访问。

调用ibd2sdi这样的效用:

shell> ibd2sdi [options] file_name1 [file_name2 file_name3 ...]

ibd2sdi支持多文件表空间一样InnoDBSYSTEM表空间,但是它不能同时运行多个表空间。多文件表空间,指定每个文件:

内核&#62;ibd2sdi ibdata1 ibdata2

多个文件表空间的文件必须在提升的页码顺序指定。如果两个连续的文件具有相同的空间ID,后来的文件必须与以前的文件的最后一页数1。

ibd2sdi输出的SDI(包含ID,类型,和数据字段)中JSON格式

IBD2SDI选项

ibd2sdi支持以下选项:

  • --helpH

    显示命令行帮助

    shell> ibd2sdi --help
    Usage: ./ibd2sdi [-v] [-c <strict-check>] [-d <dump file name>] [-n] filename1 [filenames]
    See http://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html for usage hints.
      -h, --help          Display this help and exit.
      -v, --version       Display version information and exit.
      -#, --debug[=name]  Output debug log. See
                          http://dev.mysql.com/doc/refman/8.0/en/dbug-package.html
      -d, --dump-file=name 
                          Dump the tablespace SDI into the file passed by user.
                          Without the filename, it will default to stdout
      -s, --skip-data     Skip retrieving data from SDI records. Retrieve only id
                          and type.
      -i, --id=#          Retrieve the SDI record matching the id passed by user.
      -t, --type=#        Retrieve the SDI records matching the type passed by
                          user.
      -c, --strict-check=name 
                          Specify the strict checksum algorithm by the user.
                          Allowed values are innodb, crc32, none.
      -n, --no-check      Ignore the checksum verification.
      -p, --pretty        Pretty format the SDI output.If false, SDI would be not
                          human readable but it will be of less size
                          (Defaults to on; use --skip-pretty to disable.)
    
    Variables (--variable-name=value)
    and boolean options {FALSE|TRUE}  Value (after reading options)
    --------------------------------- ----------------------------------------
    debug                             (No default value)
    dump-file                         (No default value)
    skip-data                         FALSE
    id                                0
    type                              0
    strict-check                      crc32
    no-check                          FALSE
    pretty                            TRUE
    
  • --versionV

    MySQL的版本信息显示。

    shell> ibd2sdi --version
    ibd2sdi  Ver 8.0.3-dmr for Linux on x86_64 (Source distribution)
    
  • --debug[=debug_options]- # [debug_options]

    打印调试日志。调试选项,指第28.5.3,“该计划”

    shell> ibd2sdi --debug=d:t /tmp/ibd2sdi.trace
    
  • --dump-file=D

    将序列化的字典信息(SDI)到指定转储文件。如果未指定转储文件,表空间的SDI倾销stdout

    内核&#62;ibd2sdi --dump-file=file_name ../data/test/t1.ibd
  • --skip-dataS

    跳过检索data从序列化的字典信息字段值(SDI)和检索身份证件type字段的值,这是SDI记录的主键。

    内核&#62;ibd2sdi --skip-data ../data/test/t1.ibd[“ibd2sdi”,{“类型”:1、“身份证”:330 },{“2型”、“身份证”:7)]
  • --id=#-#

    字典检索序列化信息(SDI)匹配指定的表或表空间对象ID。对象ID是唯一的对象类型。表和表空间对象ID的也发现在id列的mysql.tablesmysql.tablespace数据字典表。有关数据字典表的信息,参见14.1节,“数据字典”

    shell> ibd2sdi --id=7 ../data/test/t1.ibd
    ["ibd2sdi"
    ,
    {
    	"type": 2,
    	"id": 7,
    	"object":
    		{
        "mysqld_version_id": 80003,
        "dd_version": 80003,
        "sdi_version": 1,
        "dd_object_type": "Tablespace",
        "dd_object": {
            "name": "test/t1",
            "comment": "",
            "options": "",
            "se_private_data": "flags=16417;id=2;server_version=80003;space_version=1;",
            "engine": "InnoDB",
            "files": [
                {
                    "ordinal_position": 1,
                    "filename": "./test/t1.ibd",
                    "se_private_data": "id=2;"
                }
            ]
        }
    }
    }
    ]
    
  • --type=#T#

    Retrieves serialized dictionary information (SDI) matching the specified object type. SDI is provided for table (type=1) and tablespace (type=2) objects.

    shell> ibd2sdi --type=2 ../data/test/t1.ibd
    ["ibd2sdi"
    ,
    {
    	"type": 2,
    	"id": 7,
    	"object":
    		{
        "mysqld_version_id": 80003,
        "dd_version": 80003,
        "sdi_version": 1,
        "dd_object_type": "Tablespace",
        "dd_object": {
            "name": "test/t1",
            "comment": "",
            "options": "",
            "se_private_data": "flags=16417;id=2;server_version=80003;space_version=1;",
            "engine": "InnoDB",
            "files": [
                {
                    "ordinal_position": 1,
                    "filename": "./test/t1.ibd",
                    "se_private_data": "id=2;"
                }
            ]
        }
    }
    }
    ]
    
  • --strict-checkC

    指定用于验证页面读取校验和严格的校验算法。选项包括innodbCRC32,和none

    在这个例子中,在严格的版本innodb校验和算法指定:

    内核&#62;ibd2sdi --strict-check=innodb ../data/test/t1.ibd

    在这个例子中,严格的版本crc32校验和算法指定:

    内核&#62;ibd2sdi -c crc32 ../data/test/t1.ibd

    如果你不指定--strict-check选项,验证是对非严格执行InnoDBcrc32校验

  • --no-checkn

    跳过校验和验证的网页,阅读。

    shell> ibd2sdi --no-check ../data/test/t1.ibd
    
  • --prettyP

    输出的SDI数据JSON漂亮的打印格式。默认情况下启用。如果禁用,SDI不可读也较小。使用--skip-pretty禁用

    内核&#62;ibd2sdi --skip-pretty ../data/test/t1.ibd

4.6.2innochecksum离线InnoDB文件校验工具

innochecksumchecksums版画研究InnoDB文件此工具读取InnoDB表空间文件,计算每个页面的校验和,比较计算得到的校验和存储的校验和,并报告不匹配,这表明残页。它最初是为了加快验证停电后的表空间文件的完整性,但也可以用在文件的副本。因为校验和不匹配的原因InnoDB故意关闭正在运行的服务器,它可能是更好的使用这个工具,而不是一个生产服务器遭到损坏的页。

innochecksum不能用于表空间文件服务器已经打开。对于这样的文件,你应该使用CHECK TABLE检查表的表空间。尝试运行innochecksum在一个表空间,服务器已经开放将导致无法锁定文件误差

如果发现校验和不匹配,你通常会从备份还原表空间或启动服务器并尝试使用mysqldump在表空间进行备份的表。

援引innochecksum这样地:

shell> innochecksum [options] file_name

innochecksum期权

innochecksum支持以下选项。选择引用的页码,数字是零基础。

  • --help-?

    显示命令行帮助。使用示例:

    shell> innochecksum --help
    
  • --info-

    同义词--help。显示命令行帮助。使用示例:

    内核&#62;innochecksum --info
  • --versionV

    显示版本信息。使用示例:

    shell> innochecksum --version
    
  • --verboseV

    详细模式;打印进度指示每五秒的日志文件。为了进步指标要打印日志文件必须指定使用--log option。打开冗长的运行模式:

    shell> innochecksum --verbose
    

    关闭详细模式,运行:

    shell> innochecksum --verbose=FALSE
    

    这个--verbose选项日志选项可以指定在同一时间。例如:

    shell> innochecksum --verbose --log=/var/lib/mysql/test/logtest.txt
    

    在日志文件中找到进步指标信息,可以执行下面的搜索:

    shell> cat ./logtest.txt | grep -i "okay"
    

    日志文件中的进度指示器出现类似下面的信息:

    page 1663 okay: 2.863% done
    page 8447 okay: 14.537% done
    page 13695 okay: 23.568% done
    page 18815 okay: 32.379% done
    page 23039 okay: 39.648% done
    page 28351 okay: 48.789% done
    page 33023 okay: 56.828% done
    page 37951 okay: 65.308% done
    page 44095 okay: 75.881% done
    page 49407 okay: 85.022% done
    page 54463 okay: 93.722% done
    ...
    
  • --countC

    打印计数的文件并退出页面数量。使用示例:

    shell> innochecksum --count ../data/test/tab1.ibd
    
  • --start-page=numSnum

    在这一页的开始。使用示例:

    shell> innochecksum --start-page=600 ../data/test/tab1.ibd
    

    shell> innochecksum -s 600 ../data/test/tab1.ibd
    
  • --end-page=numnum

    在这个网页的数量。使用示例:

    shell> innochecksum --end-page=700 ../data/test/tab1.ibd
    

    shell> innochecksum --p 700 ../data/test/tab1.ibd
    
  • --page=numPnum

    只检查这页号。使用示例:

    shell> innochecksum --page=701 ../data/test/tab1.ibd
    
  • --strict-checkC

    指定一个严格的校验算法。选项包括innodbCRC32,和none

    在这个例子中,该innodb校验和算法指定:

    内核&#62;innochecksum --strict-check=innodb ../data/test/tab1.ibd

    在这个例子中,该crc32校验和算法指定:

    内核&#62;innochecksum -C crc32 ../data/test/tab1.ibd

    下列条件:

    • 如果你不指定--strict-check选项,innochecksum验证innodbCRC32none

    • 如果您指定的none只有通过checksums生成选项是允许的

    • 如果您指定的innodb只有通过checksums生成选项InnoDB是允许的

    • 如果您指定的crc32只有通过checksums生成选项CRC32是允许的

  • --no-checkn

    忽略校验时,校验和改写。此选项仅可用于与innochecksum--write选项如果--write选项,innochecksum将终止

    在这个例子中,一个innodb校验和是重写代替无效的校验和:

    内核&#62;innochecksum --no-check --write innodb ../data/test/tab1.ibd
  • --allow-mismatches-在

    最大数量的校验和不匹配的允许之前innochecksum终止。默认设置为0。如果--allow-mismatches=N,在那里N>=0N不允许有innochecksum终止于N+1。什么时候--允许错配设置为0,innochecksum终止在第一校验和不匹配。

    在这个例子中,现有的innodb校验和修改设置--允许错配1

    shell> innochecksum --allow-mismatches=1 --write innodb ../data/test/tab1.ibd
    

    --allow-mismatches设置为1,如果有600页到700页上的错配和另一个1000页的文件,校验和更新页面0-599和601-699。因为--允许错配设置为-1,校验和容忍第一失配和终止于第二失配,离开页面600页700-999不变。

  • --write=nameWnum

    重写校验和。当重写一个无效的校验和,--no-check选项必须与一起使用——写选择。的--no-check选项告诉innochecksum忽略无效的校验和验证。你不必指定--no-check选项,如果当前的校验和是有效的。

    一个算法时必须指定使用--write选择。可能的——写选项:

    • innodb:校验和计算软件,利用原有的算法InnoDB

    • crc32:校验和计算CRC32算法,可能做一个硬件辅助。

    • noneA:常数值

    这个--write选项重写整个页面到磁盘。如果新的校验和是对现有校验相同,新的校验和不写入磁盘以减少I / O.

    innochecksum获取互斥锁的时候--write选择使用

    在这个例子中,一个crc32校验和是写tab1.ibd

    shell> innochecksum -w crc32 ../data/test/tab1.ibd
    

    在这个例子中,一个crc32校验和是重写替换无效CRC32checksum:

    shell> innochecksum --no-check --write crc32 ../data/test/tab1.ibd
    
  • --page-type-summaryS

    在一个表空间计算每个网页的类型显示。使用示例:

    shell> innochecksum --page-type-summary ../data/test/tab1.ibd
    

    示例输出--page-type-summary

    File::../data/test/tab1.ibd================PAGE TYPE SUMMARY==============#PAGE_COUNT PAGE_TYPE===============================================       2        Index page       0        Undo log page       1        Inode page       0        Insert buffer free list page       2        Freshly allocated page       1        Insert buffer bitmap       0        System page       0        Transaction system page       1        File Space Header       0        Extent descriptor page       0        BLOB page       0        Compressed BLOB page       0        Other type of page===============================================Additional information:Undo page type: 0 insert, 0 update, 0 otherUndo page state: 0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other
  • --page-type-dumpD

    把页面类型信息的每一页的表空间stderr标准输出。使用示例:

    shell> innochecksum --page-type-dump=/tmp/a.txt ../data/test/tab1.ibd
    
  • --logL

    为日志输出innochecksum工具日志文件必须提供名称。日志输出包含每个表空间的页校验和值。对未压缩的表,还提供了LSN值。这个--log取代——调试选项,这在以前的版本是可用的。使用示例:

    shell> innochecksum --log=/tmp/log.txt ../data/test/tab1.ibd
    

    shell> innochecksum -l /tmp/log.txt ../data/test/tab1.ibd
    
  • -选项

    指定-选择从标准输入读取。如果当一个选项失踪从标准的读预计,innochecksum将输出innochecksum使用信息说明选项。示例用法:

    shell> cat t1.ibd | innochecksum -
    

    在这个例子中,innochecksumcrc32校验和算法a.ibd在不改变原t1.ibd文件

    内核&#62;cat t1.ibd | innochecksum --write=crc32 - > a.ibd

运行在多个用户定义的表空间文件innochecksum

下面的示例演示如何运行innochecksum在多个用户定义的表空间文件(.ibd档案)

运行innochecksum所有的表格.ibd)中的文件测试数据库:

shell> innochecksum ./data/test/*.ibd

运行innochecksum所有的表空间文件(.ibd文件),文件名称的开始T

shell> innochecksum ./data/test/t*.ibd

运行innochecksum所有的表空间文件(.ibd文件)在数据目录

shell> innochecksum ./data/*/*.ibd
笔记

运行innochecksum在多个用户定义的表空间文件不支持Windows操作系统,如Windows外内核等命令提示符不支持全球扩张模式。在Windows系统,innochecksum必须分别为每个用户定义的表空间文件。例如:

cmd> innochecksum.exe t1.ibd
cmd> innochecksum.exe t2.ibd
cmd> innochecksum.exe t3.ibd

运行在多个系统表空间文件innochecksum

默认情况下,只有一个InnoDB系统表空间文件(ibdata1)但是SYSTEM表空间的多个文件可以定义使用innodb_data_file_path选项在下面的示例中,为系统表空间文件中定义使用三innodb_data_file_path选项:ibdata1ibdata2,和ibdata3

shell> ./bin/mysqld --no-defaults --innodb-data-file-path="ibdata1:10M;ibdata2:10M;ibdata3:10M:autoextend"

三文件(ibdata1ibdata2,和ibdata3)形成一个逻辑系统表空间。运行innochecksum在多个文件中,形成一个逻辑系统表空间,innochecksum要求-选择读表空间文件从标准输入,这相当于连接多个文件创建一个单独的文件。上述所提供的例子,如下innochecksum命令可用于:

shell> cat ibdata* | innochecksum -

指的是innochecksum有关更多信息选项的信息选项

笔记

运行innochecksum在多个文件在同一个表空间是不支持Windows操作系统,如Windows内核命令提示符不支持全球扩张模式。在Windows系统,innochecksum必须分别为每个系统表空间文件。例如:

cmd> innochecksum.exe ibdata1
cmd> innochecksum.exe ibdata2
cmd> innochecksum.exe ibdata3

4.6.3ftdump MyISAM _显示全文索引信息

ftdump MyISAM _显示的信息FULLTEXT指标MyISAM表。它读取数theMyISAM索引文件直接,所以它必须运行在服务器主机,桌子位于。使用前ftdump MyISAM _,务必出具FLUSH TABLES语句首先如果服务器正在运行。

ftdump MyISAM _扫描和转储整个指数,这不是特别快。另一方面,单词经常变化的分布,所以它不需要经常运行。

援引ftdump MyISAM _这样地:

shell> myisam_ftdump [options] tbl_name index_num

这个tbl_nameargument的名称应该是一个MyISAM表你也可以通过指定索引文件指定一个表(与文件.MYIsuffix)。如果你不调用ftdump MyISAM _在目录表文件所在的表或索引文件名必须加上路径名称的表的数据库目录。指数从0。

例如:suppose,test数据库包含表名mytexttable认为有如下定义:

CREATE TABLE mytexttable
(
  id   INT NOT NULL,
  txt  TEXT NOT NULL,
  PRIMARY KEY (id),
  FULLTEXT (txt)
) ENGINE=MyISAM;

指数id是指数0,全文指数txt是指数1。如果你的工作目录是测试数据库目录,调用ftdump MyISAM _如下:

shell> myisam_ftdump mytexttable 1

如果对路径名test数据库目录/usr/local MySQL /数据/测试,你也可以使用路径名指定表名参数。如果你不调用这是有用的ftdump MyISAM _在数据库目录:

shell> myisam_ftdump /usr/local/mysql/data/test/mytexttable 1

你可以使用ftdump MyISAM _生成一个列表的索引项在发生这样的频率为Unix系统:

shell> myisam_ftdump -c mytexttable 1 | sort -r

在Windows使用。

shell> myisam_ftdump -c mytexttable 1 | sort /R

ftdump MyISAM _支持以下选项:

  • --helpH-?

    显示帮助信息并退出

  • --countC

    计算每字统计(统计和全局权重)。

  • --dumpD

    转储的指标,包括数据的偏移和词的权重。

  • --lengthL

    报告的长度分布

  • --statsS

    全球指数统计报告。这是默认的操作,如果没有其他操作规定。

  • --verboseV

    详细模式。更多关于打印输出程序是干什么的。

4.6.4myisamchkMyISAM表-维修工具

这个myisamchk实用程序获取你的数据库表或检查,修复或优化他们的信息。myisamchk作品MyISAM表(tables that haveMVD.MYI用于存储数据和索引文件)。

你也可以使用CHECK TABLEREPAIR TABLE语句来检查和修复MyISAM表看到第13.7.3.2,“检查表语法”,和第13.7.3.5,修表的语法”

使用myisamchk分区表是不支持的

注意安全

这是最好的执行表修复手术前使一个表的备份;在某些情况下的操作可能会导致数据丢失。可能的原因包括但不限于文件系统错误。

援引myisamchk这样地:

shell> myisamchk [options] tbl_name ...

这个options指定您想要什么myisamchk做。他们在下面的章节中描述。你也可以通过调用得到一个选项列表myisamchk -帮助

没有选择,myisamchk简单的检查表作为默认操作。为了得到更多的信息,或者告诉myisamchk采取纠正行动,指定选项,如下面所讨论的。

tbl_name是你要检查或修复数据库表。如果你运行myisamchk比在其他地方的数据库目录,你必须指定数据库目录的路径,因为myisamchk也不知道从哪里数据库位于。事实上,myisamchk实际上并不在乎你工作的文件都位于一个数据库目录。你可以将文件复制到对应的数据库表的位置和一些其他的执行恢复操作对他们有。

你可以在多个表的名称myisamchk命令行如果你希望。你也可以通过指定索引文件指定一个表(与文件.MYI后缀)。这使您能够通过使用模式指定目录中的所有表我*。例如,如果你在数据库目录,你可以检查所有的MyISAM在这样的目录表:

内核&#62;myisamchk *.MYI

如果你不在数据库目录,你可以检查所有的表在指定的目录的路径:

shell> myisamchk /path/to/database_dir/*.MYI

你甚至可以检查所有数据库指定一个通配符与MySQL数据目录的路径表:

shell> myisamchk /path/to/datadir/*/*.MYI

推荐的方法来快速检查所有MyISAM在表:

内核&#62;myisamchk --silent --fast /path/to/datadir/*/*.MYI

如果你想检查所有MyISAM表和修复任何损坏,您可以使用下面的命令:

内核&#62;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。这样做的最有效的方法是关闭MySQL服务器在运行myisamchk,或者锁定所有表myisamchk正在使用

否则,当你运行myisamchk,它可能会显示以下错误消息:

warning: clients are using or haven't closed the table properly

这意味着你要检查一个表,已经被另一个程序更新(如mysqld服务器)还没有关闭文件或没有关闭文件正确地死了,这有时会导致一个或更多的腐败MyISAM

如果mysqld正在运行,你必须迫使它冲洗,仍然是缓存在内存中的任何表的修改FLUSH TABLES。然后你应该确保没有人使用表跑步myisamchk

然而,为了避免这个问题,最简单的方法是使用CHECK TABLE而不是myisamchk检查表。看到第13.7.3.2,“检查表语法”

myisamchk支持以下选项,可以在命令行中指定或[myisamchk]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

myisamchk 4.16选项表

格式描述
-分析分析关键值的分布
--备份做的一个备份。MYD文件作为file_name-time.bak
——块搜索查找的记录,在给定的偏移属于一块
检查检查错误的表
检查的变化检查只有自上次检查变化表
——正确的校验该表的校验信息正确
数据文件的长度数据文件的最大长度(当重新创建数据文件时,它是满的)
——调试编写调试日志
——decode_bitsdecode_bits
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——描述打印一些关于表的描述信息
——延伸检查做的很彻底的检查表或修理,试图从数据文件恢复每一个可能的行
你的快餐只检查表没有正确关闭
- Force如果myisamchk表中发现的任何错误进行修复操作自动
- Force覆盖旧的临时文件。使用R或-o选项
-英尺_最大_是_透镜全文索引的最大词长
-英尺_ min _是_透镜全文索引的最小长度
——ft_stopword_file使用该文件而不是内置列表构建
帮助显示帮助信息并退出
帮助显示帮助信息并退出
信息打印表格,检查信息统计
——key_buffer_size用于MyISAM表的索引块的缓冲区大小
——轿车的钥匙一位值表示索引的更新
最大记录长度跳过行大于给定的长度如果myisamchk无法分配内存来抓住他们
中检查做个检查,比一个扩展的检查操作
——myisam_block_size块的大小是使用MyISAM索引页
——myisam_sort_buffer_size缓冲区被分配当排序指标做修复时,或创建索引时,索引或表
没有默认值不看选项文件
并行恢复使用相同的技术- R和N,但创造平行的所有按键,使用不同的线程(测试版)
印刷缺陷打印的默认选项
——快在不修改数据文件实现更快的修复。
——read_buffer_size每个线程做顺序扫描分配这样大小的缓冲区为每个表扫描
——只读不标记表检查
——恢复做一个修复,可以解决几乎任何问题但不是唯一独特的钥匙
——安全恢复做一个修复使用旧的回收方法,通过读取所有行和更新基于行的所有索引树
-设置自动增量力auto_increment为在给定值开始新的记录编号
我见过的collation指定用于排序表指标的整理
——寂静静音模式
——sort_buffer_size缓冲区被分配当排序指标做修复时,或创建索引时,索引或表
-抽签在高阶的索引树块排序
——sort_key_blockssort_key_blocks
——排序记录排序记录根据特定指标
——分类回收力myisamchk使用排序即使临时文件会非常大的决心的关键
_ --统计方法指定如何MyISAM索引统计收集代码应该处理空值
——tmpdir目录是用来存放临时文件
——unpack打开一个表,挤满的MyISAMPack
-更新状态在存储信息。MYI文件表明当表查表坠毁是否
--详细详细模式
——版本显示版本信息并退出
——write_buffer_size写缓冲区大小

4.6.4.1 myisamchk选项

本节中描述的选项可用于任何类型的表进行维护操作myisamchk。在接下来的部分描述,仅涉及到具体的操作选项,如表检查或修理。

  • --help-?

    显示帮助信息并退出。选择的操作类型分组。

  • --HELPH

    显示帮助信息并退出。在一个列表中的选项。

  • --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被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

  • --defaults-file=file_name

    只能使用指定的选项文件。如果文件不存在或无法访问,出现错误。file_name被解释为相对于当前目录,如果给出一个相对路径名称而不是一个完整的路径名。

  • --defaults-group-suffix=str

    阅读不仅平时选项组,而且组与通常的名称后缀str。例如,myisamchk通常读取[myisamchk]群组如果--defaults-group-suffix=_other选择了,myisamchk也读[myisamchk_other]群组

  • --no-defaults

    不要读任何选项文件。如果程序启动失败,由于从一个选项文件阅读未知的选项,--no-defaults可以用来防止读

    例外的是.mylogin.cnf文件,如果存在,是在所有情况下读。这允许密码将在一个更安全的方式比在命令行指定即使--no-defaults在应用。(mylogin.cnf。是由_ _ MySQL配置编辑器功用看到4.6.7“,”_ _ MySQL配置编辑器MySQL的配置实用程序”。)

  • --print-defaults

    打印程序的名字和所有的选项,从选项文件获取。

  • --silentS

    静音模式。写输出时发生错误。你可以使用-s两次(SS)使myisamchk很沉默

  • --verboseV

    详细模式。打印更多的信息关于程序干什么。这可以用-d。使用-v多次(- VV-vvv)更多的输出

  • --versionV

    显示版本信息并退出

  • --waitW

    而终止一个错误如果表锁定,等到表解锁继续前。如果您正在运行mysqld与外部锁定禁用,桌子可由另一个锁着的只有myisamchk命令

你也可以通过设置以下变量--var_name=value语法:

变量默认值
decode_bits
ft_max_word_len版型
ft_min_word_len
ft_stopword_file内置列表
key_buffer_size五十二万三千二百六十四
myisam_block_size一千零二十四
myisam_sort_key_blocks十六
read_buffer_size二十六万二千一百三十六
sort_buffer_size二百零九万七千一百四十四
sort_key_blocks十六
stats_methodnulls_unequal
write_buffer_size二十六万二千一百三十六

可能的myisamchk变量和默认值可以检查myisamchk --help

myisam_sort_buffer_size时使用的密钥是由排序键修复,这是正常情况下,当你使用--recoversort_buffer_size是一个过时的同义词myisam_sort_buffer_size

key_buffer_size是当你检查表--extend-check当钥匙插入钥匙排排成的表修好(喜欢做正常插入时)。修复通过关键缓冲区用于下列情况:

  • 你用--safe-recover

  • 临时文件需要排序的键将超过两倍当创建密钥文件直接。这是通常的情况下,当你有大量的关键值CHARVARCHAR,或TEXT列,因为排序操作需要存储完整的核心价值观作为它的收益。如果你有很多你能力的临时空间myisamchk修复排序,您可以使用--sort-recover选项

修复的关键缓冲区需要较少的磁盘空间比使用排序,但也慢得多。

如果你想要一个更快的修复,设置key_buffer_sizemyisam_sort_buffer_size变量关于您的可用内存25%。你可以设置变量值很大,因为它们中只有一个是用一次。

myisam_block_size用于索引块的大小

stats_method影响如何无效的值为指标统计处理时--analyze选择了。它的作用就像_ _ MyISAM数据方法系统变量。更多信息,见描述myisam_stats_method进入第5.1.7,服务器“系统变量”,和第8.3.8,”InnoDB和MyISAM索引的统计信息收集”

ft_min_word_len英国《金融时报》成为最大_ _ _透镜显示的最小和最大长度为FULLTEXT指标MyISAMft_stopword_file文件名称的词。这些需要建立在下列情况下。

如果你使用myisamchk执行一个操作,修改表的索引(如维修或分析),该FULLTEXT重建索引使用的最小和最大长度的默认全文参数值和停用词的文件,除非您指定。这可能会导致查询失败。

问题的发生是因为这些参数都是由服务器只知道。他们不存储在MyISAM索引文件。为了避免这一问题如果你有改进的最小或最大词长、词的文件在服务器上,指定相同的英国《金融时报》_ min _是_透镜ft_max_word_len,和ft_stopword_file价值观myisamchk你可以用mysqld。例如,如果你有设置最小字长为3,你会修表myisamchk这样地:

shell> 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 TABLEANALYZE TABLEOPTIMIZE TABLE,或ALTER TABLE。这些陈述是由服务器完成,从而知道适当的参数值,使用全文。

4.6.4.2 myisamchk检查选项

myisamchk支持以下为查表操作选项:

  • --checkC

    检查错误的表。这是默认的操作,如果你不指定选项,选择操作类型明确。

  • --check-only-changedC

    检查只有自上次检查变化表。

  • --extend-check

    检查表的很彻底。如果表中有许多指标,这是相当慢的。此选项只能用于极端情况。通常,myisamchkmyisamchk中检查应该能够确定是否有任何错误的表。

    如果你使用的是--extend-check并有足够的内存,设置key_buffer_size变为一个大值有助于修复操作运行速度更快。

    又见此选项表修复选项下的描述。

    为说明输出格式,见第4.6.4.5,“获得myisamchk”表信息

  • --fastF

    只检查表没有正确关闭。

  • --forceF

    做修复手术时自动myisamchk在桌上发现的任何错误。修复类型,指定的相同--recoverR选项

  • --information-

    打印表格,检查信息统计。

  • --medium-checkM

    做个检查,比一--extend-check运营这一发现只有99.99%的误差,这在大多数情况下是足够好。

  • --read-onlyT

    不标记表检查。如果你使用这是有用的myisamchk检查表,在使用一些其他的应用程序,不使用的锁,如mysqld当运行外部锁定禁用

  • --update-stateU

    大量的信息.MYI文件表明,当表查表坠毁是否。这应该被用于获得充分受益--check-only-changed的选择,但你不应该使用这个选项,如果mysqld服务器正在使用的表和你运行它与外部锁定禁用。

4.6.4.3 myisamchk修复选项

myisamchk支持以下表修复操作选项(操作时选择如--recover--safe-recover给出):

  • --backupB

    做的一个备份.MYD文件file_nametime.bak

  • --character-sets-dir=dir_name

    目录中的字符集设置。看到10.14节,“字符集配置”

  • --correct-checksum

    该表的校验信息正确

  • --data-file-length=lenDlen

    数据文件的最大长度(当重新创建数据文件时全部

  • --extend-check

    做一个修复,试图从数据文件恢复每一个可能的行。通常,这也发现了不少垃圾排。不要使用这个选项,除非你的绝望。

    See also the description of this option of this option under table checking options .

    为说明输出格式,见第4.6.4.5,“获得myisamchk”表信息

  • --forceF

    覆盖旧的中间文件(如文件tbl_name.TMD而中止)

  • --keys-used=valKval

    myisamchk,期权的价值是有点价值,表明指标更新。期权价值的每个二进制位对应一个表的索引,其中第一个指标是0位。0个选项值禁用更新所有索引,可以得到更快的插入。停用指标可以被使用myisamchk - R的

  • --no-symlinksL

    不要跟随符号链接。通常myisamchk修表的链接点。此选项不存在因为MySQL 4版本4不在维修操作删除符号链接。

  • --max-record-length=len

    跳过行大于给定的长度如果myisamchk无法分配内存以保存他们。

  • --parallel-recoverP

    使用相同的技术-rn,但创造平行的所有按键,使用不同的线程。这是测试代码质量。使用您自己的风险!

  • --quickQ

    通过修改索引文件实现更快的修复,而不是数据文件。您可以指定此选项两次力myisamchk修改复制钥匙的原始数据文件。

  • --recoverR

    做一个修复,可以解决几乎任何问题除了独特的钥匙,是不是唯一的(这是极不可能的错误MyISAM表格)。如果你想恢复一个表,这是选择先试试看。你应该试试--safe-recover只有myisamchk报道称,台无法恢复使用--recover。(在可能的情况下,--recover失败,数据文件仍然是完整的。)

    如果你有很多的记忆,你应该增加价值myisam_sort_buffer_size

  • --safe-recover-或

    做一个修复使用旧的回收方法,通过读取所有行和更新基于行的所有索引树。这是一个阶级的速度比--recover,但可以处理一些非常不可能的情况下,--recover不能。这种回收方法也使用较少的磁盘空间比--recover。通常情况下,你应该先使用修复--recover,然后用--safe-recover只有--recover失败.

    如果你有很多的记忆,你应该增加价值key_buffer_size

  • --set-collation=name

    指定用于排序表指标的整理。字符集的名称是由排序规则名称的第一部分暗示。

  • --sort-recovern

    myisamchk使用排序即使临时文件会非常大的决心的关键。

  • --tmpdir=dir_nameTdir_name

    该目录的路径是用于存储临时文件。如果没有设置,myisamchk利用的价值TMPDIR环境变量--tmpdir可以设置目录路径列表中,先后用循环的方式创建临时文件。目录名称之间的分隔符是冒号()在UNIX和分号(;)是Windows操作系统。

  • --unpackU

    打开一个表,挤满MyISAMPack

4.6.4.4 other myisamchk选项

myisamchk支持以下除表检查和维修措施的选择:

  • --analyze-在

    分析关键值的分布。这提高了使优化器更好的选择加入的顺序加入表,应该使用哪个指标和性能。获取密钥的分布信息,使用myisamchk——描述——噜tbl_name命令或显示指数tbl_name声明

  • --block-search=offsetBoffset

    查找的记录,在给定的偏移属于一块。

  • --descriptionD

    打印一些关于表的描述信息。指定--verbose选择一次或两次产生的附加信息。看到第4.6.4.5,“获得myisamchk”表信息

  • --set-auto-increment[=value]Avalue]

    AUTO_INCREMENT对于在给定值开始新的记录编号(或更高,如果存在记录汽车宽大。如果value没有指定,汽车新记录的数字开始与最大值在表中的当前,加一。

  • --sort-indexS

    在高阶的索引树块排序。这优化了寻求进行表扫描,使用索引更快。

  • --sort-records=NRN

    排序记录根据特定指标。这使您的数据更本地化,可以加快基于范围SELECT顺序操作,利用这一指标。(你第一次使用此选项排序表,它可能会很慢。)来确定一个表的索引,使用SHOW INDEX,其中显示一个表的索引在相同的顺序myisamchk看到他们。索引编号开始1。

    如果钥匙没有包装(PACK_KEYS=0),它们具有相同的长度,所以当myisamchk各种动作的记录,它只是覆盖在索引记录的偏移量。如果钥匙包(PACK_KEYS=1),myisamchk必须打开关键块,然后重新创建索引和包的关键块再次。(在这种情况下,重新创建索引比更新各项指标。偏移速度更快)

4.6.4.5获取表格信息用myisamchk

为了获得一个描述一个MyISAM关于它的表或统计,使用下面的命令。这些命令的输出是在本章后面介绍。

  • myisamchk Dtbl_name

    myisamchk进入描述模式产生一个描述你的表。如果你启动MySQL服务器与外部锁定禁用,myisamchk可以为一个表,而它运行更新错误报告。然而,因为myisamchk不更改表中描述的模式,没有破坏数据的风险。

  • myisamchk - DVtbl_name

    添加-vmyisamchk因此,它产生的更多信息在详细模式。添加-v一秒钟的时间产生更多的信息。

  • myisamchk - EIStbl_name

    只显示表中的最重要的信息。这个操作是慢是因为它必须读取整个表。

  • myisamchk……tbl_name

    这是喜欢-eis,但告诉你正在做什么。

这个tbl_name参数可以是一个MyISAM表或索引文件的名称,如4.6.4“,”myisamchk- MyISAM表维护工具”。多tbl_name参数可以是给定的

假设一个表名person具有以下结构。(Themax_rows表选项包括使示例输出myisamchk后来证明,一些值较小,适合输出格式更容易。)

CREATE TABLE person
(
  id         INT NOT NULL AUTO_INCREMENT,
  last_name  VARCHAR(20) NOT NULL,
  first_name VARCHAR(20) NOT NULL,
  birth      DATE,
  death      DATE,
  PRIMARY KEY (id),
  INDEX (last_name, first_name),
  INDEX (birth)
) MAX_ROWS = 1000000 ENGINE=MYISAM;

假设表中有这些数据和索引文件的大小:

-rw-rw----  1 mysql  mysql  9347072 Aug 19 11:47 person.MYD
-rw-rw----  1 mysql  mysql  6066176 Aug 19 11:47 person.MYI

例子DVB - myisamchk输出:

MyISAM file:         person
Record format:       Packed
Character set:       utf8mb4_0900_ai_ci (255)
File-version:        1
Creation time:       2017-03-30 21:21:30
Status:              checked,analyzed,optimized keys,sorted index pages
Auto increment key:              1  Last value:                306688
Data records:               306688  Deleted blocks:                 0
Datafile parts:             306688  Deleted data:                   0
Datafile pointer (bytes):        4  Keyfile pointer (bytes):        3
Datafile length:           9347072  Keyfile length:           6066176
Max datafile length:    4294967294  Max keyfile length:   17179868159
Recordlength:                   54

table description:
Key Start Len Index   Type                     Rec/key         Root  Blocksize
1   2     4   unique  long                           1                    1024
2   6     80  multip. varchar prefix                 0                    1024
    87    80          varchar                        0
3   168   3   multip. uint24 NULL                    0                    1024

Field Start Length Nullpos Nullbit Type
1     1     1                                                         
2     2     4                      no zeros                           
3     6     81                     varchar                            
4     87    81                     varchar                            
5     168   3      1       1       no zeros                           
6     171   3      1       2       no zeros                           

对信息类型的解释myisamchk产生了密钥文件是指索引文件唱片是同义词,如领域专栏

该表格描述的初始部分包含这些值:

  • MyISAM file

    名字的MyISAM(指数)的文件

  • Record format

    格式用于存储表中的行。前面的示例使用Fixed length。其他可能的值是压缩的Packed。(拥挤的对应于什么SHOW TABLE STATUS报告动态。)

  • Chararacter set

    表的默认字符集

  • File-version

    版本MyISAM格式总是1

  • Creation time

    当数据文件的创建

  • Recover time

    当索引/数据文件最后被重建。

  • Status

    表状态标志。可能的值是crashed开放changed分析optimized keys,和排序的索引页

  • Auto increment key最后一个值

    关键数相关的表的AUTO_INCREMENT柱,和最近生成的此列的值。这些领域不如果没有这样的栏目出现。

  • Data records

    表中的行数

  • Deleted blocks

    有多少被删除的块仍然有保留空间。你可以优化你的表来减少这个空间。看到部分美国,“MyISAM表优化”

  • Datafile parts

    动态行格式,这表明有多少数据块。支离破碎的行没有优化的表,这是一样的Data records

  • Deleted data

    有多少字节的未删除的数据有。你可以优化你的表来减少这个空间。看到部分美国,“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(多重)

  • Type

    什么数据类型,这部分的指数。这是一个MyISAM与可能的值的数据类型拥挤的stripped,或空的

  • Root

    根的索引块的地址

  • Blocksize

    每个索引块的大小。默认是1024,但价值可能会改变在编译时当MySQL是建立从源。

  • Rec/key

    这是一个统计值查询优化器使用。它告诉有每值这个指标多少行。唯一索引总是有价值1。这可能是在表加载更新(或大大改变)与myisamchk -。如果这根本不更新,默认值30了。

输出的最后一部分提供了关于每列的信息:

  • Field

    列数

  • Start

    在表的行,列的字节位置。

  • Length

    在字节的列的长度

  • Nullposnullbit

    对可列NULLMyISAM商店NULL价值观作为一个字节的标志。这取决于有多少可为空的列,可以有一个或多个字节用于此目的的。这个nullposNullbit值,如果非空,说明字节和比特包含标志指示列是否是无效的

    和用于存储字节数的位置NULL旗帜在线显示的字段1。这就是为什么有六线的person表虽然只有5列

  • Type

    数据类型。值可以包含以下任何描述符:

    • constant

      所有行具有相同的值

    • no endspace

      不要把endspace。

    • no endspace, not_always

      不要把endspace和不为所有值做endspace压缩。

    • no endspace, no empty

      endspace不大。没有大的空值。

    • table-lookup

      列转换为ENUM

    • zerofill(N)

      最重要的N在值总是0字节,不存储。

    • no zeros

      不保存零点

    • always zero

      零的值是用一位存储

  • Huff tree

    与列关联的赫夫曼树的数量。

  • Bits

    用于Huffman tree的比特数。

这个Huff tree字段如果表被压缩与显示MyISAMPack。看到4.6.6“,”MyISAMPack生成的压缩,只读MyISAM表”,这个信息的一个例子。

例子myisamchk……输出:

Checking MyISAM file: person
Data records:  306688   Deleted blocks:       0
- check file-size
- check record delete-chain
No recordlinks
- check key delete-chain
block_size 1024:
- check index reference
- check data record references index: 1
Key:  1:  Keyblocks used:  98%  Packed:    0%  Max levels:  3
- check data record references index: 2
Key:  2:  Keyblocks used:  99%  Packed:   97%  Max levels:  3
- check data record references index: 3
Key:  3:  Keyblocks used:  98%  Packed:  -14%  Max levels:  3
Total:    Keyblocks used:  98%  Packed:   89%

- check records and index references
*** LOTS OF ROW NUMBERS DELETED ***

Records:            306688  M.recordlength:       25  Packed:            83%
Recordspace used:       97% Empty space:           2% Blocks/Record:   1.00
Record blocks:      306688  Delete blocks:         0
Record data:       7934464  Deleted data:          0
Lost space:         256512  Linkdata:        1156096

User time 43.08, System time 1.68
Maximum resident set size 0, Integral resident set size 0
Non-physical pagefaults 0, Physical pagefaults 0, Swaps 0
Blocks in 0 out 7, Messages in 0 out 0, Signals 0
Voluntary context switches 0, Involuntary context switches 0
Maximum memory usage: 1046926 bytes (1023k)

myisamchk……输出包括以下信息:

  • Data records

    表中的行数

  • Deleted blocks

    有多少被删除的块仍然有保留空间。你可以优化你的表来减少这个空间。看到部分美国,“MyISAM表优化”

  • Key

    关键数字

  • Keyblocks used

    有多少百分比的关键块的使用。当一台刚刚重组myisamchk,价值是非常高的(非常接近理论最大值)。

  • Packed

    MySQL试图包都有一个共同的后缀关键值。这只能用于索引CHARVARCHAR专栏长有类似的左边部分索引字符串,这可以显著减少使用空间。在前面的例子中,第二密钥长度为40个字节空间的减少量达到了97%。

  • Max levels

    这个关键的树有多深。长按键值大表高值。

  • Records

    多少行是在表

  • M.recordlength

    平均的行长度。这是具有固定长度的行的表的行的长度,因为所有的列具有相同的长度。

  • Packed

    MySQL的字符串from the end of条空间。thePacked值指示这样做了储蓄率。

  • Recordspace used

    有多少百分比的数据文件使用。

  • Empty space

    有多少百分比的数据文件是无用的。

  • Blocks/Record

    块的每行的平均数(即,有多少链接一个支离破碎的行组成的)。这是1的固定格式表。这个值应该保持尽可能接近1。如果它变得太大,你可以重新组织表。看到部分美国,“MyISAM表优化”

  • Recordblocks

    有多少块(链接)的使用。固定格式的表格,这是行数相同。

  • Deleteblocks

    有多少块(链接)被删除。

  • Recorddata

    数据文件中使用多少字节。

  • Deleted data

    在数据文件中有多少个字节删除(未使用)。

  • Lost space

    如果行更新较短,一些空间了。这是所有这些损失的总和,在字节。

  • Linkdata

    当动态表格式,行片段与指针(4到7个字节)。Linkdata是通过所有这些指针使用的存储量的总和。

4.6.4.6 myisamchk内存使用

内存分配是重要的当你运行myisamchkmyisamchk不使用比设置的内存相关的变量更多的内存。如果你要使用myisamchk在非常大的表,你应该先决定你想使用多少内存。默认是使用只有大约3MB进行修理。通过使用较大的值,可以得到myisamchk操作更快。例如,如果你有超过512MB的内存可用,您可以使用这些选项(除了你可以指定任何其他选项):

shell> 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_lengthmyisamchk - DVtbl_name(见第4.6.4.5,“获得myisamchk”表信息)。therow_pointer_lengthnumber_of_rows价值观是文件指针Data records值在表的描述。来确定的。largest_keycheck the value,钥匙线表的描述。《Len列指示每个关键部分的字节数。对于多列索引,关键尺寸的总和伦恩对所有关键部分的估价。

如果你的磁盘空间在修复过程中有问题,你可以试试--safe-recover而不是--recover

4.6.5myisamlog日志文件内容显示MyISAM

myisamlog处理一个问题MyISAM日志文件。创建这样一个文件,以启动服务器--log-isam=log_file选项

援引myisamlog这样地:

shell> myisamlog [options] [file_name [tbl_name] ...]

默认操作是更新(-u)。如果恢复了(R),所有写入和可能的更新和删除了错误数。默认的日志文件名myisam.log如果没有log_file给出的说法是。如果表名在命令行上,只有那些表更新。

myisamlog支持以下选项:

  • -?-

    显示帮助信息并退出

  • -c N

    只执行N命令

  • -f N

    指定打开文件的最大数目。

  • -F filepath/

    一个斜杠指定文件路径。

  • -i

    在退出之前,显示额外的信息。

  • -o offset

    指定起始偏移

  • -p N

    去除N元件的路径

  • -r

    执行恢复操作

  • -R record_pos_file record_pos

    指定的记录位置的文件和记录的位置。

  • -u

    执行更新操作

  • -v

    详细模式。更多关于打印输出程序是干什么的。此选项可以多次产生更多的产出。

  • -w write_file

    指定写入文件

  • -V

    显示版本信息

4.6.6MyISAMPack-生成压缩,read - only Myisam Table

这个MyISAMPack实用的压缩MyISAMMyISAMPack通过单独的表中每一列的作品压缩。通常,MyISAMPack包中的数据文件40%到70%。

当桌子使用后,服务器读取到内存中的信息需要减压柱。这导致更好的性能,当访问单独的行,因为你只需要解压缩整整一排。

MySQL的使用mmap()尽可能压缩表执行内存映射。如果mmap()不工作,MySQL回落到正常的读/写文件操作。

Please笔记:下面

  • 如果mysqld与外部锁定禁用服务器调用调用,这是不是一个好主意MyISAMPack如果该表可能被更新的服务器的包装过程。这是最安全的压缩表与服务器停止。

  • 包装后的表,它是只读的。这通常是预期的(如访问时装表在CD)。

  • MyISAMPack不支持分区表

援引MyISAMPack这样地:

shell> myisampack [options] file_name ...

每个文件名的参数应该是一个索引的名称(.MYI)文件。如果你不在数据库目录,你应该指定的文件的路径名。它允许省略。我扩展

你压缩一个表后MyISAMPack,使用myisamchk - RQ重建索引4.6.4“,”myisamchk- MyISAM表维护工具”

MyISAMPack支持以下选项。它还读取选项文件并支持处理选项描述第4.2.7,”命令行选项影响选项文件处理”

  • --help-?

    显示帮助信息并退出

  • --backupB

    让每一个表的数据备份文件的名称tbl_name.OLD

  • --character-sets-dir=dir_name

    目录中的字符集设置。看到10.14节,“字符集配置”

  • --debug[=debug_options]- # [debug_options]

    写一个调试日志。一个典型的debug_options字符串D:T:O,file_name。默认值是D:T:

  • --forceF

    产生一个填充表即使它变得比原来大或者从早期的中间文件的调用MyISAMPack的存在。(MyISAMPack创建一个中间文件命名tbl_name.TMD在数据库目录,它压缩的表。如果你杀了MyISAMPack,的.TMD文件可能无法删除正常。),MyISAMPack一个错误退出,如果发现tbl_name.TMD存在.与--forceMyISAMPack包桌呢

  • --join=big_tbl_nameJbig_tbl_name

    加入所有表格命令行上指定到一个单一的包装表big_tbl_name。所有的表都是组合必须具有相同的结构(同一列的名称和类型,相同的指标,等等)。

    big_tbl_name要不是加入操作之前存在。所有源表命令行上指定要合并到big_tbl_name必须存在。源表的连接操作读取但不能修改。

  • --silentS

    静音模式。写输出时发生错误。

  • --testT

    实际上不包桌,只是测试包装。

  • --tmpdir=dir_nameTdir_name

    使用指定的目录位置MyISAMPack创建临时文件

  • --verboseV

    详细模式。写关于包装的操作和结果的进度信息。

  • --versionV

    显示版本信息并退出

  • --waitW

    等待并重试如果表使用。如果mysqld与外部锁定禁用服务器调用调用,这是不是一个好主意MyISAMPack如果该表可能被更新的服务器的包装过程。

下面的命令序列,说明了一个典型的表压缩会议:

shell> 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

shell> myisamchk -dvv station

MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-02-02  3:06:43
Data records:              1192  Deleted blocks:              0
Datafile parts:            1192  Deleted data:                0
Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
Max datafile length:   54657023  Max keyfile length:   33554431
Recordlength:               834
Record format: Fixed length

table description:
Key Start Len Index   Type                 Root  Blocksize    Rec/key
1   2     4   unique  unsigned long        1024       1024          1
2   32    30  multip. text                10240       1024          1

Field Start Length Type
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

shell> myisampack station.MYI
Compressing station.MYI: (1192 records)
- Calculating statistics

normal:     20  empty-space:   16  empty-zero:     12  empty-fill:  11
pre-space:   0  end-space:     12  table-lookups:   5  zero:         7
Original trees:  57  After join: 17
- Compressing file
87.14%
Remember to run myisamchk -rq on compressed tables

shell> myisamchk -rq station
- check record delete-chain
- recovering (with sort) MyISAM-table 'station'
Data records: 1192
- Fixing index 1
- Fixing index 2

shell> mysqladmin -uroot flush-tables

shell> 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

shell> myisamchk -dvv station

MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-04-17 19:04:26
Data records:               1192  Deleted blocks:              0
Datafile parts:             1192  Deleted data:                0
Datafile pointer (bytes):      3  Keyfile pointer (bytes):     1
Max datafile length:    16777215  Max keyfile length:     131071
Recordlength:                834
Record format: Compressed

table description:
Key Start Len Index   Type                 Root  Blocksize    Rec/key
1   2     4   unique  unsigned long       10240       1024          1
2   32    30  multip. text                54272       1024          1

Field Start Length Type                         Huff tree  Bits
1     1     1      constant                             1     0
2     2     4      zerofill(1)                          2     9
3     6     4      no zeros, zerofill(1)                2     9
4     10    1                                           3     9
5     11    20     table-lookup                         4     0
6     31    1                                           3     9
7     32    30     no endspace, not_always              5     9
8     62    35     no endspace, not_always, no empty    6     9
9     97    35     no empty                             7     9
10    132   35     no endspace, not_always, no empty    6     9
11    167   4      zerofill(1)                          2     9
12    171   16     no endspace, not_always, no empty    5     9
13    187   35     no endspace, not_always, no empty    6     9
14    222   4      zerofill(1)                          2     9
15    226   16     no endspace, not_always, no empty    5     9
16    242   20     no endspace, not_always              8     9
17    262   20     no endspace, no empty                8     9
18    282   20     no endspace, no empty                5     9
19    302   30     no endspace, no empty                6     9
20    332   4      always zero                          2     9
21    336   4      always zero                          2     9
22    340   1                                           3     9
23    341   8      table-lookup                         9     0
24    349   8      table-lookup                        10     0
25    357   8      always zero                          2     9
26    365   2                                           2     9
27    367   2      no zeros, zerofill(1)                2     9
28    369   4      no zeros, zerofill(1)                2     9
29    373   4      table-lookup                        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      always zero                          2     9
34    392   4      table-lookup                        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      no zeros                             2     9
39    409   4      always zero                          2     9
40    413   4      no zeros                             2     9
41    417   4      always zero                          2     9
42    421   4      no zeros                             2     9
43    425   4      always zero                          2     9
44    429   20     no empty                             3     9
45    449   30     no empty                             3     9
46    479   1                                          14     4
47    480   1                                          14     4
48    481   79     no endspace, no empty               15     9
49    560   79     no empty                             2     9
50    639   79     no empty                             2     9
51    718   79     no endspace                         16     9
52    797   8      no empty                             2     9
53    805   1                                          17     1
54    806   1                                           3     9
55    807   20     no empty                             3     9
56    827   4      no zeros, zerofill(2)                2     9
57    831   4      no zeros, zerofill(1)                2     9

MyISAMPack显示下列信息:

  • normal

    使用的列,没有额外的包装数。

  • empty-space

    含,只是空间值的列数。这些占据一点。

  • empty-zero

    含,只有二进制零值的列数。这些占据一点。

  • empty-fill

    那不占用他们的类型的完整字节范围的整数列数。这些变化给较小的类型。例如,一个BIGINT柱(八字节)可以存储为一个TINYINT列(一个字节)如果它的值的范围是从-128127

  • pre-space

    存储的前导空格的列数与小数。在这种情况下,每个值包含的空格数计数。

  • end-space

    那有很多空格的列数。在这种情况下,每个值包含一个空格的数量计数。

  • table-lookup

    列只有一小数量的不同值,并转换为ENUM在赫夫曼之前的压缩

  • zero

    列的所有值都是零的数。

  • Original trees

    赫夫曼树的初始数

  • After join

    加入树保存一些头空间后独特的赫夫曼树左数。

后一个表被压缩,这Field线显示DVB - myisamchk包括每一列的附加信息:

  • Type

    数据类型。值可以包含以下任何描述符:

    • constant

      所有行具有相同的值

    • no endspace

      不要把endspace。

    • no endspace, not_always

      不要把endspace和不为所有值做endspace压缩。

    • no endspace, no empty

      endspace不大。没有大的空值。

    • table-lookup

      列转换为ENUM

    • zerofill(N)

      最重要的N在值总是0字节,不存储。

    • no zeros

      不保存零点

    • always zero

      零的值是用一位存储

  • Huff tree

    与列关联的赫夫曼树的数量。

  • Bits

    用于Huffman tree的比特数。

当你跑了MyISAMPack,使用myisamchk重新创建任何索引。在这个时候,你也可以索引块排序和创建MySQL优化器的工作效率所需的统计:

shell> myisamchk -rq --sort-index --analyze tbl_name.MYI

当你安装了装表到MySQL数据库目录,你应该执行mysqladmin flush-tables给力mysqld开始使用新的表

打开填充表,使用--unpack选项myisamchk

4.6.7_ _ MySQL配置编辑器MySQL的配置实用程序

这个_ _ MySQL配置编辑器实用工具使您能够存储的身份验证凭据在模糊的登录路径文件名为.mylogin.cnf。文件位置是%APPDATA%directory \ MySQL目录在Windows和当前用户的家在非Windows系统目录。文件可以读取后,MySQL客户端程序获得连接到MySQL服务器的身份验证凭据。

在没有混淆的格式.mylogin.cnf登录路径文件由选项组,类似于其他选项文件。每个选项组mylogin.cnf。被称为登录路径,这是一组只允许特定的选项:host用户password港口socket。想到一个登录路径选项组为一组选项指定MySQL服务器连接和帐户进行身份验证。这是一个没有混淆的例子:

[client]user = mydefaultnamepassword = mydefaultpasshost = 127.0.0.1[mypath]user = myothernamepassword = myotherpasshost = localhost

当你调用一个客户端程序连接到服务器,客户端使用.mylogin.cnf与其他选项文件关联。它的优先级高于其他选项文件,但比在命令行客户端显式指定的选项。大约在使用选项文件的顺序的信息,参见第4.2.6、“使用选项文件”

指定一个备用的登录路径文件名,设置MYSQL_TEST_LOGIN_FILE环境变量。这个变量是公认的_ _ MySQL配置编辑器clients模式(标准,MySQLMySQLmysqladmin,等等),并通过mysql-test-run.pl测试工具

程序使用一组登录路径文件如下:

  • _ _ MySQL配置编辑器操作上的client登录路径默认情况下,如果不指定--login-path=name选项指出明确的登录路径使用。

  • 没有一个--login-path选项,客户端程序读取相同的选项组的登录路径文件,他们阅读其他选项文件。考虑这个命令:

    内核&#62;mysql

    默认情况下,该MySQL客户端读取[client][数据库]其他选项的文件组,所以读他们从登录路径文件以及。

  • 用一个--login-path选项,客户端程序,另外读指定的登录路径从登录文件的路径。其他选项文件中读取选项组保持不变。考虑这个命令:

    内核&#62;mysql --login-path=mypath

    这个MySQL客户端读取[client][数据库]其他选项文件,和[client][数据库],和[mypath]从登录文件的路径

  • 客户端程序读取登录路径文件即使--no-defaults选择使用。这允许密码将在一个更安全的方式比在命令行指定即使--no-defaults是存在的

_ _ MySQL配置编辑器混淆了.mylogin.cnf文件无法读取明文,其内容在没有混淆的客户端程序,仅用于在内存中。这样,密码可以存储在非明文格式的文件,使用后不需要暴露在命令行或在一个环境变量。_ _ MySQL配置编辑器提供了一个print用于显示登录路径文件内容的命令,但即使在这种情况下,密码值是蒙面,从未出现的方式,其他用户可以看到他们。

通过对obfuscation二手_ _ MySQL配置编辑器防止密码出现在.mylogin.cnf为防止无意中提供的明文和密码暴露了安全措施。例如,如果你的显示规则没有混淆my.cnf屏幕上的选项文件,它包含任何密码被人看到。与.mylogin.cnf,那不是真的。但混淆使用不会阻止一个坚定的攻击者,你不应该考虑它牢不可破。用户可以得到系统的管理权限在你的机器上访问你的文件,可以unobfuscate的mylogin.cnf。一些工作文件

登录文件的路径必须是可读可写的当前用户和访问其他用户。否则,_ _ MySQL配置编辑器忽略它,和客户端程序不使用它,要么。

援引_ _ MySQL配置编辑器这样地:

shell> mysql_config_editor [program_options] command [command_options]

如果登录路径文件不存在,_ _ MySQL配置编辑器创造了它

命令参数如下:

  • program_options包括一般_ _ MySQL配置编辑器选项

  • command指示执行什么动作mylogin.cnf。登录文件的路径。例如,set写一个登录文件的路径,去除删除的登录路径,和print显示登录路径高兴

  • command_options表示任何附加选项的具体命令,如登录路径名称和值使用的登录路径。

命令的名称在程序参数的设置位置是重要的。例如,这些命令行有相同的参数,而产生不同的结果:

shell> mysql_config_editor --help set
shell> mysql_config_editor set --help

第一个命令行显示一般_ _ MySQL配置编辑器帮助信息,而忽略了set命令。第二命令行显示一个特定的配置命令

假设你想建立一个client登录路径定义默认的连接参数,和一个额外的登录路径命名遥远的为连接到MySQL服务器的主机remote.example.com。你想记录如下:

  • 默认情况下,同一个用户名和密码的本地服务器localuserlocalpass

  • 用一个用户名和密码,远程服务器remoteuserremotepass

在设置登录路径.mylogin.cnf下面的文件,使用配置命令。在一行中输入每个命令,并输入相应的密码提示时:

shell> mysql_config_editor set --login-path=client
         --host=localhost --user=localuser --password
Enter password: enter password "localpass" here
shell> mysql_config_editor set --login-path=remote
         --host=remote.example.com --user=remoteuser --password
Enter password: enter password "remotepass" here

_ _ MySQL配置编辑器使用client登录路径,默认情况下,所以--login-path=client选项可以省略第一个命令不改变的影响。

看什么_ _ MySQL配置编辑器写入.mylogin.cnf文件,使用打印命令:

shell> mysql_config_editor print --all
[client]
user = localuser
password = *****
host = localhost
[remote]
user = remoteuser
password = *****
host = remote.example.com

这个print命令显示每个登录路径为一组线开始的一组标题显示在方括号中的登录路径名,随后登录路径的选项值。密码值是掩盖不显示为明文。

如果你不指定--all显示所有登录路径或--login-path=name显示指定的登录路径,打印命令显示client登录路径,默认情况下,如果有一个。

如前面的例子,登录路径文件可以包含多个登录路径。以这种方式,_ _ MySQL配置编辑器可以很容易地设置多个个性用于连接不同的MySQL服务器,或连接到指定的服务器,使用不同的帐户。任何这些可以选择的名字后使用--login-path当你调用一个客户端程序选项。例如,连接到远程服务器,使用此命令:

内核&#62;mysql --login-path=remote

在这里,MySQL读取[client][数据库]其他选项文件”选项组,和[client][数据库],和[remote]groups from the登录路径文件。

连接到本地服务器,使用此命令:

shell> mysql --login-path=client

因为MySQL读取clientMySQL默认的登录路径,--login-path在这种情况下,选择不添加任何东西。该命令是等价的这一:

内核&#62;mysql

从登录路径文件的优先选项,其他选项文件读取选项。从登录路径组中出现的登录路径文件优先选择从文件中读取后读选项前面出现组。

_ _ MySQL配置编辑器增加了登录路径的登录路径文件在命令你创建它们,那么你应该创建更通用的登录路径第一和更具体的路径后。如果你需要在文件移动的登录路径,你可以删除它,然后重新创建它添加它到最后。例如,一个client登录路径一般多是因为它是由所有客户端程序读取,而mysqldump登录路径是只读的mysqldump。指定的选项后替代选项前面指定,那么将登录路径的顺序clientmysqldump使能够mysqldump选项重写client选项

当你使用set命令_ _ MySQL配置编辑器创建一个登录路径,你不需要指定所有可能的选项值(主机名,用户名,密码,端口,插座)。只有那些值写入路径。任何缺失值要求后可以指定当你调用一个客户端路径连接到MySQL服务器,在其他选项文件或命令行。任何选项在命令行中指定重写那些登录路径文件或其他选项指定的文件。例如,如果在凭证remote登录路径也适用于主机remote2.example.com连接到主机上,这样服务器:

shell> mysql --login-path=remote --host=remote2.example.com

Mysql &#39; s Control Change Conference Options Options Options Options Options

_ _ MySQL配置编辑器支持以下选项,可前面的任何命令的命令行上指定。用于命令选项的说明,见mysql_config_editor命令和命令选项

_配置MySQL表4.17 _总编辑选项

格式描述
——调试编写调试日志
帮助显示帮助信息并退出
--详细详细模式
——版本显示版本信息并退出

  • --help-?

    显示帮助信息并退出

    看到一个特殊命令的帮助信息,调用_ _ MySQL配置编辑器如下,其中command不是一个命令帮助

    shell> mysql_config_editor command --help
    
  • --debug[=debug_options]- #debug_options

    写一个调试日志。一个典型的debug_options字符串D:T:O,file_name。默认值是D:t://TMP或MySQL配置,_ _ editor.trace

  • --verboseV

    详细模式。打印更多的信息关于程序干什么。该选项可以诊断问题,如果一个操作没有你预期的效果是有帮助的。

  • --versionV

    显示版本信息并退出

mysql_config_editor命令和命令选项

(二)允许这部分describes_ _ MySQL配置编辑器命令,并为每一个特定的命令选项,允许在命令行命令的名称。

此外,_ _ MySQL配置编辑器支持,可以使用前面的任何命令的常用选项。有关这些选项的说明,见Mysql &#39; s Control Change Conference Options Options Options Options Options

_ _ MySQL配置编辑器支持这些命令:

  • help

    显示帮助信息并退出。这个命令不需要以下选项。

    看到一个特殊命令的帮助信息,调用_ _ MySQL配置编辑器如下,其中command不是一个命令帮助

    shell> mysql_config_editor command --help
    
  • print [options]

    在没有混淆的形式打印的登录路径文件的内容,除了密码显示为*****

    默认的登录路径名client如果没有登录路径为。如果两全部--login-path给出了,全部优先

    这个print命令允许这些选项下面的命令名:

    • --help-?

      用于显示帮助信息print命令和退出

      看到一个一般的帮助信息,使用_ _ MySQL配置编辑器-帮助

    • --all

      打印在登录路径文件所有的登录路径的内容。

    • --login-path=nameGname

      打印指定的登录路径的内容。

  • remove [options]

    从登录路径文件删除的登录路径,或修改登录路径去除选项。

    这个命令会从登录路径,只有这样的选项是指定的--host——密码--port-插座,和--user选项如果没有这些选择了,去除删除整个登录路径。例如,该命令只删除了user选择从建立登录路径而不是整个mypath登录路径:

    内核&#62;mysql_config_editor remove --login-path=mypath --user

    这个命令会删除整个mypath登录路径:

    内核&#62;mysql_config_editor remove --login-path=mypath

    这个remove命令允许这些选项下面的命令名:

    • --help-?

      用于显示帮助信息remove命令和退出

      看到一个一般的帮助信息,使用_ _ MySQL配置编辑器-帮助

    • --hostH

      从登录路径删除主机名。

    • --login-path=nameGname

      删除或修改登录路径。默认的登录路径名client如果没有给出这个选项。

    • --passwordP

      从登录路径删除密码

    • --portP

      从登录路径删除TCP/IP端口号。

    • --socketS

      从登录路径删除UNIX套接字文件名。

    • --userU

      从登录路径删除用户名。

    • --warnW

      警告和提示用户确认,如果命令试图删除默认的登录路径(client)和--login-path=client未指定。默认是启用的;使用--skip-warn禁用它

  • reset [options]

    空的登录路径文件的内容。

    这个reset命令允许这些选项下面的命令名:

  • set [options]

    写一个登录的登录路径文件的路径。

    这个命令写入登录路径,只有这样的选项是指定的--host——密码--port-插座,和--user选项如果没有这些选择了,_ _ MySQL配置编辑器写的登录路径为空组

    这个set命令允许这些选项下面的命令名:

    • --help-?

      用于显示帮助信息set命令和退出

      看到一个一般的帮助信息,使用_ _ MySQL配置编辑器-帮助

    • --host=host_nameHhost_name

      写的登录路径的主机名。

    • --login-path=nameGname

      创建登录路径。默认的登录路径名client如果没有给出这个选项。

    • --passwordP

      提示密码写入登录路径。后_ _ MySQL配置编辑器显示提示,输入密码并回车。为了防止其他用户看到密码,_ _ MySQL配置编辑器没有回音呢

      指定一个空密码,按密码提示输入。由此产生的登录路径写入登录路径文件将包括这样的线:

      password =
      
    • --port=port_numPport_num

      TCP/IP端口号写的登录路径。

    • --socket=file_nameSfile_name

      UNIX套接字文件名写入登录路径。

    • --user=user_nameUuser_name

      写的登录路径用户名

    • --warnW

      警告和提示用户确认,如果命令试图重写现有的登录路径。默认是启用的;使用--skip-warn禁用它

4.6.8mysqlbinlog用于处理二进制日志文件的效用

服务器的二进制日志文件包含组成事件描述数据库内容的修改。服务器将这些文件以二进制格式。其内容以文本格式显示,使用mysqlbinlog效用。你也可以使用mysqlbinlog显示中继日志文件的复制设置一个从服务器,写的内容因为中继日志格式相同的二进制日志。二进制日志和中继日志中有进一步讨论5.4.4节,“二进制日志”,和第17.2.4,“复制继电器和状态日志”

援引mysqlbinlog这样地:

shell> mysqlbinlog [options] log_file ...

例如,要显示的二进制日志文件的内容为binlog.000003,使用此命令:

内核&#62;mysqlbinlog binlog.0000003

输出包括事件中binlog.000003。对于基于语句的日志,事件信息包括服务器的SQL语句,它执行的ID,时间戳当语句执行,它花了多少时间,等等。基于行的日志,事件表明连续变化而不是SQL语句。看到17.2.1,“复制格式”,有关测井模式信息

事件之前的头注释,提供额外的信息。例如:

# at 141
#100309  9:28:36 server id 123  end_log_pos 245
  Query thread_id=3350  exec_time=11  error_code=0

在the following the number第一在线at指示文件偏移量,或起始位置,在二进制日志文件的事件。

第二行开始的日期和时间显示在报表服务器上启动的事件的起源。为复制,传播到从服务器的时间戳。server id是的server_id的服务器,该事件源于价值。end_log_pos表示哪个事件开始(即,它是当前事件的结束位置)。thread_id表明该线程执行的事件。执行_小时在执行期间,在主服务器。对一个奴隶,是奴隶的主人减去开始执行时间结束执行时间的差异。差异是多少复制滞后于主的指示。error_code结果表明,从执行的事件。零意味着没有发生错误。

笔记

当使用事件群体事件的文件偏移量可以组合在一起,和事件的评论可能被组合在一起。不要把这些分组活动的空白文件偏移。

从输出mysqlbinlog可以重新执行(例如,通过使用它作为输入MySQL)重做日志语句。这是非常有用的服务器崩溃后的恢复操作。其他用途的例子,后来在这一节中,看到的讨论7.5节,“时间点(增量)使用二进制日志恢复”

通常,你使用mysqlbinlog直接读取二进制日志文件并将其应用到本地MySQL服务器。它也可以从远程服务器读取二进制日志的使用--read-from-remote-server选项读取远程二进制日志,连接参数选项可以用来说明如何连接到服务器。这些选项--host--password--port--protocol--socket,和--user他们是被忽视的;除非你也用--read-from-remote-server选项

当运行mysqlbinlog对一个大的二进制日志,注意文件系统有足够的空间产生的文件。配置目录mysqlbinlog临时文件的使用,使用TMPDIR环境变量

mysqlbinlog支持以下选项,可以在命令行中指定或[mysqlbinlog][顾客]选择一组文件。有关选项文件mysql程序使用,看第4.2.6、“使用选项文件”

表4.18 mysqlbinlog选项

格式描述介绍远离的
——Base64编码输出使用Base-64编码二进制日志打印
——绑定地址使用指定的网络接口连接到MySQL服务器
——binlog行事件的最大尺寸二进制日志大小的最大事件
- Character - Sets - dir目录中的字符集设置
--连接服务器ID用于测试和调试。看到适用的默认值和其他资料的文本。
数据库只是这个数据库列表条目
——调试编写调试日志
——调试检查打印调试信息时,程序退出
——调试信息打印调试信息,内存和CPU统计信息时,程序退出
-默认的认证身份验证插件的使用
——违约额外的文件阅读除了常用的选项文件命名选项文件
-默认文件只读文件命名选项
-默认组后缀选项组后缀值
——禁用日志本禁用二进制日志
我gtids拒绝……没有任何的群展上提供的gtid
力如果开放即使开启或没有正确关闭读取二进制日志文件
力阅读如果mysqlbinlog读取二进制日志事件,它不承认,它会显示一个警告
得到的公共密钥服务器RSA公钥从服务器请求8.0.3
帮助显示帮助信息并退出
- hexdump显示在评论日志进制转储
——主机在给定的主机连接到MySQL服务器
-幂零导致服务器使用幂等模式在处理二进制日志更新本次会话的唯一
gtids include……只显示在gtid组集提供
——局部荷载准备在指定的目录中加载数据文件的本地临时文件
——登录路径读取登录路径选项。mylogin.cnf
没有默认值不看选项文件
——偏移跳过第n项的日志
——密码连接到服务器时使用的密码
- Plujing - dir .插件的安装目录
——端口TCP/IP连接的端口号
印刷缺陷打印的默认选项
打印数据表打印数据表
——协议连接协议使用
——原写事件原(二进制)输出文件格式
从远程主机读读取一个MySQL的主人而不是阅读本地日志文件的二进制日志
从远程服务器读取读取MySQL服务器的二进制日志而不是本地的日志文件
——结果文件直接输出到指定的文件
——改写DB创建数据库时重写规则打日志写的基于行的格式返回。可以多次使用。
-安全- auth不要发送密码到服务器的旧(老)格式8.0.3
——服务器ID只提取事件的服务器具有给定的服务器ID创建
——服务器ID位告诉mysqlbinlog如何解释服务器ID二进制日志时,日志是由其服务器ID位设置为小于最大mysqld写;只有mysqlbinlog MySQL集群版本支持
--公共密钥服务器路径路径名的文件含有RSA公钥8.0.4
——设置字符集到输出添加一组charset_name声明的名字
——共享内存库的名字使用共享内存连接的共享内存名
-短裤只显示报表中包含的日志
gtids跳……不打印任何gtids;使用这种写作从含gtids二进制日志转储文件时。
-插座连接到本地主机,Unix套接字文件使用
SSL作为…文件包含受信任的SSL证书颁发机构的列表
——SSL capath目录包含受信任的SSL证书颁发机构的证书文件
——SSL证书文件包含X509证书
- SSL密码允许连接加密的密码列表
SSL证书文件包含证书吊销列表
crlpath——SSL目录包含证书吊销列表文件
——SSL FIPS模式是否启用FIPS模式在客户端8.0.11
SSL密钥…文件包含X509关键
——SSL模式到服务器的连接安全状态
-启动读取二进制日志从第一事件时间戳等于或晚于datetime参数
——起始位置从第一个事件的位置等于或大于参数读取二进制日志
-停止在第一个事件时间戳大于或等于datetime参数停止读取二进制日志
-停止-永远在看完最后的二进制日志文件连接到服务器
——永不停止的从属服务器ID从服务器ID报告连接到服务器时
不停的位置在第一个事件的位置等于或大于参数停止读取二进制日志
TLS版本……加密连接许可协议
——最后的日志不停的最后请求的二进制日志从一个MySQL服务器,而是继续打印结束最后的二进制日志
用户MySQL用户名连接到服务器时使用
--详细重建行事件的SQL语句
——————验证校验和binlog在二进制日志校验和验证
——版本显示版本信息并退出

你也可以设置以下变量的使用--var_name=value语法:

  • open_files_limit

    指定要打开的文件描述符的数量储备。

你可以管的输出mysqlbinlog进入MySQL客户端执行包含在二进制日志中的事件。这种技术是用来从一个崩溃时,你有一个旧的备份恢复(见7.5节,“时间点(增量)使用二进制日志恢复”)。例如:

shell> mysqlbinlog binlog.000001 | mysql -u root -p

shell> mysqlbinlog binlog.[0-9]* | mysql -u root -p

如果生成的报表mysqlbinlog可能包含BLOB值,这可能会导致问题时MySQL处理。在这种情况下,调用MySQL--binary-mode选项

你也可以重定向输出mysqlbinlog一个文本文件,如果需要修改语句日志第一(例如,删除语句,你不想因为某些原因执行)。编辑后的文件,执行它所包含的用它作为输入的语句MySQL程序:

shell> mysqlbinlog binlog.000001 > tmpfile
shell> ... edit tmpfile ...
shell> 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流程执行,你要处理所有的二进制日志的内容。这里是这样做的一个方法:

shell> 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,还可以供应多个二进制日志文件mysqlbinlog采用内核管输入流。压缩的二进制日志文件可以解压,直接提供档案mysqlbinlog。在这个例子中,binlog-files_1.gz包含用于处理多个二进制日志文件。管道中提取内容binlog-files_1.gz,管道的二进制日志文件mysqlbinlog作为标准输入,输出和管mysqlbinlog进入MySQL客户端执行:

shell> gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot  -p

您可以指定多个存档文件,例如:

shell> gzip -cd binlog-files_1.gz binlog-files_2.gz | ./mysqlbinlog - | ./mysql -uroot  -p

用于流式输入,不使用--stop-position,因为mysqlbinlog不能确定最后的日志文件,将这个选项。

LOAD DATA INFILE操作。mysqlbinlog可以产生输出,再现LOAD DATA INFILE没有原始数据文件的操作。mysqlbinlog拷贝数据到一个临时文件并写入LOAD DATA LOCAL INFILE声明指文件。默认的位置所在的目录,这些文件写的是特定的系统。指定一个明确的目录,使用--local-load选项

因为mysqlbinlog转换LOAD DATA INFILE报表LOAD DATA LOCAL INFILE报表(即,它增加了当地),客户端和服务器都使用过程的陈述必须配置的LOCAL能力使。看到第6.1.6,“负荷数据的本地“安全问题

警告

创建临时文件LOAD DATA LOCAL语句自动删除,因为他们需要直到你真正执行这些语句。你应该在你之后不再需要声明自己的日志删除临时文件。该文件可以在临时文件目录中找到,有original_file_name-#-#

4.6.8.1 mysqlbinlog进制转储格式

这个--hexdump选择的原因mysqlbinlog产生的二进制日志内容十六进制转储:

shell> 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 server id 1  end_log_pos 98# Position  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 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#       at startupROLLBACK;

十六进制转储输出目前包含以下列表中的元素。这种格式被改变。关于二进制日志格式的更多信息,参见内部:MySQL的二进制日志

  • Position字节的位置:在日志文件。

  • Timestamp:事件的时间戳。示例中所示,5C是FC 43”是表示'051024 17:24:13'十六进制

  • Type标准代码

  • Master ID:对创建事件的主服务器ID。

  • Size在“size字节的事件。

  • Master Pos:在原来的主日志文件的下一个事件的位置。

  • Flags事件标志的值

4.6.8.2 mysqlbinlog行事件显示

下面的例子说明如何mysqlbinlog显示行的事件,指定数据的修改。这些对应于事件的WRITE_ROWS_EVENTupdate_rows_event,和DELETE_ROWS_EVENT类型代码。这个--base64-output=DECODE-ROWS--verbose选项可以用来影响行事件输出。

假设服务器使用基于行的二进制日志,你执行以下语句序列:

CREATE TABLE t
(
  id   INT NOT NULL,
  name VARCHAR(20) NOT NULL,
  date DATE NULL
) ENGINE = InnoDB;

START TRANSACTION;
INSERT INTO t VALUES(1, 'apple', NULL);
UPDATE t SET name = 'pear', date = '2009-01-01' WHERE id = 1;
DELETE FROM t WHERE id = 1;
COMMIT;

默认情况下,mysqlbinlog显示行项目编码为Base-64字符串BINLOG声明.省略多余的线条,由前面的语句序列产生行事件的输出看起来像这样:

内核&#62;mysqlbinlog log_file...# at 218#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_FBINLOG 'fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ=='/*!*/;...# at 302#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_FBINLOG 'fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP'/*!*/;...# at 400#080828 15:03:08 server id 1  end_log_pos 442   Delete_rows: table id 17 flags: STMT_END_FBINLOG 'fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP'/*!*/;

见行事件的形式评论伪SQL报表,运行mysqlbinlog--verboseV选项输出将包含线开始###

内核&#62;mysqlbinlog -v log_file...# at 218#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_FBINLOG 'fAS3SBMBAAAALAAAANoAAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=fAS3SBcBAAAAKAAAAAIBAAAQABEAAAAAAAEAA//8AQAAAAVhcHBsZQ=='/*!*/;### INSERT INTO test.t### SET###   @1=1###   @2='apple'###   @3=NULL...# at 302#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_FBINLOG 'fAS3SBMBAAAALAAAAC4BAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=fAS3SBgBAAAANgAAAGQBAAAQABEAAAAAAAEAA////AEAAAAFYXBwbGX4AQAAAARwZWFyIbIP'/*!*/;### UPDATE test.t### WHERE###   @1=1###   @2='apple'###   @3=NULL### SET###   @1=1###   @2='pear'###   @3='2009:01:01'...# at 400#080828 15:03:08 server id 1  end_log_pos 442   Delete_rows: table id 17 flags: STMT_END_FBINLOG 'fAS3SBMBAAAALAAAAJABAAAAABEAAAAAAAAABHRlc3QAAXQAAwMPCgIUAAQ=fAS3SBkBAAAAKgAAALoBAAAQABEAAAAAAAEAA//4AQAAAARwZWFyIbIP'/*!*/;### DELETE FROM test.t### WHERE###   @1=1###   @2='pear'###   @3='2009:01:01'

指定--verboseV两次也显示数据类型和每一列的元数据。输出将包含一个额外的评论以下各列的变化:

shell> mysqlbinlog -vv log_file
...
# at 218
#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: 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 */
...
# at 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
'/*!*/;
### UPDATE 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 */
...
# at 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选项。This is similar to--base64-output=NEVER但不退出一个错误如果一行事件被发现。结合--base64-output=DECODE-ROWS--verbose提供了一个便捷的方式看到行事件仅作为SQL语句:

内核&#62;mysqlbinlog -v --base64-output=DECODE-ROWS log_file...# at 218#080828 15:03:08 server id 1  end_log_pos 258   Write_rows: table id 17 flags: STMT_END_F### INSERT INTO test.t### SET###   @1=1###   @2='apple'###   @3=NULL...# at 302#080828 15:03:08 server id 1  end_log_pos 356   Update_rows: table id 17 flags: STMT_END_F### UPDATE test.t### WHERE###   @1=1###   @2='apple'###   @3=NULL### SET###   @1=1###   @2='pear'###   @3='2009:01:01'...# at 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='pear'###   @3='2009:01:01'
笔记

你不应该压制BINLOG如果你打算重新执行语句mysqlbinlog输出

生成的SQL语句--verbose行事件比相应的更加可读BINLOG声明.然而,他们并不完全对应,产生事件的原始SQL语句。以下的限制:

  • 原列名丢失和替换的@N,在那里N是一列数

  • 在二进制日志字符集的信息不可用,从而影响字符串列显示:

    • 没有区分相应的二进制和非二进制字符串类型之间(BINARYCHARVARBINARYVARCHARBLOBTEXT)。使用的输出数据类型字符串固定长度字符串VARSTRING可变长度的字符串

    • 多字节字符集,每个字符的字节数的最大值不在二进制日志,所以字符串类型的长度是以字节而不是字符。例如,STRING(4)将作为数据类型的值从这些列类型:

      (四)字符的字符集latin1char(二)UCS2字符集
    • 由于存储格式的事件类型UPDATE_ROWS_EVENTUPDATE报表显示的哪里前面的条款SET条款.

行适当的解释需要从事件信息的二进制日志的格式描述事件的开始。因为mysqlbinlog不知道是否提前日志的其余部分包含行事件,默认情况下它显示的格式描述事件的使用BINLOG在输出的初始部分声明。

如果二进制日志不包含任何事件需要BINLOG声明(即不连续的事件),--base64-output=NEVER选项可以用来防止该头文件被写。

4.6.8.3使用mysqlbinlog备份二进制日志文件

默认情况下,mysqlbinlog读取二进制日志文件和文本格式显示它们的内容。这使您可以检查事件在更容易重新执行文件(例如,通过使用输入输出MySQLmysqlbinlog可以读取日志文件直接从本地文件系统,或与--read-from-remote-server选项,它可以连接到一个服务器,服务器的二进制日志的内容和要求。mysqlbinlog写文本输出到标准输出,或指定文件的价值--result-file=file_name如果期权是期权

mysqlbinlog可以读写二进制日志文件和包含是相同内容的新文件,二进制格式,而不是文本格式。这种能力使你轻松备份二进制日志的原始格式。mysqlbinlog可以使静态备份,备份日志文件集和停止时的最后一个文件结束。它也可以使一个连续的(直播)备份,保持连接到服务器上的日志文件达到终点时,继续复制新的事件,它们产生的。在连续的备份操作,mysqlbinlog直到连接(例如,当服务器的出口)或mysqlbinlog是的。当连接之时mysqlbinlog不等待并重试连接,不像一个奴隶复制服务器。服务器重新启动后继续活着的备份,你必须重新启动mysqlbinlog

二进制日志备份时需要调用mysqlbinlog用最小的两个选项:

  • 这个--read-from-remote-server(或R期权tells)mysqlbinlog连接到服务器并请求其二进制日志。(这是一个类似于奴隶的复制服务器连接到主服务器。)

  • 这个--raw选项告诉mysqlbinlog写原(二进制)的输出,而不是文本输出。

随着--read-from-remote-server,这是常见的指定其他选项:--host指示在服务器上运行,你可能还需要指定连接选项,如--user--password

其他几个选项都与有用--raw

备份服务器的二进制日志文件mysqlbinlog,您必须指定文件名,实际上存在于服务器。如果你不知道名字,连接到服务器并使用SHOW BINARY LOGS声明看目前的名字。假设语句产生输出:

MySQL的&#62;SHOW BINARY LOGS;--------------- ----------- | log_name | file_size | --------------- ----------- | binlog.000130 | 27459 | | binlog.000131 | 13719 | | binlog.000132 | 43268 | --------------- -----------

有了这些信息,你可以使用mysqlbinlog备份二进制日志到当前目录如下(在一行中输入每个命令):

  • 将静态备份binlog.000130通过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--原料--永不停止binlog.000130

    --stop-never,不必指定--to-last-log读到最后一个日志文件,因为这种选择是隐含的。

输出文件命名

没有--rawmysqlbinlog生成文本输出和--result-file选项,如果给定的名称指定单个文件的输出写入。与--rawmysqlbinlog写每个日志文件从服务器传送一个二进制输出文件。默认情况下,mysqlbinlog与原始的日志文件名称相同的当前目录写入文件。修改输出文件名,使用--result-file选项结合--raw,的--result-file期权价值作为前缀,修改输出文件名。

假设一个服务器目前有二进制日志文件名binlog.000999和上。如果你使用mysqlbinlog——原备份文件的--result-file选项生成的输出文件名如下表所示。您可以将文件写入一个特定的目录开始--result-file与目录路径值。如果--result-file价值只包括一个目录名,价值必须结束的路径分隔符。如果存在输出文件被覆盖。

--result-file选项输出文件名
--result-file=xxbinlog.000999和上
--result-file=/tmp//tmp/binlog.000999和上
--result-file=/tmp/x/tmp/xbinlog.000999和上
例如:备份和恢复就mysqlbinlog

下面的例子描述了一个简单的场景,展示了如何使用mysqldumpmysqlbinlog在备份服务器的数据和二进制日志,以及如何在数据丢失时使用备份来恢复服务器。该示例假定服务器是运行在主机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_nameU P根

你会发现它更容易复制备份文件(转储文件和二进制日志文件)到服务器主机使它更容易执行恢复操作,或者如果MySQL不允许远程root访问

4.6.8.4指定mysqlbinlog服务器ID

当调用的--read-from-remote-server选项,mysqlbinlog连接到MySQL服务器,指定标识本身服务器ID,并请求从服务器的二进制日志文件。你可以使用mysqlbinlog从服务器请求日志文件的几种方法:

  • 指定一个显式命名的文件集:每个文件,mysqlbinlog连接问题Binlog dump命令。服务器发送文件和断开。有每个文件的一个连接。

  • 指定的文件开始,--to-last-logmysqlbinlog连接问题Binlog dump对所有文件的命令。服务器发送的所有文件和断开。

  • 指定的文件开始,--stop-never(这意味着--to-last-log):mysqlbinlog连接问题Binlog dump对所有文件的命令。服务器发送的所有文件,但不将最后一个后断开。

--read-from-remote-server只有,mysqlbinlog连接使用0服务器ID,并告诉服务器断开发出最后请求的日志文件后。

--read-from-remote-server--stop-nevermysqlbinlog连接使用一个非零的服务器ID,所以服务器不中断发送的上一个日志文件后。服务器ID的默认值是1,但这是可以改变的--connection-server-id

因此,对请求文件的第一个方面,因为服务器断开mysqlbinlog指定0的服务器ID。它不会断开--stop-never是因为mysqlbinlog指定一个非零的服务器ID。

4.6.9mysqldumpslow总结慢查询日志文件

mysql的慢查询日志包含有关查询,需要很长的时间来执行信息(见第5.4.5、“慢查询日志”mysqldumpslow解析MySQL慢查询日志文件并将其内容摘要。

通常,mysqldumpslow组查询,相似数量的特定值和字符串数据值。IT摘要这些值N“S”When display summary Outturn .the-an选项可以用来修改值的抽象行为。

援引mysqldumpslow这样地:

shell> mysqldumpslow [options] [log_file ...]

mysqldumpslow(c)支持各种备选方案。

表4.19 mysqldumpslow选项

格式描述
-在不抽象所有数字和字符串的
n至少指定数字的抽象的数字
——调试写入调试信息
G只考虑匹配模式报表
帮助显示帮助信息并退出
H在日志文件的名称服务器主机名
-服务器实例的名称
L不要从总时间减去锁定时间
R颠倒排序顺序
S如何排序输出
T只显示第一个查询
--详细详细模式

  • --help

    显示帮助信息并退出

  • -a

    不抽象所有号码N和字符串“S”

  • --debugD

    在调试模式运行

  • -g pattern

    只考虑查询匹配(grep式)模式

  • -h host_name

    对于MySQL服务器主机名*-slow.log文件名。该值可以包含通配符。默认值是*(全局比赛)

  • -i name

    服务器实例的名称(如果使用mysql.server启动脚本)

  • -l

    不要从总时间减去锁定时间。

  • -n N

    至少在抽象的数字N位内的名字

  • -r

    Sort Order .

  • -s sort_type

    如何排序输出。价值sort_type应该从以下列表中选择:

    • t:查询时间或平均查询时间排序

    • lAl:通过锁定时间或平均锁定时间排序

    • r应收账:按行发送或发送平均行

    • c:分类计数

    默认情况下,mysqldumpslow平均查询时间排序(相当于-s at

  • -t N

    只显示第一N在输出查询

  • --verboseV

    详细模式。打印更多的信息关于程序干什么。

示例用法:

shell> mysqldumpslow

Reading mysql slow query log from /usr/local/mysql/data/mysqld51-apple-slow.log
Count: 1  Time=4.32s (4s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t2 select * from t1

Count: 3  Time=2.53s (7s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t2 select * from t1 limit N

Count: 3  Time=2.13s (6s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t1 select * from t1

4.7 MySQL程序开发工具

本节介绍了一些工具,你可能会发现有用的时候MySQL程序开发。

在shell脚本,您可以使用my_print_defaults程序解析选项文件看看选项将由一个给定的程序使用。下面的示例显示输出my_print_defaults可能产生时,要求显示在选项[client][数据库]群组

shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash

注:开发商:选择文件处理是处理在相应组的所有选项前的任何命令行参数在C客户端库实现。这对于程序使用一个选项,多次指定的最后一个实例。如果你有一个C或C++程序处理多次指定的选项这种方式但不读选项文件,你需要增加2线给它的能力。检查任何标准的MySQL客户端的源代码,看看该怎么做。

其他几种语言界面是基于C的MySQL客户端库,他们中的一些人提供了一种方法来访问选项文件内容。这些包括Perl和Python。详情见您的首选接口文档。

4.7.1_配置MySQL-编译客户端显示选项

_配置MySQL为您提供编译你的MySQL客户端并连接到MySQL的有用信息。这是一个shell脚本,那么只有在UNIX和类UNIX系统。

笔记

pkg-config可以用来作为一种替代_配置MySQL获取信息如编译器或链接库需要编译MySQL的应用。有关更多信息,参见第27.7.4.2,“楼C API的客户端程序,使用pkg-config”

_配置MySQL(c)支持各种备选方案。

  • --cflags

    C编译器找到包含文件和关键的编译器和编译时定义的libmysqlclient图书馆选择返回绑定到特定的编译器,用于当文库的建立和可能与你自己的编译器设置冲突。使用--include更多便携式选项只包含包含路径。

  • --cxxflags

    喜欢--cflagsC编译器,但旗

  • --include

    编译器选项找到MySQL include文件。

  • --libs

    要求用MySQL客户端库链接库和选项。

  • --libs_r

    需要与线程安全的MySQL客户端库链接库和选项。在MySQL 8中,所有的客户端库是线程安全的,所以不需要使用这个选项。这个--libs可以用在所有的情况下。

  • --plugindir

    默认的插件目录的路径名称,定义在配置MySQL。

  • --port

    默认的TCP / IP端口号定义在配置MySQL。

  • --socket

    默认的UNIX套接字文件,定义在配置MySQL。

  • --variable=var_name

    显示指定的配置变量的值。被允许var_namepkgincludedir(头文件目录),pkglibdir(图书馆目录),和plugindir(the plugin目录)。

  • --version

    对于MySQL版本号。

如果你调用_配置MySQL没有选择,它显示一个列表中的所有选项,支持,和他们的价值观:

shell> mysql_config
Usage: /usr/local/mysql/bin/mysql_config [options]
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]
  --version        [5.8.0-m17]
  --variable=VAR   VAR is one of:
          pkgincludedir [/usr/local/mysql/include]
          pkglibdir     [/usr/local/mysql/lib]
          plugindir     [/usr/local/mysql/lib/plugin]

你可以使用_配置MySQL在命令行中使用引号包含的输出,它产生特定的选项。例如,编译和链接MySQL客户端程序,使用_配置MySQL如下:

gcc -c `mysql_config --cflags` progname.c
gcc -o progname progname.o `mysql_config --libs`

4.7.2my_print_defaults从选项文件显示选项

my_print_defaults显示在选项文件”选项组的选项。输出显示哪些选项将被程序读取指定选项组。例如,在mysqlcheck程序读取[mysqlcheck][顾客]选项组。看到什么选择在标准中选择文件组,调用my_print_defaults这样地:

shell> my_print_defaults mysqlcheck client
--user=myusername
--password=password
--host=localhost

输出包括选项,每行一个,在形式上,他们将在命令行中指定。

my_print_defaults支持以下选项

4.7.3resolve_stack_dump解决数字堆栈转储符号

resolve_stack_dump解决数字堆栈转储符号。

援引resolve_stack_dump这样地:

shell> resolve_stack_dump [options] symbols_file [numeric_dump_file]

符号文件应该包括从输出nm~0.54 mysqld - Sort命令。数字转储文件应该包含一个数字的堆栈跟踪mysqld。如果没有数字转储文件被命名为在命令行中,堆栈是从标准输入读取。

resolve_stack_dump支持以下选项

有关更多信息,参见第28.5.1.5,使用堆栈跟踪”

4.8杂项程序

4.8.1lz4_decompress-解压缩mysqlpump lz4压缩输出

这个lz4_decompress实用的解压缩mysqlpump输出采用lz4压缩了。

笔记

如果MySQL的配置与-DWITH_LZ4=system选项,lz4_decompress不建。在这种情况下,系统lz4命令可以用来代替

援引lz4_decompress这样地:

shell> lz4_decompress input_file output_file

例子:

shell> mysqlpump --compress-output=LZ4 > dump.lz4
shell> lz4_decompress dump.lz4 dump.txt

看到一个帮助信息,调用lz4_decompress不带参数

减压mysqlpumpzlib压缩输出,使用zlib_decompress。看到4.8.4“,”zlib_decompressmysqlpump zlib压缩-解压缩输出”

4.8.2perror解释错误代码

perror显示MySQL或操作系统错误代码错误信息。援引perror这样地:

shell> perror [options] errorcode ...

perror试图了解它的参数可以灵活。例如,对于ER_WRONG_VALUE_FOR_VAR误差,perror了解这些参数:1231001231MY-1231,或我的001231,或ER_WRONG_VALUE_FOR_VAR

内核&#62;perror 1231MySQL错误代码my-001231(er_wrong_value_for_var):变量&#39;&#39;%1 - .64s不能设置为“%的价值.200s”

如果一个错误号码的范围是在MySQL数据库和操作系统错误重叠,perror2 . Dispuys both error messages:

shell> perror 1 13
OS error code   1:  Operation not permitted
MySQL error code MY-000001: Can't create/write to file '%s' (OS errno %d - %s)
OS error code  13:  Permission denied
MySQL error code MY-000013: Can't get stat of '%s' (OS errno %d - %s)

获得一个MySQL集群的错误代码错误信息,调用perror--ndb选项:

内核&#62;perror --ndb errorcode

系统错误消息的含义可能依赖于你的操作系统。一个特定的错误代码可能意味着不同的操作系统上不同的东西。

perror(c)支持各种备选方案。

  • --help--info--?

    显示帮助信息并退出

  • --ndb

    打印错误消息,MySQL集群的错误代码。

  • --silentS

    寂静的模式。print only the错误消息。

  • --verboseV

    详细模式。打印错误代码和错误信息。这是默认的行为。

  • --versionV

    显示版本信息并退出

4.8.3resolveip-解析主机名到IP地址或反之亦然

这个resolveip实用解析主机名到IP地址,反之亦然。

援引resolveip这样地:

shell> resolveip [options] {host_name|ip-addr} ...

resolveip(c)支持各种备选方案。

  • --help--info-?-I

    显示帮助信息并退出

  • --silentS

    静音模式。产生更少的输出。

  • --versionV

    显示版本信息并退出

4.8.4zlib_decompress-解压缩mysqlpump zlib压缩输出

这个zlib_decompress实用的解压缩mysqlpump输出,使用zlib压缩了。

笔记

如果MySQL的配置与-DWITH_ZLIB=system选项,zlib_decompress不建。在这种情况下,系统OpenSSL库命令可以用来代替

援引zlib_decompress这样地:

shell> zlib_decompress input_file output_file

例子:

shell> mysqlpump --compress-output=ZLIB > dump.zlib
shell> zlib_decompress dump.zlib dump.txt

看到一个帮助信息,调用zlib_decompress不带参数

减压mysqlpumplz4压缩输出,使用lz4_decompress。看到4.8.1“,”lz4_decompress-解压缩mysqlpump lz4压缩输出”

4.9 MySQL程序的环境变量

本节列出环境变量,直接或间接使用的MySQL。这些也可以在本手册中的其他地方找到的。

在命令行选项优先选择文件和环境变量指定的值,并选择文件的价值优先于环境变量的值。在许多情况下,最好使用一个选项文件中的环境变量修改MySQL的行为。看到第4.2.6、“使用选项文件”

变量描述
AUTHENTICATION_PAM_LOG帕姆身份验证插件的调试日志记录设置。
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.5.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给出了
MYSQL_HOME路径的目录服务器的特定my.cnf文件驻留
MYSQL_HOST使用的默认主机名MySQL命令行客户端
MYSQL_OPENSSL_UDF_DH_BITS_THRESHOLD最大密钥长度CREATE_DH_PARAMETERS()。看到第12.18.2,“企业加密使用的例子”
MYSQL_OPENSSL_UDF_DSA_BITS_THRESHOLD最大DSA密钥长度CREATE_ASYMMETRIC_PRIV_KEY()。看到第12.18.2,“企业加密使用的例子”
MYSQL_OPENSSL_UDF_RSA_BITS_THRESHOLD最大的RSA密钥长度CREATE_ASYMMETRIC_PRIV_KEY()。看到第12.18.2,“企业加密使用的例子”
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_PORTX插件默认的TCP / IP端口号。
MYSQLX_UNIX_PORTX插件默认UNIX套接字文件名;用于连接localhost
NOTIFY_SOCKET插座使用的mysqld沟通系统
PATH由内核用来找到MySQL程序。
PKG_CONFIG_PATH位置mysqlclient.pcpkg-config文件请注意如下表
TMPDIR目录中创建临时文件
TZ这应该被设置为本地时区。看到第b.5.3.7,“时区”问题
UMASK用户创建的文件模式创建文件时。请注意如下表。
UMASK_DIR用户目录的创建方式创建目录时。请注意如下表。
USER当连接到Windows默认的用户名mysqld

的信息MySQL历史文件,看第4.5.1.3,“MySQL日志”

MYSQL_TEST_LOGIN_FILE是登录路径文件的路径名(创建的文件_ _ MySQL配置编辑器)。如果不设置,默认值是%APPDATA%\MySQL\.mylogin.cnf目录在Windows和美元/ mylogin.cnf回家。在非Windows系统。看到4.6.7“,”_ _ MySQL配置编辑器MySQL的配置实用程序”

这个MYSQL_TEST_TRACE_DEBUGmysql_test_trace_crash变量控制测试协议跟踪客户端插件,如果MySQL与插件启用了。有关更多信息,参见第28.2.4.11.1,“使用测试协议跟踪插件”

默认的UMASKumask _目录06400750,分别。MySQL的假设值UMASKumask _目录在八进制如果一开始是10。例如,设置UMASK=0600相当于UMASK=384因为0600的八进制十进制的384。

这个UMASKumask _目录变量,尽管他们的名字,作为模式,没有面具:

  • 如果UMASK是集,mysqld使用($UMASK | 0600)对于文件的创建模式,使新创建的文件的范围从0600到0666的一个模式(所有值八进制)。

  • 如果UMASK_DIR是集,mysqld使用($UMASK_DIR | 0700)至于目录创建的基本模式,然后是和ED~(0666 umask(美元),使新创建的目录范围内的一个模式从之前到0777(所有值八进制)。该操作可以将读和从目录模式的写权限,但没有执行权限。

它可能需要设置PKG_CONFIG_PATH如果你使用pkg-config建立MySQL程序。看到第27.7.4.2,“楼C API的客户端程序,使用pkg-config”