MySQL8|使用程序和工具详解

在上一章中,我们安装了 MySQL 8,并了解了安装 MySQL 8 的其他方法。我们还学习了如何迁移和升级到 MySQL 8。以下是前一章中解释的摘要主题:

在本章中,读者将了解 MySQL 8 中提供的各种程序和工具。读者还将了解如何使用 MySQL 8 中的程序和工具。读者将了解如何使用 MySQL 8 中使用的命令行程序。读者将学习该程序的语法,以及如何将其与特定选项一起使用以执行特定操作。以下是本章所涵盖主题的摘要。

  • MySQL 8 程序概述
  • MySQL 8 命令行程序
  • MySQL 8 客户端程序
  • MySQL 8 管理程序
  • MySQL 8 环境变量
  • MySQL 图形用户界面工具

MySQL 安装中有各种不同的程序。本节简要概述了这些计划。接下来的章节将详细描述每一个函数,并且描述将有自己的调用语法和执行操作的选项。

大多数 MySQL 发行版将拥有所有这些程序,除了那些特定于平台的程序;例如,Windows 中未使用服务器启动脚本。RPM(Red hat package manager)发行版非常专业,是发行版中所有可用程序的例外情况的一部分。RPM 发行版有什么特别之处?那么,他们对不同的操作有不同的程序,;例如,将为服务器执行一个程序,为客户端执行第二个程序,依此类推。如果您的安装中缺少一个或多个程序,那么不要担心。请参见第 2 章安装和升级 MySQL 8,了解可用发行版的类型以及其中包含的内容。在这种情况下,您拥有的发行版可能不包括所有的程序,您需要安装一个额外的软件包。

MySQL 8 程序中的每个程序都有自己的选项,但大多数程序都有一个--help 选项,可用于检索程序所有选项的描述。例如,在命令行上尝试mysql --help(即 shell 或命令提示符)。

前几行的描述将包含安装的 MySQL 的具体版本信息以及操作系统和许可证信息。下一行将以Usage : mysql [OPTIONS] [database]开始,即程序命令用法的语法,后面的几行将根据用法说明描述可与它们一起使用的选项。这只是我们将要看到的内容的一瞥:带有选项的程序细节,它们的用法和默认选项,覆盖各种命令行程序、客户端程序、管理程序上的默认选项值,等等。

有关在命令行中执行程序和指定程序选项的详细信息,请参阅MySQL 8 命令行程序部分,后面是安装、客户端和服务器启动以及其他工具的列表。

让我们先从 MySQL 服务器程序开始!!

mysqld是第一个程序,也被认为是 MySQL 安装的主程序。它与多个脚本配合使用,以帮助启动和停止服务器。以下是根据其操作范围划分的项目类别:

  • 启动程序
  • 安装/升级计划
  • 客户端程序
  • 行政和公用事业计划

启动程序是 MySQL 启动期间使用的程序,并根据配置启动所需的后台服务。

  • mysqld:这是 MySQL 服务器守护进程。所有其他客户端程序都使用此服务器程序与数据库交互。除维护外,它必须一直启动并运行
  • mysqld_safe:这是服务器启动程序脚本之一,试图启动mysqld程序。
  • mysql.server:在这些系统中使用的另一个服务器启动程序脚本使用包含脚本的 V 型运行目录。它在特定的运行级别启动系统服务。调用mysqld_safe启动 MySQL 服务器。
  • mysqld_multi:顾名思义,这是一个启动程序脚本,用于启动或停止系统上的多台 MySQL 服务器。

此处列出了与安装和升级操作有关的程序及其各自的用途:

  • comp_err:此程序用于从错误源文件编译错误消息文件,用于 MySQL 构建或安装操作。
  • mysql_secure_installation:此程序用于更新安全配置,以便在安装 MySQL 时启用安全。
  • mysql_ssl_rsa_setup:顾名思义,此程序用于生成SSL证书和密钥文件以及RSA key-pair文件,如果这些文件丢失并且需要支持安全连接。
  • mysql_tzinfo_to_sql:该程序获取主机系统区域信息数据库的内容(描述时区的文件),并将信息加载到 MySQL 的时区表中。
  • mysql_upgrade:顾名思义,用于升级操作。它会检查是否存在任何不相容性,并在必要时进行维修。它还使用 MySQL 新版本中的任何更改更新 grant 表。

客户端程序是通常用于连接 MySQL 数据库并执行不同查询操作的程序之一:

  • mysql:这是最常用的程序。它是一个交互式命令行工具,用于直接执行 SQL 语句或在批处理模式下使用文件。详细信息将在下一节MySQL 8 命令行程序中介绍。
  • mysqladmin:该程序负责执行各种管理操作,如创建或删除数据库、刷新表、重新加载授权表、重新打开日志文件等。该程序还用于从服务器检索信息,如版本、进程和状态。
  • mysqlcheck:这是用于维护表格、执行分析、检查、修复和优化表格的客户端程序。
  • mysqldump:这是将 MySQL 数据库转储到文本、SQL 或 XML 格式文件中的客户端程序。它通常被称为数据库备份程序。
  • mysqlimport:这是使用LOAD_DATA_INFILE将文本文件导入各个表的客户端程序。它通常也称为数据导入程序。
  • mysqlpump:将 MySQL 数据库转储到 SQL 文件的客户端程序。
  • mysqlshow:显示数据库、表、列、索引信息的客户端。
  • mysqlslap:这是用于检查 MySQL 服务器客户端加载能力的客户端程序。该程序模拟多个客户端访问服务器。

以下是执行各种管理活动的程序。它们与一些有助于管理操作的工具一起被描述:

  • innochecksumInnoDB离线文件校验和的程序。
  • myisam_ftdump:工具在MyISAM表中给出全文索引信息。
  • myisamchk:用于检查、描述、修复和优化MyISAM表的程序。
  • myisamlog:处理MyISAM日志文件内容的工具。
  • myisampack:通过压缩生成更小的只读MyISAM表的工具。
  • mysql_config_editor:在名为mylogin.cnf的加密安全登录路径文件中启用身份验证凭据存储的工具。
  • mysqlbinlog:可以读取二进制日志文件语句的工具。在服务器崩溃的情况下,二进制日志文件执行的语句可能会大有帮助。
  • mysqldumpslow:可以读取和汇总慢速查询日志内容的工具。

使用库与 MySQL 服务器通信的 MySQL 客户端程序使用以下环境变量:

  • MYSQL_UNIX_PORT:此变量负责用于连接本地主机的默认 Unix 套接字文件
  • MYSQL_TCP_PORT:此变量负责提供默认端口号,用于 TCP/IP 连接
  • MYSQL_PWD:此变量负责提供默认密码。
  • MYSQL_DEBUG:此变量负责在调试操作期间提供调试跟踪选项
  • TMPDIR:此变量负责提供创建临时文件和表的目录

For a detailed list and uses of environment variables in programs, see MySQL 8 environment variables section. The use of MYSQL_PWD is insecure.

Oracle 公司提供的 MySQL Workbench GUI 工具用于管理 MySQL 服务器和数据库,用于创建、执行和评估查询。它还用于从其他关系数据库管理系统迁移模式和数据,以便与 MySQL 一起使用。还有其他 GUI 工具,包括 MySQL 通知程序、MySQL for Excel、phpMyAdmin 等等。

在上一节中,我们介绍了 MySQL 8 提供的各种类型的程序,并简要介绍了它们的用法。

