Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  mysql.server — MySQL Server Startup Script

6.3.3 mysql.server — MySQL 服务器启动脚本

MySQL 在 Unix 和 Unix-like 系统中的发行版包括一个名为 mysql.server 的脚本,该脚本使用 mysqld_safe 启动 MySQL 服务器。它可以在使用 System V 风格的运行目录来启动和停止系统服务的系统上使用,如 Linux 和 Solaris。它也被 macOS 的 MySQL 启动项使用。

mysql.server 是 MySQL 源代码树中的脚本名称。安装后的名称可能不同(例如,mysqldmysql)。在以下讨论中,根据您的系统调整名称 mysql.server

Note

对于某些 Linux 平台,MySQL 的 RPM 或 Debian 软件包安装包括 systemd 支持,以管理 MySQL 服务器的启动和关闭。在这些平台上,mysql.servermysqld_safe 不会被安装,因为它们是不必要的。有关更多信息,请参阅 第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”

要手动使用 mysql.server 脚本启动或停止服务器,请从命令行中使用 startstop 参数:

mysql.server start
mysql.server stop

mysql.server 将位置更改为 MySQL 安装目录,然后调用 mysqld_safe。要以特定用户身份运行服务器,请将适当的 user 选项添加到全局 /etc/my.cnf 选项文件的 [mysqld] 组中,如本节后面所示。(可能需要编辑 mysql.server 如果您安装了 MySQL 的二进制分布式版本在非标准位置中。修改它以更改位置到正确的目录,然后运行 mysqld_safe。如果您这样做,您修改的 mysql.server 版本可能会在将来升级 MySQL 时被覆盖;创建一个副本,以便您可以重新安装。)

mysql.server stop 通过发送信号停止服务器。您也可以手动停止服务器,执行 mysqladmin shutdown

要在服务器上自动启动和停止 MySQL,请将启动和停止命令添加到 /etc/rc* 文件的适当位置:

  • 如果您使用 Linux 服务器 RPM 软件包 (MySQL-server-VERSION.rpm),或 native Linux 软件包安装,mysql.server 脚本可能会被安装在 /etc/init.d 目录中,名称为 mysqldmysql。请参阅 第 2.5.4 节,“使用 Oracle 的 RPM 软件包在 Linux 上安装 MySQL”,以获取有关 Linux RPM 软件包的更多信息。

  • 如果从源代码分布或使用二进制分布格式安装 MySQL,不会自动安装 mysql.server,可以手动安装该脚本。该脚本位于 MySQL 安装目录下的 support-files 目录中或在 MySQL 源代码树中。将脚本复制到 /etc/init.d 目录中,名称为 mysql,并使其可执行:

    cp mysql.server /etc/init.d/mysql
    chmod +x /etc/init.d/mysql

    安装脚本后,激活系统启动所需的命令取决于操作系统。在 Linux 上,可以使用 chkconfig

    chkconfig --add mysql

    在某些 Linux 系统上,以下命令也似乎是必要的,以完全启用 mysql 脚本:

    chkconfig --level 345 mysql on
  • 在 FreeBSD 上,启动脚本通常应该位于 /usr/local/etc/rc.d/。将 mysql.server 脚本安装为 /usr/local/etc/rc.d/mysql.server.sh,以启用自动启动。rc(8) 手册页指出,在该目录中的脚本只有在其基本名称与 *.sh shell 文件名模式匹配时才会被执行。任何其他文件或目录在该目录中都将被忽略。

  • 作为前述设置的替代方法,一些操作系统也使用 /etc/rc.local/etc/init.d/boot.local 来启动其他服务。在启动时,追加以下命令到适当的启动文件中:

    /bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
  • 对于其他系统,请查看操作系统文档,以了解如何安装启动脚本。

mysql.server 从选项文件的 [mysql.server][mysqld] 部分读取选项。为了向后兼容,它也读取 [mysql_server] 部分,但为了当前,您应该将这些部分重命名为 [mysql.server]

您可以在全局 /etc/my.cnf 文件中添加 mysql.server 选项。典型的 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 只支持 startstop 作为命令行参数。

表 6.8 mysql.server 选项文件选项

Option Name Description Type
basedir MySQL 安装目录的路径 目录名称
datadir MySQL 数据目录的路径 目录名称
pid-file 服务器应该写入其进程 ID 的文件 文件名称
service-startup-timeout 等待服务器启动的时间 整数

  • basedir=dir_name

    MySQL 安装目录的路径。

  • datadir=dir_name

    MySQL 数据目录的路径。

  • pid-file=file_name

    服务器应该写入其进程 ID 的文件的路径名称。服务器将在数据目录中创建该文件,除非指定了绝对路径名称以指定不同的目录。

    如果不提供该选项,mysql.server 将使用默认值 主机名.pid。传递给 mysqld_safe 的 PID 文件值将覆盖 [mysqld_safe] 选项文件组中的任何值。因为 mysql.server 读取 [mysqld] 选项文件组,但不读取 [mysqld_safe] 组,因此您可以确保 mysqld_safe 在从 mysql.server 调用时和手动调用时获得相同的值,方法是将相同的 pid-file 设置放在 [mysqld_safe][mysqld] 组中。

  • service-startup-timeout=

    等待服务器启动确认的秒数。如果服务器在此时间内未启动,mysql.server 将退出并显示错误。默认值为 900。值为 0 表示不等待启动。负值表示无限等待(无超时)。