### 4.3.2 mysqld\_安全 - MySQL 服务器启动脚本

[](<>)[](<>)[](<>)

[**mysqld\_安全的**](mysqld-safe.html)是推荐的启动方式[**mysqld**](mysqld.html)Unix 上的服务器。[**mysqld\_安全的**](mysqld-safe.html)添加了一些安全功能，例如在发生错误时重新启动服务器并将运行时信息记录到错误日志中。本节稍后将介绍错误日志记录。

笔记

对于某些 Linux 平台，从 RPM 或 Debian 软件包安装 MySQL 包括用于管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上，[**mysqld\_安全的**](mysqld-safe.html)没有安装，因为它是不必要的。有关详细信息，请参阅[第 2.5.9 节，“使用 systemd 管理 MySQL 服务器”](using-systemd.html).

不使用的一种含义[**mysqld\_安全的**](mysqld-safe.html)在使用 systemd 进行服务器管理的平台上，使用`[mysqld_safe]`要么`[安全_mysqld]`不支持选项文件中的部分，可能会导致意外行为。

[**mysqld\_安全的**](mysqld-safe.html)尝试启动一个名为[**mysqld**](mysqld.html).要覆盖默认行为并明确指定要运行的服务器的名称，请指定[`--mysqld`](mysqld-safe.html#option_mysqld_safe_mysqld)要么[`--mysqld-版本`](mysqld-safe.html#option_mysqld_safe_mysqld-version)选项[**mysqld\_安全的**](mysqld-safe.html).你也可以使用[`--ledir`](mysqld-safe.html#option_mysqld_safe_ledir)指示所在的目录[**mysqld\_安全的**](mysqld-safe.html)应该寻找服务器。

许多选项[**mysqld\_安全的**](mysqld-safe.html)与选项相同[**mysqld**](mysqld.html).看[第 5.1.7 节，“服务器命令选项”](server-options.html).

未知的选项[**mysqld\_安全的**](mysqld-safe.html)被传递给[**mysqld**](mysqld.html)如果它们是在命令行中指定的，但如果它们是在`[mysqld_safe]`一组选项文件。看[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[**mysqld\_安全的**](mysqld-safe.html)读取所有选项`[mysqld]`,`[服务器]`， 和`[mysqld_safe]`选项文件中的部分。例如，如果您指定一个`[mysqld]`像这样的部分，[**mysqld\_安全的**](mysqld-safe.html)发现并使用[`--日志错误`](mysqld-safe.html#option_mysqld_safe_log-error)选项：

```
[mysqld]
log-error=error.log
```

为了向后兼容，[**mysqld\_安全的**](mysqld-safe.html)也读`[安全_mysqld]`部分，但要保持最新状态，您应该将这些部分重命名为`[mysqld_safe]`.

[**mysqld\_安全的**](mysqld-safe.html)接受命令行和选项文件中的选项，如下表所述。有关 MySQL 程序使用的选项文件的信息，请参阅[第 4.2.2.2 节，“使用选项文件”](option-files.html).

[](<>)

**表 4.6 mysqld\_安全选项**

| 选项名称 | 描述 |
| ---- | --- |
| [--basedir](mysqld-safe.html#option_mysqld_safe_basedir) | MySQL安装目录的路径 |
| [--核心文件大小](mysqld-safe.html#option_mysqld_safe_core-file-size) | mysqld 应该能够创建的核心文件的大小 |
| [--数据目录](mysqld-safe.html#option_mysqld_safe_datadir) | 数据目录路径 |
| [--defaults-额外文件](mysqld-safe.html#option_mysqld_safe_defaults-extra-file) | 除了通常的选项文件外，还读取命名的选项文件 |
| [--默认文件](mysqld-safe.html#option_mysqld_safe_defaults-file) | 只读命名选项文件 |
| [--帮助](mysqld-safe.html#option_mysqld_safe_help) | 显示帮助信息并退出 |
| [--ledir](mysqld-safe.html#option_mysqld_safe_ledir) | 服务器所在目录的路径 |
| [--日志错误](mysqld-safe.html#option_mysqld_safe_log-error) | 将错误日志写入指定文件 |
| [--malloc-lib](mysqld-safe.html#option_mysqld_safe_malloc-lib) | 用于 mysqld 的替代 malloc 库 |
| [--mysqld](mysqld-safe.html#option_mysqld_safe_mysqld) | 要启动的服务器程序的名称（在 ledir 目录中） |
| [--mysqld-安全日志时间戳](mysqld-safe.html#option_mysqld_safe_mysqld-safe-log-timestamps) | 用于记录的时间戳格式 |
| [--mysqld-版本](mysqld-safe.html#option_mysqld_safe_mysqld-version) | 服务器程序名称的后缀 |
| [--好的](mysqld-safe.html#option_mysqld_safe_nice) | 使用 nice 程序设置服务器调度优先级 |
| [--无默认值](mysqld-safe.html#option_mysqld_safe_no-defaults) | 不读取选项文件 |
| [--打开文件限制](mysqld-safe.html#option_mysqld_safe_open-files-limit) | mysqld 应该能够打开的文件数 |
| [--pid 文件](mysqld-safe.html#option_mysqld_safe_pid-file) | 服务器进程标识文件的路径名 |
| [--插件目录](mysqld-safe.html#option_mysqld_safe_plugin-dir) | 插件安装目录 |
| [--港口](mysqld-safe.html#option_mysqld_safe_port) | 侦听 TCP/IP 连接的端口号 |
| [--skip-kill-mysqld](mysqld-safe.html#option_mysqld_safe_skip-kill-mysqld) | 不要试图杀死流浪的 mysqld 进程 |
| [--skip-系统日志](mysqld-safe.html#option_mysqld_safe_syslog) | 不要将错误消息写入系统日志；使用错误日志文件 |
| [--插座](mysqld-safe.html#option_mysqld_safe_socket) | 用于侦听 Unix 套接字连接的套接字文件 |
| [--系统日志](mysqld-safe.html#option_mysqld_safe_syslog) | 将错误消息写入系统日志 |
| [--系统日志标签](mysqld-safe.html#option_mysqld_safe_syslog-tag) | 写入系统日志的消息的标记后缀 |
| [--时区](mysqld-safe.html#option_mysqld_safe_timezone) | 将 TZ 时区环境变量设置为命名值 |
| [--用户](mysqld-safe.html#option_mysqld_safe_user) | 以名为 user 的用户身份运行 mysqld\_姓名或数字用户 ID 用户\_id |

-   [](<>) [`- 帮助`](mysqld-safe.html#option_mysqld_safe_help)

    [](<>)[](<>)

    显示帮助信息并退出。

-   [](<>) [`--basedir=*`目录名`*`](mysqld-safe.html#option_mysqld_safe_basedir)

    [](<>)[](<>)

    MySQL 安装目录的路径。

-   [](<>) [`--核心文件大小=*`尺寸`*`](mysqld-safe.html#option_mysqld_safe_core-file-size)

    [](<>)[](<>)

    核心文件的大小[**mysqld**](mysqld.html)应该可以创建。选项值传递给**ulimit -c**.

    笔记

    这[`innodb_buffer_pool_in_core_file`](innodb-parameters.html#sysvar_innodb_buffer_pool_in_core_file)变量可用于减少支持它的操作系统上核心文件的大小。有关详细信息，请参阅[第 15.8.3.7 节，“从核心文件中排除缓冲池页面”](innodb-buffer-pool-in-core-file.html).

-   [](<>) [`--datadir=*`目录名`*`](mysqld-safe.html#option_mysqld_safe_datadir)

    [](<>)[](<>)

    数据目录的路径。

-   [](<>) [`--defaults-extra-file=*`文件名`*`](mysqld-safe.html#option_mysqld_safe_defaults-extra-file)

    [](<>)[](<>)

    除了通常的选项文件外，还要阅读此选项文件。如果该文件不存在或无法访问，则服务器将退出并出现错误。如果*`文件名`*不是绝对路径名，它是相对于当前目录解释的。如果使用，这必须是命令行上的第一个选项。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--默认文件=*`文件名`*`](mysqld-safe.html#option_mysqld_safe_defaults-file)

    [](<>)[](<>)

    仅使用给定的选项文件。如果该文件不存在或无法访问，则服务器将退出并出现错误。如果*`文件名`*不是绝对路径名，它是相对于当前目录解释的。如果使用，这必须是命令行上的第一个选项。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--ledir=*`目录名`*`](mysqld-safe.html#option_mysqld_safe_ledir)

    [](<>)[](<>)

    如果[**mysqld\_安全的**](mysqld-safe.html)找不到服务器，使用此选项指示服务器所在目录的路径名。

    此选项仅在命令行上被接受，而不是在选项文件中。在使用 systemd 的平台上，可以在 value 中指定 value`MYSQLD_OPTS`.看[第 2.5.9 节，“使用 systemd 管理 MySQL 服务器”](using-systemd.html).

-   [](<>) [`--日志错误=*`文件名`*`](mysqld-safe.html#option_mysqld_safe_log-error)

    [](<>)[](<>)

    将错误日志写入给定文件。看[第 5.4.2 节，“错误日志”](error-log.html).

-   [](<>) [`--mysqld-safe-log-timestamps`](mysqld-safe.html#option_mysqld_safe_mysqld-safe-log-timestamps)

    [](<>)[](<>)

    此选项控制生成的日志输出中时间戳的格式[**mysqld\_安全的**](mysqld-safe.html).以下列表描述了允许的值。对于任何其他值，[**mysqld\_安全的**](mysqld-safe.html)记录警告并使用`世界标准时间`格式。

    -   `世界标准时间`,`世界标准时间`

        ISO 8601 UTC 格式（与[`--log_timestamps=UTC`](server-system-variables.html#sysvar_log_timestamps)用于服务器）。这是默认设置。

    -   `系统`,`系统`

        ISO 8601 本地时间格式（与[`--log_timestamps=系统`](server-system-variables.html#sysvar_log_timestamps)用于服务器）。

    -   `连字符`,`连字符`

        *`YY-MM-DD h:mm:ss`*格式，如[**mysqld\_安全的**](mysqld-safe.html)对于 MySQL 5.6。

    -   `遗产`,`遗产`

        *`YYMMDD hh:mm:ss`*格式，如[**mysqld\_安全的**](mysqld-safe.html)在 MySQL 5.6 之前。

-   [](<>) [`--malloc-lib=[*`lib_name`*]`](mysqld-safe.html#option_mysqld_safe_malloc-lib)

    [](<>)[](<>)[](<>)

    用于内存分配而不是系统的库的名称`malloc()`图书馆。选项值必须是目录之一`/usr/lib`,`/usr/lib64`,`/usr/lib/i386-linux-gnu`， 要么`/usr/lib/x86_64-linux-gnu`.

    这[`--malloc-lib`](mysqld-safe.html#option_mysqld_safe_malloc-lib)选项通过修改`LD_PRELOAD`影响动态链接的环境值，以使加载程序能够在以下情况下找到内存分配库[**mysqld**](mysqld.html)运行：

    -   如果没有给出选项，或者给出的选项没有值 ([`--malloc-lib=`](mysqld-safe.html#option_mysqld_safe_malloc-lib)),`LD_PRELOAD`未修改且未尝试使用`tcmalloc`.

    -   在 MySQL 8.0.21 之前，如果选项给出为[`--malloc-lib=tcmalloc`](mysqld-safe.html#option_mysqld_safe_malloc-lib),[**mysqld\_安全的**](mysqld-safe.html)寻找一个`tcmalloc`图书馆在`/usr/lib`.如果`tmalloc`找到后，将其路径名添加到`LD_PRELOAD`价值[**mysqld**](mysqld.html).如果`tcmalloc`没有找到，[**mysqld\_安全的**](mysqld-safe.html)因错误而中止。

        从 MySQL 8.0.21 开始，`tcmalloc`不是允许的值[`--malloc-lib`](mysqld-safe.html#option_mysqld_safe_malloc-lib)选项。

    -   如果选项给出为[`--malloc-lib=*`/path/to/some/library`*`](mysqld-safe.html#option_mysqld_safe_malloc-lib)，该完整路径被添加到`LD_PRELOAD`价值。如果完整路径指向一个不存在或不可读的文件，[**mysqld\_安全的**](mysqld-safe.html)因错误而中止。

    -   对于以下情况[**mysqld\_安全的**](mysqld-safe.html)将路径名添加到`LD_PRELOAD`，它将路径添加到变量已有的任何现有值的开头。

    笔记

    在使用 systemd 管理服务器的系统上，[**mysqld\_安全的**](mysqld-safe.html)不可用。相反，通过设置指定分配库`LD_PRELOAD`在`/etc/sysconfig/mysql`.

    Linux 用户可以使用`libtcmalloc_minimal.so`任何平台上的库`tcmalloc`包安装在`/usr/lib`通过将这些行添加到`我的.cnf`文件：

    ```
    [mysqld_safe]
    malloc-lib=tcmalloc
    ```

    要使用特定的`tcmalloc`库，指定其完整路径名。例子：

    ```
    [mysqld_safe]
    malloc-lib=/opt/lib/libtcmalloc_minimal.so
    ```

-   [](<>) [`--mysqld=*`prog_name`*`](mysqld-safe.html#option_mysqld_safe_mysqld)

    [](<>)[](<>)

    服务器程序的名称（在`雷迪尔`目录），您要启动。如果您使用 MySQL 二进制分发但数据目录在二进制分发之外，则需要此选项。如果[**mysqld\_安全的**](mysqld-safe.html)找不到服务器，使用[`--ledir`](mysqld-safe.html#option_mysqld_safe_ledir)选项来指示服务器所在目录的路径名。

    此选项仅在命令行上被接受，而不是在选项文件中。在使用 systemd 的平台上，可以在 value 中指定 value`MYSQLD_OPTS`.看[第 2.5.9 节，“使用 systemd 管理 MySQL 服务器”](using-systemd.html).

-   [](<>) [`--mysqld-版本=*`后缀`*`](mysqld-safe.html#option_mysqld_safe_mysqld-version)

    [](<>)[](<>)

    此选项类似于[`--mysqld`](mysqld-safe.html#option_mysqld_safe_mysqld)选项，但您只指定服务器程序名称的后缀。基本名称假定为[**mysqld**](mysqld.html).例如，如果您使用[`--mysqld-版本=调试`](mysqld-safe.html#option_mysqld_safe_mysqld-version),[**mysqld\_安全的**](mysqld-safe.html)开始[**mysqld-调试**](mysqld.html)程序中`雷迪尔`目录。如果论据[`--mysqld-版本`](mysqld-safe.html#option_mysqld_safe_mysqld-version)是空的，[**mysqld\_安全的**](mysqld-safe.html)用途[**mysqld**](mysqld.html)在里面`雷迪尔`目录。

    此选项仅在命令行上被接受，而不是在选项文件中。在使用 systemd 的平台上，可以在 value 中指定 value`MYSQLD_OPTS`.看[第 2.5.9 节，“使用 systemd 管理 MySQL 服务器”](using-systemd.html).

-   [](<>) [`--不错=*`优先`*`](mysqld-safe.html#option_mysqld_safe_nice)

    [](<>)[](<>)

    使用`好的`程序将服务器的调度优先级设置为给定值。

-   [](<>) [`--no-defaults`](mysqld-safe.html#option_mysqld_safe_no-defaults)

    [](<>)[](<>)

    不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败，[`--no-defaults`](mysqld-safe.html#option_mysqld_safe_no-defaults)可以用来防止它们被读取。如果使用，这必须是命令行上的第一个选项。

    有关此选项和其他选项文件选项的更多信息，请参阅[第 4.2.2.3 节，“影响选项文件处理的命令行选项”](option-file-options.html).

-   [](<>) [`--open-files-limit=*`数数`*`](mysqld-safe.html#option_mysqld_safe_open-files-limit)

    [](<>)[](<>)

    文件的数量[**mysqld**](mysqld.html)应该可以打开。选项值传递给**ulimit -n**.

    笔记

    你必须开始[**mysqld\_安全的**](mysqld-safe.html)作为`根`使其正常运行。

-   [](<>) [`--pid 文件=*`文件名`*`](mysqld-safe.html#option_mysqld_safe_pid-file)

    [](<>)[](<>)

    路径名[**mysqld**](mysqld.html)应该用于它的进程 ID 文件。

-   [](<>) [`--插件目录=*`目录名`*`](mysqld-safe.html#option_mysqld_safe_plugin-dir)

    [](<>)[](<>)

    插件目录的路径名。

-   [](<>) [`--端口=*`端口号`*`](mysqld-safe.html#option_mysqld_safe_port)

    [](<>)[](<>)[](<>)

    服务器在侦听 TCP/IP 连接时应使用的端口号。端口号必须为 1024 或更高，除非服务器由`根`操作系统用户。

-   [](<>) [`--skip-kill-mysqld`](mysqld-safe.html#option_mysqld_safe_skip-kill-mysqld)

    [](<>)[](<>)

    不要试图杀死流浪者[**mysqld**](mysqld.html)启动时的进程。此选项仅适用于 Linux。

-   [](<>) [`--socket=*`小路`*`](mysqld-safe.html#option_mysqld_safe_socket)

    [](<>)[](<>)

    服务器在侦听本地连接时应使用的 Unix 套接字文件。

-   [](<>) [`--系统日志`](mysqld-safe.html#option_mysqld_safe_syslog),[`--skip-系统日志`](mysqld-safe.html#option_mysqld_safe_syslog)

    [](<>)[](<>)[](<>)[](<>)

    [`--系统日志`](mysqld-safe.html#option_mysqld_safe_syslog)导致错误消息被发送到`系统日志`在支持的系统上**记录器**程序。`--skip-系统日志`抑制使用`系统日志`;消息被写入错误日志文件。

    什么时候`系统日志`用于错误记录，`守护进程错误`设施/严重性用于所有日志消息。

    使用这些选项来控制[**mysqld**](mysqld.html)不推荐使用日志记录。要将错误日志输出写入系统日志，请使用以下说明[第 5.4.2.8 节，“错误记录到系统日志”](error-log-syslog.html).要控制设施，请使用服务器[`log_syslog_facility`](server-system-variables.html#sysvar_log_syslog_facility)系统变量。

-   [](<>) [`--系统日志标签=*`标签`*`](mysqld-safe.html#option_mysqld_safe_syslog-tag)

    [](<>)[](<>)

    用于登录`系统日志`, 消息来自[**mysqld\_安全的**](mysqld-safe.html)和[**mysqld**](mysqld.html)写有标识符`mysqld_safe`和`mysqld`， 分别。要为标识符指定后缀，请使用[`--系统日志标签=*`标签`*`](mysqld-safe.html#option_mysqld_safe_syslog-tag)，它将标识符修改为`mysqld_safe-*`标签`*`和`mysqld-*`标签`*`.

    使用该选项控制[**mysqld**](mysqld.html)不推荐使用日志记录。使用服务器[`log_syslog_tag`](server-system-variables.html#sysvar_log_syslog_tag)而是系统变量。看[第 5.4.2.8 节，“错误记录到系统日志”](error-log-syslog.html).

-   [](<>) [`--时区=*`时区`*`](mysqld-safe.html#option_mysqld_safe_timezone)

    [](<>)[](<>)

    设置`太极`时区环境变量到给定的选项值。请查阅您的操作系统文档以了解合法的时区规范格式。

-   [](<>) [`--用户={*`用户名`*|*`用户身份`*}`](mysqld-safe.html#option_mysqld_safe_user)

     [](<>)[](<>)

    跑过[**mysqld**](mysqld.html)服务器作为具有该名称的用户*`用户名`*或数字用户 ID*`用户身份`*.（本文中的“用户”是指系统登录帐户，而不是授权表中列出的 MySQL 用户。）

    如果你执行[**mysqld\_安全的**](mysqld-safe.html)与[`--defaults 文件`](mysqld-safe.html#option_mysqld_safe_defaults-file)要么[`--defaults-额外文件`](mysqld-safe.html#option_mysqld_safe_defaults-extra-file)option 命名选项文件，该选项必须是命令行中给出的第一个选项，否则不使用选项文件。例如，此命令不使用命名的选项文件：


```
mysql> mysqld_safe --port=port_num --defaults-file=file_name
```

相反，请使用以下命令：

```
mysql> mysqld_safe --defaults-file=file_name --port=port_num
```

这[**mysqld\_安全的**](mysqld-safe.html)编写脚本以便它通常可以启动从 MySQL 的源或二进制发行版安装的服务器，即使这些类型的发行版通常将服务器安装在稍微不同的位置。（看[第 2.1.5 节，“安装布局”](installation-layouts.html).)[**mysqld\_安全的**](mysqld-safe.html)期望以下条件之一为真：

-   服务器和数据库可以相对于工作目录（从哪个目录[**mysqld\_安全的**](mysqld-safe.html)被调用）。对于二进制分布，[**mysqld\_安全的**](mysqld-safe.html)在其工作目录下查找`斌`和`数据`目录。对于源分布，它寻找`执行程序`和`变量`目录。如果您执行，则应满足此条件[**mysqld\_安全的**](mysqld-safe.html)从您的 MySQL 安装目录（例如，`/usr/local/mysql`对于二进制分布）。

-   如果相对于工作目录找不到服务器和数据库，[**mysqld\_安全的**](mysqld-safe.html)尝试通过绝对路径名定位它们。典型的位置是`/usr/local/libexec`和`/usr/local/var`.实际位置是根据在构建时配置到分布中的值确定的。如果 MySQL 安装在配置时指定的位置，它们应该是正确的。

    因为[**mysqld\_安全的**](mysqld-safe.html)试图找到相对于它自己的工作目录的服务器和数据库，你可以在任何地方安装 MySQL 的二进制发行版，只要你运行[**mysqld\_安全的**](mysqld-safe.html)从 MySQL 安装目录：


```
cd mysql_installation_directory
bin/mysqld_safe &
```

如果[**mysqld\_安全的**](mysqld-safe.html)失败，即使从 MySQL 安装目录调用，指定[`--ledir`](mysqld-safe.html#option_mysqld_safe_ledir)和[`--数据目录`](mysqld-safe.html#option_mysqld_safe_datadir)用于指示服务器和数据库在系统上的目录的选项。

[**mysqld\_安全的**](mysqld-safe.html)尝试使用**睡觉**和**日期**系统实用程序来确定它每秒尝试启动的次数。如果这些实用程序存在并且每秒尝试的启动次数大于 5，[**mysqld\_安全的**](mysqld-safe.html)在重新开始之前等待 1 整秒。这是为了防止在重复失败的情况下过度使用 CPU。（错误 #11761530、错误 #54035）

当你使用[**mysqld\_安全的**](mysqld-safe.html)开始[**mysqld**](mysqld.html),[**mysqld\_安全的**](mysqld-safe.html)安排来自自身和来自的错误（和通知）消息[**mysqld**](mysqld.html)去同一个目的地。

有几种[**mysqld\_安全的**](mysqld-safe.html)用于控制这些消息的目的地的选项：

-   [`--日志错误=*`文件名`*`](mysqld-safe.html#option_mysqld_safe_log-error)：将错误消息写入指定的错误文件。

-   [`--系统日志`](mysqld-safe.html#option_mysqld_safe_syslog): 将错误信息写入`系统日志`在支持的系统上**记录器**程序。

-   [`--skip-系统日志`](mysqld-safe.html#option_mysqld_safe_syslog): 不要将错误信息写入`系统日志`.消息被写入默认错误日志文件 (`*`主机名`*。呃`在数据目录中），或者如果[`--日志错误`](mysqld-safe.html#option_mysqld_safe_log-error)给出了选项。

    如果没有给出这些选项，则默认为[`--skip-系统日志`](mysqld-safe.html#option_mysqld_safe_syslog).

    什么时候[**mysqld\_安全的**](mysqld-safe.html)写一条消息，通知去日志目的地（`系统日志`或错误日志文件）和`标准输出`.错误转到日志记录目标并`标准错误`.

笔记

控制[**mysqld**](mysqld.html)从记录[**mysqld\_安全的**](mysqld-safe.html)已弃用。使用服务器的本机`系统日志`改为支持。有关详细信息，请参阅[第 5.4.2.8 节，“错误记录到系统日志”](error-log-syslog.html).