在本节中,我们将介绍命令行程序,并了解如何从命令行执行程序。我们会详细研究有关方案的条文,以及政府如何运用这些方案。

从命令行(shell 或命令提示符)执行程序是 MySQL 中最常用的管理形式之一。随着管理选项的增加,增加了大量的程序。

要执行 MySQL 程序,请输入程序名,后跟选项或任何其他参数,以告诉程序您希望它执行的操作。下面是一些执行命令的示例。此处shell>表示命令解释器。典型的提示为c:>\对于使用command.comcmd.exe作为命令解释器的 Windows 机器,$对于使用shkshbash作为命令解释器的 Unix 机器,%对于使用cshtcsh作为命令解释器的 Mac 机器:

shell> mysql --verbose --help
shell> mysql --user=root --password=******** mysampledb
shell> mysqldump -u root personnel
shell> mysqlshow --help 

有非选项参数,没有任何前导破折号的参数,为程序提供补充信息。例如,如果您看到前面示例的第二行,它有一个数据库名为mysampledb的第三个非选项参数,因此命令mysql --user=root --password=******** mysampledb告诉mysql程序您想使用mysampledb作为数据库名。

以单破折号或双破折号(-,--)开头的参数用于指定程序选项。指定程序选项表示程序将连接到服务器或将影响操作模式的连接类型。详细解释了选项的语法,请参见指定程序选项部分。

在本节中,我们将解释如何建立到 MySQL 服务器的连接。我们将使用客户端程序连接到 MySQL 服务器。为了连接到服务器程序,我们需要一些信息来指定 MySQL 帐户的hostnameusernamepassword,因为我们需要告诉客户端程序服务器运行在哪个主机上以及相关的用户名和密码。尽管会有与这些选项关联的默认选项值,但您可以在必要时覆盖该选项值。例如,考虑使用公共客户端程序

shell> mysql

在前面的程序中,未指定任何选项,但将自动应用以下默认值:

  • 主机名默认值应用为localhost
  • 根据登录名应用的用户名默认值(Windows 或 Unix 登录名中的 ODBC 名称)
  • 如果-p--password选项未随程序一起指定,则不会向程序发送任何选项值
  • 第一个非选项参数被视为mysql程序的默认数据库名称,如果未指定此类选项,则mysql不选择任何默认数据库

适用于客户程序mysql的原则也适用于其他客户程序,如mysqldumpmysqladmin,mysqlshow。现在,让我们来看一个示例客户端程序,该程序与特定选项值的参数相连接:

shell> mysql --host=localhost --user=root --password=mypwd mysampledb

正如您在前面的示例中看到的,具有特定选项值的主机被视为localhost,用户值被提供为myname。还指定了密码,最后指定了一个非选项参数,告诉程序使用mysampledb作为默认数据库名称。

在前面的部分中,我们已经看到了程序选项如何根据为客户端程序中的选项指定的参数值更改操作模式。这里我们将介绍几种为 MySQL 程序指定选项的方法。这些措施包括:

  • 在命令行上提供选项,后跟程序名。这是提供选项的常见方式,但仅适用于当时程序的执行。
  • 在选项文件中提供程序在开始执行前读取的选项。这是提供希望程序每次执行时使用的选项的常用方法。
  • 在环境变量中提供选项。通过使用此方法,还可以指定每次执行程序时要应用的选项。在一般实践中,使用选项文件通常用于此目的,但在某些情况下,在环境变量中指定选项值也非常有用;例如,在 Unix 系统上运行多个 MySQL 实例时。

MySQL 程序首先通过检查相关的环境变量来检查要给出哪些选项,然后处理选项文件,然后在命令行中考虑选项参数。因此,命令行选项的优先级最高,环境变量的优先级最低。但是,有一个例外情况适用,那就是最后处理的数据目录中的mysqld-auto.cnf选项文件,因此它优先于命令行选项。

使用命令行程序选项,请遵循以下规则:

  • 选项后面跟着程序名。
  • 选项参数以单破折号或双破折号开头,具体取决于它们使用的是选项名称的短格式还是长格式。
  • 选项名称区分大小写。例如,-V-v都是有效的,因为它们分别是--verbose--version的缩写形式,因此对节目的意义不同。
  • 选项也可以采用后跟选项名称的值。例如,-h localhost--host=localhost告诉客户机程序将本地主机作为主机名。
  • 对于接受某个值的短选项,该值可以立即跟随选项字母,或者两者之间的单个空格也可以工作。此规则的唯一例外是在指定 MySQL 密码选项时。
  • 使用接受值的 long 选项,值和名称可以用=符号分隔。
  • (-)和(_)可以在选项名称中互换使用,例如--skip-grant-table--skip_grant_table.都有效,并且工作方式相同,但下划线不能代替前导破折号。
  • 带有数字值的选项值可与后缀 K、M 或 G 一起使用,以表示 1024 的乘法器(小写或大写)。考虑下面的示例,其中命令告诉 GooT T0 程序将服务器 ping 1024 次,并为每一次 ping 休眠为 T1 T1 秒。
 shell> mysqladmin --count=1k --sleep=10 ping
  • 对于文件名选项值,避免使用~元字符,因为它不会按照预期进行解释。
  • 在命令行上指定值时,包含空格的选项值必须用引号括起来。

一些选项为boolean类型,控制可以打开或关闭的行为。让我们考虑,例如,{ TouthT1}程序。支持--column-names选项,控制查询结果第一行列名的第一行显示。为了禁用列名,以下规范适用于我们:

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

正如您在前面的示例中所看到的,=0 suffix--skip--disable prefixes具有相同的效果。当打开带有=1后缀和--enable前缀的选项时,此选项也适用。

如果使用--loose prefix指定该选项,并且如果指定的选项不存在,程序将发出警告而不是退出。

对于某些程序,--maximum prefix可与用于指定限制的选项名称一起使用。它还可以与环境变量一起使用

大多数 MySQL 程序都可以从选项文件中读取启动选项,有时也称为配置文件。这是一种提供常用选项的非常方便的方法,一旦指定,您就不需要在每次执行程序时指定它们。要检查程序是否读取选项文件,请使用--help选项。例如,考虑{ ToeLt1}程序,如果它读取选项文件,则应该使用 OrthT2 和 Ty3 T3。帮助消息将指示要查找的选项文件和选项组:

The MySQL program with the --no-defualts option does not read any option files apart from .mylogin.cnf. If the server program started with the option persisted_globals_load system variable disabled then the program does not read the mysqld-auto.cnf file.

大多数选项文件是纯文本文件,可由任何文本编辑器创建和编辑。这些文件中的例外情况是.mylogin.cnf,它有登录路径选项,由mysql_config_editor工具加密。

MySQL 按特定顺序检查 Windows 和 Unix 系统的选项文件,并遵循从读取全局选项开始的优先级,例如在 Windows 系统中:

  • %PROGRAMDATA%\MySQL\MySQL Server 8.0\my.ini%PROGRAMDATA%\MySQL\MySQL Server 8.0\my.cnf
  • %WINDIR%\my.ini%WINDIR%\my.cnf
  • C:\my.iniC:\my.cnf
  • BASEDIR\my.iniBASEDIR\my.cnf
  • --defaults-extra-file指定的文件,如有
  • %APPDATA%\MySQL\.mylogin.cnf中的登录路径选项(仅限客户端程序)
  • 对于在DATADIR\mysql-auto.cnf中以SET_PERSISTPERSIST_ONLY保存的系统变量(如果是服务器程序)

