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

Unix 和类似 Unix 的系统上的 MySQL 发行版包含一个名为mysql.server的脚本,该脚本使用mysqld_safe启动 MySQL 服务器。它可以在使用 System V 样式的运行目录来启动和停止系统服务的系统(例如 Linux 和 Solaris)上使用。适用于 MySQL 的 macOS 启动项也使用它。

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

Note

对于某些 Linux 平台,从 RPM 或 Debian 软件包安装的 MySQL 包括对 ManagementMySQL 服务器启动和关闭的系统支持。在这些平台上,未安装mysql.servermysqld_safe,因为它们是不必要的。有关更多信息,请参见第 2.5.10 节“使用 systemdManagementMySQL 服务器”

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

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

mysql.server将位置更改为 MySQL 安装目录,然后调用mysqld_safe。要以某些特定用户身份运行服务器,请将适当的user选项添加到全局/etc/my.cnf选项文件的[mysqld]组中,如本节后面所示。 (如果在非标准位置安装了 MySQL 的二进制发行版,则可能必须编辑mysql.server。修改它以在运行mysqld_safe之前将位置更改为正确的目录。如果执行此操作,则mysql.server的修改后的版本可能是如果您以后升级 MySQL,则覆盖;请复制您可以重新安装的编辑版本。)

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

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

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

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

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

安装脚本后,激活脚本以在系统启动时运行所需的命令取决于您的 os。在 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 shell 文件名模式匹配时,才会执行此目录中的脚本。目录中存在的任何其他文件或目录都将被静默忽略。

  • 作为上述设置的替代方法,某些 os 还使用/etc/rc.local/etc/init.d/boot.local在启动时启动其他服务。要使用此方法启动 MySQL,请将以下命令添加到适当的启动文件中:

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

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脚本支持下 table 中显示的选项。如果指定,则必须将它们放置在选项文件中,而不是在命令行中。 mysql.server仅支持startstop作为命令行参数。

table4.6 mysql.server 选项-文件选项

Option NameDescriptionType
basedirMySQL 安装目录的路径Directory name
datadirMySQL 数据目录的路径Directory name
pid-file服务器应在其中写入其进程 ID 的文件File name
service-startup-timeoutawait 服务器启动的时间Integer

MySQL 安装目录的路径。

MySQL 数据目录的路径。

服务器应在其中写入其进程 ID 的文件的路径名。除非给出绝对路径名以指定其他目录,否则服务器将在数据目录中创建文件。

如果未提供此选项,则mysql.server使用默认值host_name.pid。传递给mysqld_safe的 PID 文件值将覆盖[mysqld_safe]选项文件组中指定的任何值。由于mysql.server读取[mysqld]选项文件组而不是[mysqld_safe]组,因此可以通过在[mysqld_safe][mysqld]组中设置相同的pid-file设置来确保mysqld_safemysql.server调用时获得与手动调用时相同的值。

await 确认服务器启动的秒数。如果服务器在这段时间内没有启动,则mysql.server退出并出现错误。默认值为 900.值为 0table 示完全不 await 启动。负值意味着永远 await(无超时)。