类似地,在 Unix 系统中,读取选项文件遵循以下优先顺序:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • SYSCONFDIR/my.cnf
  • $MYSQL_HOME/my.cnf(仅限服务器程序)
  • --defaults-extra-file指定的文件,如有
  • ~/.my.cnf用于用户特定选项
  • ~/.mylogin.cnf用于用户特定的登录路径选项(仅限客户端程序)
  • 对于在DATADIR\mysql-auto.cnf中以SET_PERSISTPERSIST_ONLY保存的系统变量(如果是服务器程序)

在前面的选项中,~表示当前用户的主目录。

选项文件中的空行以及注释将被忽略。注释可以使用 Enter T0 或 Ty1 T1 字符指定,并且 Ty2 T2 也可以在任何一行的中间开始。

group是要为其设置选项的程序或组的名称。它们不区分大小写。将编组行添加到选项文件后,以下所有行将应用于命名编组,直到指定另一个编组行或在选项文件末尾。

这类似于命令行中打开命名优化的--opt_name

这与命令行中的--opt_name类似,但是可以用空格来代替值,而在命令行中不能使用空格。

可以使用选项文件中的!include指令包含另一个选项文件,并使用!includedir搜索特定目录以检查选项文件。例如,!include /home/dev/myopt.cnf!includedir /home/dev表示目录。MySQL 唯一不考虑的是目录搜索过程中的任何命令。

Any option files to be used in the !includedir directive on a Windows system must end with the .ini or .cnf extension and in Unix systems they must end with .cnf.

大多数 MySQL 程序都支持选项文件。由于它们影响选项文件处理,因此必须在命令行中提供,而不是作为选项文件的一部分。

为了使它们正常工作,必须在其他选项之前给出它们。一些例外情况如下:--print-defaults可能在--login-path--defaults-filedefaults-extra-file之后立即使用。

--no-defaults--print-defaults也用于修改选项文件处理。

许多 MySQL 程序都有内部变量,我们可以使用SET语句在运行时操作期间设置,也可以使用与指定选项值相同的语法。这将在程序启动时起作用。例如,如果我们使用选项值语法,那么我们必须这样指定:shell> mysql --max_allowed_packet=16M。要使用SET指定运行时选项,我们可以这样指定:mysql> SET GLOBAL max_allowed_packet=16*1024*1024

To find out if the option variable syntax is correct, you can go to mysql and use the following:  mysql> show variables like 'max%'.

在命令提示符中,我们可以设置将影响程序运行时执行的环境变量,也可以设置为永久影响将来的执行。它们可以在启动文件中设置,也可以使用系统提供的接口设置。可以影响 MySQL 程序的环境变量列表在MySQL 8 环境变量部分给出了详细信息。

要指定环境变量的值,语法将基于底层命令解释器。对于 Windows 系统,可以使用以下语法设置用户变量:

SET  USER=your_user_name

对于 Unix 系统,它取决于 shell,因此如果使用shkshzshbash,则需要使用以下语法:

MYSQL_TCP_PORT=3306 
export MYSQL_TCP_PORT

如果使用cshtcsh,则使用setenv,这将使 shell 变量可用于执行环境:

setenv MYSQL_TCP_PORT 3306

设置执行的环境变量的命令将立即影响正在执行的程序,但如果您希望使环境变量保持不变,您需要在系统提供的接口上指定它,或者您可以在命令处理器启动时使用的启动文件中设置它。在 Windows 上,可以通过“控制面板”选项设置环境变量,在 Unix 中,可以根据您使用的命令行处理器进行设置。对于bash,您需要将值放入.bashrc.bash_profile中,对于tcsh使用.tcshrc

MySQL 提供了一些特定的程序,为了使 MySQL 正常工作,您需要首先执行这些程序。在以下各节中,我们将根据您的要求,查看可与多个选项一起使用的服务器程序和相关启动程序。

MySQL 服务器是一个守护程序。所有其他程序都通过此服务器与数据库连接,因此它应该一直运行。守护程序通常从名为mysqld_safe的脚本启动。程序脚本是必需的,因为它设置了适当的环境变量,并使用所需的参数-option值执行mysqld程序。

以下是命令行中提供的各种选项的详细说明:

  • -?, -I--help:显示程序的使用信息。
  • -# debuglevel--debug=debuglevel:按规定设置调试级别。
  • -b directory--basedir=directory:指定用于确定所有其他相关目录的基本目录。
  • --big-tables:用于允许较大的结果集。它们作为临时结果保存在文件中。
  • --bind-address=ip-number:指定服务器将绑定到的 IP 地址。
  • -h directory--datadir=directory:指定存储数据库数据文件的目录。
  • -l [logfile]--log[=logfile]:添加各种日志信息,包括连接和错误信息。如果未提供参数,则使用hostname.log作为日志文件,这里hostname是服务器机器的名称。
  • --log-isam[=logfile]:添加对日志中数据(ISAM)文件的更改。如果未提供参数,则使用isam.log作为日志文件,并且此选项生成的日志只能通过theisamlog工具读取和操作。
  • --log-update[=number]:记录数据库更新信息。日志文件命名为hostname.num,其中hostname是服务器机器的名称,num是选项的参数,如果未指定参数,则生成唯一的编号。
  • -L=language--language=language:指定服务器的语言(英语、法语、德语等)。
  • -n--new:启用新的例程(以及可能不安全的例程)。
  • -S--skip-new:禁用/启用新例程(以及可能不安全的例程)。
  • -O variable=value--set-variable variable=value:用于指定和设置变量的值
  • --pid-file=file:获取运行服务器的进程 IDPID的文件名。文件的默认值为hostname.pid,其中hostname是服务器机器的名称。
  • -P port--port=port:指定网络端口号。
  • --secure:启用网络安全检查。但这会降低数据库性能。
  • --skip-name-resolve:指定仅使用 IP 号码(而不是名称)进行连接。这将提高网络性能。
  • --skip-networking:禁用网络连接,只允许本地访问。
  • --skip-thread-priority:为所有线程赋予相同的优先级。
  • -Sg:禁用访问检查。这允许所有用户完全访问所有数据库。
  • -Sl:指定不进行螺纹锁紧。
  • --use-locking:启用螺纹锁紧。
  • --socket=file:指定 Unix 套接字的文件名。
  • -T--exit-info:用于显示服务器关机时的调试信息。
  • -v-V--version:显示服务器的版本信息。

这是在基于 Unix 的系统中启动 MySQL 服务器的最推荐方法,因为它添加了一些安全特性,例如,如果在运行时发生错误,则将信息记录到错误日志中,如果出现错误,则重新启动服务器。

In some of the Unix platforms, MySQL installations from RPM or Debian packages include the systemd support to manage MySQL startup and shutdown operations and so mysqld_safe is not installed on those systems.

mysqld_safe尝试执行mysqld并覆盖默认行为,以指定要执行的服务器的名称。使用--ledir指定目录的选项也可用,以便mysqld_safe在目录中查找服务器。mysqld_safe中的大多数选项在mysqld中也可用,如果mysqld_safe不知道指定的选项,则将其传递给mysqldmysqld_safe,读取选项文件中mysqld、服务器和mysqld_safe部分的所有选项。为了向后兼容,mysqld_safe也会读取safe_mysqld节,但您应该将此类节重命名为当前节mysqld_safe

如前所述,mysqldmysqld_safe中都规定了非常常见的选项,因此以下选项列表中排除了一些选项:

--core-file-size=size

指定mysqld应该创建的核心文件的大小。

--ledir=dir_name

如果mysqld无法找到服务器,则使用此选项指定服务器所在目录的路径名。此选项只能在命令行上使用,不能在选项文件中使用。在使用systemd的平台上,该值应在MYSQLD_OPTS的值中给出。

--mysqld-safe-log-timestamps

此选项用于在mysqld_safe生成的日志输出中指定timestamps的格式。

--mysqld=prog_name

指定要启动的ledir目录中包含的服务器程序名。如果mysqld_safe找不到服务器,使用--ledir选项将pathname指定到指定名称的服务器所在的目录。此选项仅在命令行上接受,而不在选项文件中接受。

--open-files-limit=count

mysqld可以打开的文件数。

--plugin-dir=dir_name

指定插件目录的路径和名称。

--timezone=timezone

此选项用于将timezone环境变量设置为给定的选项值,具体取决于操作系统时区规范格式。

--user={ username | user_id }

运行mysqld服务器,就像您拥有用户的名称一样。指定user_name或将数字user ID指定为user_id

这是用于 Unix/Unix 类系统的 MySQL 发行版的服务器启动脚本。使用mysqld_safe启动 MySQL 服务器程序。该程序也用于使用包含脚本的V-style运行目录的系统。它在特定的运行级别启动系统服务。

basedir=dir_name

指定 MySQL 安装目录的路径。

datadir=data_dir

指定 MySQL 数据目录的路径。

pid-file=file_name

指定路径名以及服务器写入其进程 ID 的文件名。

service-startup-timeout=seconds

以秒为单位指定等待服务器启动确认的时间。如果服务器在此时间内未启动,mysql.server将退出并显示错误指示。该选项的默认值为 900 秒,值为 0 表示完全不等待启动,提供负值表示永远等待(不应有超时)。

mysqld_multi设计用于管理多个mysqld进程,这些进程侦听不同 Unix 套接字文件和 TCP/IP 端口上的连接。它还可以启动或停止服务器并报告其当前状态。

mysqld_multimy.cnf或作为--default-file选项提供的文件中搜索名为mysqldN的组。这里 N 可以是任何正数。该编号称为选项组编号,即GNR。组号将选项组彼此分开,并在mysqld_multi的参数中指定要启动、停止的服务器或请求的状态。此组中的选项与我们在用于启动mysqld[mysqld]组中使用的选项相同

要执行mysqld_multi,使用以下语法:

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

在前面的语法中,start、stop、reload(stop 和 restart)和 report 指的是要执行的操作。根据指定的GNR列表值,您可以在单个或多个服务器上执行目标操作

Please make sure that the data directory for all servers is fully accessible to the Unix account by which the specific mysqld process is started. Do not use a root account unless you know exactly what you are going to do with it.

本节讨论的程序是在安装过程中或升级 MySQL 时使用的,因此在对程序进行任何修改之前,请确保您正确理解它。

这将创建errmsg.sys文件,mysqld使用该文件识别错误消息并显示单个错误代码。comp_err通常在 MySQL 构建时自动运行。errmsg.sys文件是从位于sql/share/errmsg-utf8.txt的 MySQL 发行版中的文本文件编译而成的。它还生成sql_state.hmysqld_ername.hmysqld_error.h头文件。

comp_err有多个选项,可以使用前面命令中的--help选项进行检索。

该程序提供了启用和提高 MySQL 安装安全性的方法,包括:

  • root账户设置密码。
  • 删除可在localhost之外访问的root账户。
  • 删除匿名帐户。
  • 删除允许任何人访问以名称test_开头的数据库的测试数据库权限。
  • 如果希望在本地 MySQL 服务器上正常使用,请执行不带任何参数的mysql_secure_installation命令。它将要求您进一步检查要执行的操作。
  • validate_password插件可用于加强密码检查。如果插件尚未安装,它将要求您安装,一旦安装并启用,它可以验证密码。

使用以下语法执行mysql_secure_installation

shell> mysql_secure_installation [options]

您可以在此处使用--help选项,并在需要时检索其他选项的列表。

顾名思义,此程序用于生成 SSL 证书和密钥文件以及 RSA 密钥对文件(如果缺少这些文件并且需要这些文件来支持安全连接)。如果任何现有文件已过期,也可以使用mysql_ssl_rsa_setup创建新文件。

The Openssl command is used by mysqlssl_rsa_setup, so using it is necessary to have OpenSSL installed on your machine. To generate these files automatically by the server, it can use MySQL distributions compiled using OpenSSL, which is another way to generate SSL and RSA files.

执行mysql_ssl_rsa_setup,如下图:

shell> mysql_ssl_rsa_setup [options]

在此处使用--help选项,并在需要时检索其他选项的列表。

Using ssl mysql_ssl_rsa_setup lowers the barrier to ssl and makes it easier to generate the required files but the files that are generated are self-signed, which is not very secure. You can consider obtaining a CA certificate from the respective authority.

该程序获取hostsystem时区信息数据库(描述时区的文件)的内容,并将信息加载到 MySQL 的时区表中。如果系统没有区域信息数据库,您可以使用来自POSIX标准timezone_2017c_posix_sql.zip和非POSIX标准timezone_2017c_leaps_sql.zip的可下载包 https://dev.mysql.com/downloads/timezones.html

mysql_tzinfo_to_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_to_sql程序后,强烈建议重新启动服务器,使其不会使用以前缓存的timezone数据。

顾名思义,这用于升级操作。它会检查是否存在任何不兼容,并在必要时进行修复,还可以使用 MySQL 新版本中的任何更改更新 grant 表。它还更新系统表,以便您可以利用新版本中可能添加的任何新权限或兼容性。

Before performing an upgrade always backup your current MySQL installation.

如果mysql_upgrade发现某个表可能存在不兼容,则会执行表检查并尝试修复该表,如果无法修复,则会请求手动修复该表。

每次升级 MySQL 时都要执行mysql_upgrade。它直接与 MySQL 服务器通信,并发送所需的 SQL 语句以执行升级。

一旦我们运行mysql_upgrade,我们应该重新启动服务器。如果对系统表所做的任何更改生效,则在运行之前,应确保服务器正在运行。

使用以下语法执行mysql_upgrade

shell> mysql_upgrade [options]

您可以在此处使用--help选项,并在需要时检索其他选项的列表。

MySQL 8 客户端程序通常用于连接 MySQL 数据库并执行不同的查询操作。

以下小节详细介绍的程序信息包括mysql-具有许多命令的命令行工具以及loggingmysqlcheckmysqldumpmysqlimportmysqlshmysqladmin等的相关选项和配置。

这是最常用的程序。命令行工具用于直接执行 SQL 语句或以批处理模式使用文件。它支持交互和非交互模式。在本节中,我们将了解mysql命令行以及各种选项、命令、日志记录和其他相关程序。

mysql是一个提供了很长时间的命令行工具,因此它有很多选项来完成您的工作。以下是选项表及其格式和说明:

| 格式 | 说明 | | --auto-rehash | 启用自动重新灰化 | | --auto-vertical-output | 启用自动垂直结果集显示 | | --batch | 不要使用历史记录文件 | | --binary-as-hex | 以十六进制表示法显示二进制值 | | --binary-mode | 禁用\r\n-到-\n 转换和将\0 作为查询结束处理 | | --bind-address | 使用指定的网络接口连接到 MySQL 服务器 | | --character-sets-dir | 安装字符集的目录 | | --column-names | 在结果中写入列名 | | --column-type-info | 显示结果集元数据 | | --comments | 确定是保留还是删除发送到服务器的语句中的注释 | | --compress | 压缩客户端和服务器之间发送的所有信息 | | --connect-expired-password | 向服务器指示客户端可以处理过期密码沙箱模式 | | --connect_timeout | 连接超时前的秒数 | | --database | 要使用的数据库 | | --debug | 编写调试日志;仅当 MySQL 是通过调试支持构建的时才受支持 | | --debug-check | 程序退出时打印调试信息 | | --debug-info | 程序退出时打印调试信息、内存和 CPU 统计信息 | | --default-auth | 要使用的身份验证插件 | | --default-character-set | 指定默认字符集 | | --defaults-extra-file | 除常规选项文件外,还读取命名选项文件 | | --defaults-file | 仅读取命名选项文件 | | --defaults-group-suffix | 选项组后缀值 | | --delimiter | 设置语句分隔符 | | --enable-cleartext-plugin | 启用明文验证插件 | | --execute | 执行语句并退出 | | --force | 即使发生 SQL 错误也会继续 | | --get-server-public-key | 包含 RSA 公钥的文件的路径名 | | --help | 显示帮助消息并退出 | | --histignore | 指定为日志记录忽略哪些语句的模式 | | --host | 连接到给定主机上的 MySQL 服务器 | | --html | 生成 HTML 输出 | | --ignore-spaces | 忽略函数名后的空格 | | --init-command | 连接后要执行的 SQL 语句 | | --line-numbers | 写入错误的行号 | | --local-infile | 启用或禁用LOAD DATA INFILELOCAL功能 | | --login-path | 从.mylogin.cnf 读取登录路径选项 | | --max_allowed_packet | 发送到服务器或从服务器接收的最大数据包长度 | | --max_join_size | 使用--safe-updates时联接中行的自动限制 | | --named-commands | 启用命名的mysql命令 | | --net_buffer_length | TCP/IP 和套接字通信的缓冲区大小 | | --no-auto-rehash | 禁用自动重新灰化 | | --no-beep | 发生错误时不要发出蜂鸣音 | | --no-defaults | 不读取选项文件 | | --one-database | 忽略除命令行中指定的默认数据库之外的语句 | | --pager | 使用给定的命令进行分页查询输出 | | --password | 连接到服务器时要使用的密码 | | --pipe | 在 Windows 上,使用命名管道连接到服务器 | | --plugin-dir | 安装插件的目录 | | --port | 用于连接的 TCP/IP 端口号 | | --print-defaults | 打印默认选项 | | --prompt | 将提示设置为指定的格式 | | --protocol | 要使用的连接协议 | | --quick | 不要缓存每个查询结果 | | --raw | 写入列值而不进行转义转换 | | --reconnect | 如果与服务器的连接丢失,将自动尝试重新连接 | | --i-am-a-dummy, --safe-updates | 仅允许指定键值的UPDATEDELETE语句 | | --secure-auth | 不要以旧(4.1 之前)格式向服务器发送密码 | | --select_limit | 使用--safe-updatesSELECT语句的自动限制 | | --server-public-key-path | 包含 RSA 公钥的文件的路径名 | | --shared-memory-base-name | 用于共享内存连接的共享内存的名称 | | --show-warnings | 在每条语句后显示警告(如果有) | | --sigint-ignore | 忽略SIGINT信号(通常是输入控制+C的结果) | | --silent | 静默模式 | | --skip-auto-rehash | 禁用自动重新灰化 | | --skip-column-names | 不要在结果中写入列名 | | --skip-line-numbers | 跳过错误的行号 | | --skip-named-commands | 禁用命名的 mysql 命令 | | --skip-pager | 禁用分页 | | --skip-reconnect | 禁用重新连接 | | --socket | 对于到本地主机的连接,使用 Unix 套接字文件或 Windows 命名管道 | | --ssl-ca | 包含受信任 SSL CA 列表的文件的路径 | | --ssl-capath | 包含 PEM 格式的受信任 SSL CA 证书的目录路径 | | --ssl-cert | 包含 PEM 格式的 X509 证书的文件路径 | | --ssl-cipher | 用于连接加密的允许密码列表 | | --ssl-crl | 包含证书吊销列表的文件的路径 | | --ssl-crlpath | 包含证书吊销列表文件的目录的路径 | | --ssl-key | 包含 PEM 格式的 X509 密钥的文件路径 | | --ssl-mode | 与服务器的连接的安全状态 | | --syslog | 将交互语句记录到 syslog | | --table | 以表格格式显示输出 | | --tee | 将输出的副本附加到命名文件 | | --tls-version | 允许用于加密连接的协议 | | --unbuffered | 在每次查询后刷新缓冲区 | | --user | 连接到服务器时要使用的 MySQL 用户名 | | --verbose | 详细模式 | | --version | 显示版本信息并退出 | | --vertical | 垂直打印查询输出行(每列值一行) | | --wait | 如果无法建立连接,请等待并重试,而不是中止 | | --xml | 生成 XML 输出 |

参考文献:https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html

要获得有关单个选项的更多信息,请将该选项与--help选项一起使用。

发出的每个 SQL 语句都会发送到服务器执行。还有一个mysql本身解释的命令列表。要获取所有这些命令的列表,请在mysql>提示符处键入\h\help

每个命令都有可以使用的长格式和短格式;除非短格式不能用于多行注释。长格式不区分大小写,但短格式命令区分大小写。

helparg[]命令用于显示帮助消息,同时列出mysql中所有可用的命令。

要更改默认字符集,请发出SET_NAMES语句。

从命令行中清除当前输出或以前的查询结果。

通过提供databasehost_name参数重新连接服务器。

编辑当前提供的输入语句。

退出mysql命令行。

指定字符串并使用mysql提示符重新配置它。

退出mysql命令行。

这用于检查当前正在使用的服务器连接的状态。

指定使用提供的db_name作为默认数据库。

mysql程序可以按照以下类型进行日志记录。

在 Unix 系统上,它使用主目录中的默认名称.mysql_history将日志写入历史文件。

在所有平台上,如果提供了--syslog选项,则会将语句写入系统日志记录实现。在 Unix 上,它是syslog,在 Windows 上,它是事件日志,在 Linux 发行版上,它通常会转到/var/log/message文件。

要从mysql获取服务器端帮助,请使用以下语法。

mysql> help search_string

如果在 help 命令之后提供任何参数,mysql将使用该参数搜索字符串,以便从 MySQL 参考手册内容访问服务器端帮助。如果搜索的字符串不匹配,则搜索操作失败,并显示如下:

mysql> help me
Nothing found
Please try to run 'help contents' fro a list of all accessible topics

如果search_string匹配一个主题的多个内容,则会显示匹配主题项的列表。主题也可以用作search_string并查找该主题的条目。它还包含通配符%_,这两个通配符对于LIKE运算符执行的匹配操作具有相同的含义。

mysql客户端通常以交互方式使用,但它也允许您从文件中执行 SQL 语句。为此,创建一个text_file,其中包含几个需要执行的语句,如下所示:

shell> mysql db_name < text_file

相反,如果将USE db_name保留为text_file 的第一条语句,则可以从命令行跳过指定db_name

shell> mysql < text_file

如果已经使用mysql连接,则使用源或\.命令:

mysql> source file_name

通过使用--verbose选项,每个语句都会在其生成的结果之前显示。

mysqladmin是行政操作的客户端。它可以用来检查服务器的配置、连接状态、删除和创建数据库等。

mysqladmin命令的执行语法如下:

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

mysqladmin支持大量程序命令,从create db_name开始创建名为db_name的新数据库、debug获取调试信息、drop db_name删除数据库、flush-xxxx,其中xxxx可以替换为日志、主机、权限、状态、表、线程等。kill id要杀死服务器线程或多个线程,password new_password设置新密码,ping检查服务器的可用性,shutdown停止服务器,start-slave在从服务器上启动复制,stop-slave停止从服务器上的复制,variables显示服务器系统变量及其各自的值。

mysqladmin status命令给出正常运行时间、线程、问题、慢速查询、打开的结果,并用相关信息刷新表。

除了命令列表之外,还有一些选项在从服务器检索特定信息时非常方便。可以使用mysqladmin --help命令检索此类信息。

此程序用于表格维护。它可以检查、修复、优化或分析表。该程序可能非常耗时,尤其是对于大型表。mysql_upgrade使用mysqlcheck命令检查和修复所有表。mysqld服务器必须运行才能使用mysqlcheck命令。

mysqlcheck方便用户使用CHECK TABLEREPAIR TABLEANALYZE TABLEOPTIMIZE TABLE。如果工作台维修在mysqlcheck之前失败,则需要手动工作台维修。

以下是mysqlcheck命令的执行语法:

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

mysqlcheck有一个特殊的特性,那就是检查表的默认行为。可以通过重命名二进制文件进行更改,例如通过创建mysqlcheck的副本将mysqlcheck重命名为mysqlrepair程序,并向mysqlcheck添加符号链接,之后mysqlrepair可以修复表。这也适用于mysqlanalyzemysqloptimize选项,使它们成为mysqlcheck命令的默认操作

与其他管理程序类似,该程序也有许多可用于获取特定信息的选项,通过使用mysqlcheck --help命令,可以检索选项列表。

该程序是一个工具,用于通过生成一组 SQL 语句进行逻辑备份,可以执行这些 SQL 语句来重现原始数据库表数据和对象定义。它转储一个或多个数据库进行备份,或者可能会传输到另一个 SQL server。它还可以生成不同格式的数据输出,如 CSV、XML 或其他分隔文本文件。

不应将其视为备份大量数据的快速或可扩展解决方案。备份需要一些时间,恢复数据可能非常慢,因为 SQL 语句涉及索引创建、插入磁盘 I/O 等。可以逐行检索和转储表数据;否则,它可能会占用整个表并将其缓冲在内存中以便转储。

以下是mysqldump的执行语法:

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

有超过 25 个选项可用于修改mysqldump命令的操作,可以使用mysqldump --help命令检索这些选项。根据您的需求,可以在此命令中对调试选项、帮助选项、连接选项、DDL 选项等进行特定修改。

此客户端程序为LOAD_DATA_INFILESQL 语句提供CLI接口。大多数选项对应于LOAD_DATA_INFILE语法的子句。

mysqlimport的执行语法如下:

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

可根据您的要求在 CLI 上或选项文件的[mysqlimport][client]组中指定命令选项。它提供了检索和修改数据导入操作的选项,如使用不同的分隔符格式、调试、强制文件路径、提供默认值、忽略和锁定表等,可以使用mysqlimport --help命令检索这些选项。

此程序是一个工具,用于生成一组 SQL 语句,以复制原始数据库表数据和对象定义,从而进行逻辑备份。它转储一个或多个数据库进行备份,或者可能会传输到另一个 SQL server。

mysqlpump具有以下重要特征:

  • 并行处理数据库和数据库中的对象,从而加快转储处理
  • 更多地控制要转储的数据库对象和数据库
  • 将用户帐户数据转储到帐户管理语句,而不是将数据插入系统数据库
  • 创建压缩输出的能力
  • 显示进度指示器
  • 转储文件重新加载;对于InnoDB表,它在插入行后添加索引

mysqlpump转储所有数据库,如下代码中明确指定:

shell> mysqlpump --all-databases

要转储多个数据库,请指定--databases,后跟要转储的数据库名称。您还可以指定--exclude-databases=后跟不转储的数据库名称。有许多选项可用于转储数据库或对象,例如用于指定数据库选项的排除或包含,适用于表、触发器、例程、事件、用户等对象(如果它们支持多个选项条目):

shell> mysqlpump --include-databases=db1,db2 --exclude-tables=db1.t1,db2.t2

前面的命令转储数据库db1db2,但它将从数据库db1中排除表t1,从数据库db2中排除表t2

mysqlpump使用并行实现并发处理,可以在数据库之间,也可以在数据库内部。--default-parallelism=N指定程序创建的队列中使用的默认线程数,N的值默认为2--parallel-schemas=[N:]db_list根据提供的数据库名称列表设置处理队列。因此,可以控制额外的队列和线程数。

mysqlpump默认情况下不转储performance_schemanbdinfosys,但可以通过指定--include-databases选项来实现,同样也不转储INFORMATION_SCHEMA

MySQL 的高级命令行客户端和编辑器是非常有名的 MySQL Shell。它具有用 Python 和 JavaScript 编写脚本的功能。当使用 X 协议连接到 MySQL 服务器时,X DevAPI 可以处理文档和关系数据。它包括 AdminAPI,它使您能够使用InnoDB集群

MySQL Shell 有很多与之相关的选项,但重要的选项如下所示:

--port=port_num, -P port_num

port_num一起使用的 TCP/IP 端口号。默认端口为33060

--node

使用 X 协议创建到单个服务器的节点会话,在 8.0.3 中不推荐使用。

--js

启动 JavaScript 模式。

--py

启动 Python 模式。

--sql

启动 SQL 模式。

--sqlc

在 ClassicSession 中启动 SQL 模式。

--sqln

在节点会话中启动 SQL 模式。

--sqlx

通过创建 X 协议连接启动 SQL 模式。

--ssl* 

--ssl开头的选项指定使用 SSL 连接服务器,并查找证书和 SSL 密钥。其工作方式与 MySQL 服务器相同,并接受 SSL 选项:--ssl-crl--ssl-crlpath--ssl-mode--ssl-ca--ssl-capath--ssl-cert--ssl-cipher--ssl-key--tls-version

使用mysqlsh --help命令可以检索未列出的其他选项。

该客户端主要用于快速检查哪些数据库、它们的表、列和索引存在或不存在。它提供了与一些 SQLSHOW语句的接口

该命令的执行语法如下所示:

shell> mysqlshow [options] [db_name [tbl_name [col_name]]]

通过执行上述命令,您将获得有关您有权限访问的数据库、表或列的信息:

  • 如果未提供数据库,则显示数据库列表
  • 如果未给出任何表,则显示数据库中所有匹配表的列表
  • 如果未给出任何列,则会显示表中所有匹配列和列类型的列表

In the previous command execution, if you used the SQL wildcard character (*, ?, %, _), then names that are matched by the wildcard are displayed. * and ? wildcard characters, if given, are converted into SQL % and _ wildcard characters. It might create confusion when trying to display a column with a table or a column name with _ in the name, it displays only names matching the pattern, but it can be fixed easily by adding an extra % at the end of the command line as a separate argument. 

程序有许多选项,可以通过使用特定的选项参数来获取所需的信息。以下给出了几个重要问题:

--character-sets-dir=dir_name

指定安装字符集的目录名。

--compress, -C

如果客户端和服务器都支持压缩,则发送的所有信息都将被压缩。

--enable-cleartext-plugin

启用cleartext身份验证插件。

--get--server-public-key

从服务器请求基于密钥对的密码交换所需的 RSA 公钥。此外,如果客户机使用安全连接连接到服务器,则不需要基于 RSA 的密码交换,并且会被忽略。

--keys, -k

显示表索引。

--ssl*

指定以--ssl开头的选项,以使用证书和 SSL 密钥通过 SSL 连接连接到服务器

这里没有列出的许多其他选项可以使用mysqlshow --help命令检索。

这是用于检查 MySQL 服务器的客户端加载能力的诊断客户端程序。该程序模拟多个客户端访问服务器。

执行语法如下所示:

shell> mysqlslap [options]

有许多选项可用于修改执行中的命令,其中一些选项(如--create--query)提供了一种指定 SQL 语句或带有特定分隔符的语句的文件的方法。

mysqlslap在三个不同阶段运行:

  1. 创建要测试的表、模式和可选存储的程序或数据。它只使用一个客户端连接。
  2. 运行负载测试。它使用多个客户端连接。
  3. 清理(如果之前有规定,则放下工作台,并断开连接)。它使用单个客户端连接。

例如,创建我们自己的查询语句,其中有 20 个客户机,每个客户机有 100 个选择,如下所示CLI:

mysqlslap --delimiter=";" --create="CREATE TABLE t (i int);INSERT INTO t VALUES (21)" --query="SELECT * FROM t" --concurrency=20 --iterations=100

mysqlslap还可以添加或创建自己的查询语句,如下代码块所示:

mysqlslap --concurrency=7 --iterations=20 --number-int-cols=2 --number-char-cols=2 --auto-generate-sql

在这里,mysqlslap将构建一个包含两个INT列和两个VARCHAR列的表以及七个客户机的语句,每个客户机查询 20 次。它还支持指定用于单独创建和查询以及运行负载测试的语句文件。它在负载测试执行中提供了许多这样的更改,您可以通过在命令行上执行mysqlslap --help命令来检查这些选项。

本节介绍不同的管理程序,以及一些有助于执行管理操作(如执行校验和、压缩和提取等)的工具。

这是一个工具,从InnoDB表空间文件中提取序列化字典信息。作为 SDI 数据的序列化字典信息将始终存在于所有持久的InnoDB表空间文件中。它可以在表空间文件、常规表空间文件、系统表空间文件和数据字典表空间文件的每个表上运行,但不支持使用临时表空间或撤消表空间。

ibd2sdi可在服务器离线或运行时使用。它从指定的表空间读取 SDI 的未提交数据,并撤消和重做不可访问的日志。

idb2sdi的执行将类似于以下命令行:

shell> ibd2sdi [options] file_name1 [file_name2 file_name3 ...] 

ibd2sdi还支持多个表空间,但不会像InnoDB系统表空间那样一次在多个表空间上运行。指定每个文件的工作方式如下:

shell> ibd2sdi ibdata1 ibdata2

ibd2sdi以 JSON 格式输出 SDI 数据。

该程序有许多可用选项,可使用ibd2sdi --help命令检索。

这是一个用于InnoDB文件的校验和工具。它读取InnoDB表空间文件,计算它们的校验和,并将它们与存储的校验和值进行比较。如果比较失败,它将报告错误并显示损坏的页面详细信息。它是为了验证断电后的完整性而开发的,但也可以在复制文件后使用。如果在运行InnoDB.时发现任何损坏的页面,这非常有用,它将关闭正在运行的服务器,从而避免由于页面损坏而导致的任何生产问题。

如果表空间文件已打开,innochecksum无法使用该文件。命令的执行语法如下所示:

shell> innochecksum [options] file_name

innochecksum命令也有很少的选项来显示正在验证的页面信息,可以通过innochecksum --help命令检索。

这是一个用于显示有关MyISAM表和FULLTEXT索引的信息的工具。它将扫描并转储整个索引,这可能是一个缓慢而漫长的过程。如果服务器已经在运行,那么您需要确保首先插入一个FLUSH TABLES语句。

myisam_ftdump命令的执行将类似于以下代码块:

shell> myisam_ftdump [options] <table_name> <index_num>

在前面的示例中,table_name应该是具有.MYI索引扩展名的MyISAM表的名称。

假设测试数据库有一个名为 mytexttable 的表,其定义如下:

CREATE TABLE mytexttable ( id INT NOT NULL, txt TEXT NOT NULL, PRIMARY KEY (id), FULLTEXT (txt) ) ENGINE=MyISAM;

在 id 上创建的索引在FULLTEXT索引上为 0,在txt索引上为1。如果工作目录是测试数据库目录,则执行myisam_ftdump如下:

shell> myisam_ftdump mytexttable 1

myisam_ftdump还可用于按出现频率的顺序生成索引项列表,如下所示(Windows 中的第一行,Unix 系统中的第二行):

shell> myisam_ftdump -c mytexttable 1 | sort /R 
shell> myisam_ftdump -c mytexttable 1 | sort -r

myisam_ftdump还有几个选项,可以使用myisam_ftdump --help命令检索。

myisamchk是一个命令行工具,用于获取有关数据库表的信息、检查、修复和优化非分区MyISAM表。它与MyISAM表一起工作。

CHECK_TABLEREPAIR_TABLE语句也可用于检查和修复MyISAM表。

myisamchk命令的执行如以下代码块所示:

shell> myisamchk [OPTIONS] tables[.MYI | .MYD]

Before running the myisamchk command, you must make sure that any other program is not using the tables. Otherwise, it will display warning message saying: warning: clients are using or haven't closed the table properly. To do this effectively, shut down the MySQL server or lock all tables being used by myisamchk. This program has many options to perform table maintenance. 

此程序是用于处理 MyISAM 日志文件内容的工具。启动 MySQL 服务器时,使用--log-isam=log_file选项。

执行myisamlog命令使用如下代码块所示的语法:

shell> myisamlog [options] [file_name [tbl_name] ...]

默认操作标记为更新,如果恢复完成,则完成所有写入、更新和删除操作,并且仅统计错误。myisam.log是默认的日志文件名。

该程序有一些用于指定偏移量、恢复、打开多个文件等的选项,可以使用myisamlog --help命令检索这些选项。

这是一个压缩MyISAM表的工具。它分别压缩表中的每一列,并将数据文件压缩约 40%到 70%。

MySQL 最好使用mmap()函数对压缩表进行内存映射;否则,它将使用正常的读/写文件操作

myisampack不支持分区表。

一旦表格被打包,它们就成为只读的。

停止服务器,然后压缩表是执行压缩操作的安全方法。

myisampack的执行语法类似于命令行上的以下块:

shell> myisampack [options] file_name ...

指定包含或不包含.MYI文件的索引文件名,如果不在数据库目录中,还可以添加pathname

使用myisampack压缩表后,应使用myisampack -rq重建压缩表的索引。它支持一些常用选项,如版本控制、调试等,以及特定的压缩检查,如--test--backup--join=big_tbl_name--silent等。如果需要详细检查,可以在命令行上执行myisampack --verbose --help命令。

这是一个工具,用于在名为.mylogin.cnf的加密登录路径文件中存储和更新身份验证凭据。

有关更多详细信息,请使用mysql_config_editor --verbose --help命令在命令行上执行。

此程序是用于处理服务器二进制日志文件的工具。二进制日志文件包含描述数据库内容修改的事件数据。服务器以二进制格式将此类内容写入文件。为了将它们转换为可读(文本)格式,使用了mysqlbinlog工具。

由于中继日志和二进制日志文件的格式相同,因此mysqlbinlog还可用于显示复制设置期间从服务器写入的中继日志文件的内容。

程序语法的执行如以下代码块所示:

shell> mysqlbinlog [options] log_file ...

有几个选项可以修改mysqlbinlog的输出格式和用法。他们的名单如下:

  • 它可以转换为十六进制转储格式,其中包含字节位置、事件时间戳和发生的事件类型
  • 它还提供一种行事件显示格式,以伪 SQL 语句的形式显示数据修改信息
  • 它还通过提供所需的选项值(例如备份文件的路径和备份中输出的类型或格式)用于备份二进制日志文件
  • 当您使用mysqlbinlog连接到 MySQL 服务器时,它会提供一个特定的服务器 ID 来标识自己,并从服务器请求二进制日志文件

该程序有一些未提及的常用选项,但可以使用mysqlbinlog --help命令检索这些选项。

该程序是一个工具,有助于读取慢速查询日志文件的日志内容,其中包含执行时间较长的查询。它解析 MySQL 慢速查询日志文件并打印出查询内容的摘要。

除了特定的数字或字符串数据值之外,它通常对类似的查询进行分组。它提取这些值,并分别使用NS显示摘要输出。-n-a选项用于修改值的抽象行为。

以命令行语法执行程序,如下代码块所示:

shell> mysqldumpslow [options] [log_file ...]

您可以使用一些选项来修改输出,例如限制结果的数量-t N,其中N是要显示的查询结果的数量。-s表示按查询时间、锁定时间或按行数排序的排序类型,-r表示颠倒排序顺序

在本节中,我们将了解直接或间接用于不同 MySQL 程序的环境变量的数量,通过使用环境变量改变它们的行为。

命令行上提供的选项优先于选项文件和环境变量中指定的值,同样,选项中的值优先于环境变量;因此,在大多数情况下,最好使用选项文件而不是环境变量来修改行为。

以下是环境变量列表和变量说明:

  • AUT0}:您运行 C++的 C++编译器的名称
  • CC:运行 CMake 的 C 编译器的名称
  • DBI_USER:Perl DBI 的默认用户名
  • DBI_TRACE:Perl DBI 的跟踪选项
  • HOMEmysql历史文件的默认路径为$HOME/.mysql_history
  • LD_RUN_PATH:用于指定libmysqlclient.so的位置。
  • LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN:启用mysql_clear_password认证插件
  • LIBMYSQL_PLUGIN_DIR:查找客户端插件的目录
  • LIBMYSQL_PLUGINS:要预加载的客户端插件
  • MYSQL_DEBUG:调试时调试跟踪选项
  • MYSQL_GROUP_SUFFIX:可选组后缀值(如指定--defaults-group-suffix
  • MYSQL_HISTFILE:指向mysql历史文件的路径;如果设置了此变量,其值将覆盖$HOME/.mysql_history的默认值
  • MYSQL_HISTIGNORE:给出了 mysql 不应该登录$HOME/.mysql_historyorsyslog if --syslog的语句模式
  • MYSQL_HOME:特定于服务器的my.cnf文件所在目录的路径
  • MYSQL_HOST:特定于服务器的my.cnf文件所在目录的路径
  • MYSQL_PWD:连接mysqld时的默认密码;使用这种方法是不安全的
  • MYSQL_TCP_PORT:默认 TCP/IP 端口号
  • MYSQL_TEST_LOGIN_FILE.mylogin.cnf登录路径文件的名称
  • PATH:shell 用来查找 MySQL 程序
  • PKG_CONFIG_PATHmysqlclient.pc``pkg-config文件的位置
  • TMPDIR:创建临时文件的目录
  • TZ:这应该设置为您当地的时区
  • UMASK:创建文件时的用户文件创建模式
  • UMASK_DIR:创建目录时的用户目录创建模式
  • USER:连接到mysqld时 Windows 上的默认用户名

MYSQL_TEST_LOGIN_FILEmysql_config_editor创建的登录路径文件的路径名。

UMASKUMASK_DIR变量用作模式,而不是掩码。

如果使用 pkg config 构建 MySQL 程序,需要设置PKG_CONFIG_PATH

有许多 MySQL GUI 工具可用于执行各种操作,从创建数据库到执行日常管理任务。

MySQL 工作台是一个图形化工具,用于处理 MySQL 服务器和数据库。它完全支持 MySQL 5.1 及以上版本。在本节中,我们将简要讨论 MySQL 工作台的功能。

MySQL Workbench 提供的五个主要功能如下:

  • SQL 开发:创建和管理数据库连接,并配置连接参数。它使用内置的 SQL 编辑器执行 SQL 语句,并替换前面提供的独立应用程序查询浏览器。
  • 数据建模:以图形方式创建数据库模式的模型,在两个不同模式之间以及在实时数据库上进行反向和正向工程。它提供了一个全面的表编辑器,具有易于使用的工具,用于编辑表、列、触发器、索引、选项、插入、分区、例程、视图和权限
  • 服务器管理:创建、维护和管理服务器实例。
  • 数据迁移:允许从 PostgreSQL、SQLite、Sybase ASE、Microsoft SQL Server 等关系数据库管理系统对象、表、数据迁移到 MySQL。它还促进了从早期版本到最新版本的迁移。
  • MySQL 企业级支持:为产品提供企业级支持;例如,MySQL 企业备份、MySQL 审计。

MySQL workbench is available in two different editions, the Commercial Edition and the Community Edition. The Community Edition is provided without any cost. The Commercial Edition provides additional features, such as database documentation generation.

MySQL 通知程序是一个简单的工具,用于监视和调整本地/远程 MySQL 服务器实例的状态。它是放置在系统托盘中的指示器。它是与 MySQL 安装程序一起安装的。

MySQL Notifier 充当快速启动程序,将列表操作组合在一起,可以很容易地从系统托盘本身进行操作和监视,并根据指定的时间间隔进行监视,并在状态更改时发出通知。

MySQL 通知程序位于系统托盘中,并为 MySQL 状态和维护提供一键式选项。以下是 MySQL 通知程序的重要用法。

  • MySQL 通知程序提供 MySQL 服务器实例的启动、停止和重启
  • MySQL 通知程序配置 MySQL 服务器服务,并自动检测和添加新的 MySQL 服务器服务
  • MySQL 通知程序同时监视本地和远程 MySQL 实例

在本章中,我们深入了解了用于 MySQL 服务器几乎所有活动的大量命令,从安装、服务器启动、客户端程序到管理程序,以及一些工具,以满足数据库管理的常规基础上的不同用途。本章还提供了制作数据库备份和导入带有或不带有特定表的数据库的实用知识。

下一章将详细介绍 MySQL 8 数据类型。它将根据数据类型的内容类型对数据类型进行分类,并详细描述每个类别的属性以及在表和列设计期间应牢记的存储级别详细信息。

教程来源于Github,感谢apachecn大佬的无私奉献,致敬!

技术教程推荐

持续交付36讲 -〔王潇俊〕

Kafka核心源码解读 -〔胡夕〕

罗剑锋的C++实战笔记 -〔罗剑锋〕

互联网人的英语私教课 -〔陈亦峰〕

动态规划面试宝典 -〔卢誉声〕

Spark性能调优实战 -〔吴磊〕

深入剖析Java新特性 -〔范学雷〕

eBPF核心技术与实战 -〔倪朋飞〕

Vue 3 企业级项目实战课 -〔杨文坚〕