Unix 和类 Unix 系统上的 MySQL 发行版包含一个名为 mysql.server 的脚本,该脚本使用 mysqld_safe 启动 MySQL 服务器。它可以在使用 System V 风格运行目录启动和停止系统服务的系统(如 Linux 和 Solaris)上使用。它也被 macOS 的 MySQL 启动项使用。
mysql.server 是 MySQL 源代码树中使用的脚本名称。安装的名称可能不同(例如,mysqld 或 mysql)。在以下讨论中,请根据您的系统调整名称 mysql.server。
对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括对管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上,mysql.server 和 mysqld_safe 未安装,因为它们是不必要的。有关更多信息,请参阅 第 2.5.9 节“使用 systemd 管理 MySQL 服务器”。
要使用 mysql.server 脚本手动启动或停止服务器,请从命令行使用 start
或 stop
参数调用它
mysql.server start
mysql.server stop
mysql.server 将位置更改为 MySQL 安装目录,然后调用 mysqld_safe。要以某个特定用户身份运行服务器,请将相应的 user
选项添加到全局 /etc/my.cnf
选项文件的 [mysqld]
组中,如本节稍后所示。(如果您在非标准位置安装了 MySQL 的二进制发行版,则可能必须编辑 mysql.server。在运行 mysqld_safe 之前,请修改它以更改到正确的目录。如果您这样做,如果您将来升级 MySQL,则您修改的 mysql.server 版本可能会被覆盖;请复制您编辑的版本,以便您可以重新安装。)
mysql.server stop 通过向服务器发送信号来停止服务器。您还可以通过执行 mysqladmin shutdown 手动停止服务器。
要在服务器上自动启动和停止 MySQL,您必须将启动和停止命令添加到 /etc/rc*
文件中的适当位置
如果您使用 Linux 服务器 RPM 软件包(
MySQL-server-
)或本机 Linux 软件包安装,则 mysql.server 脚本可以安装在VERSION
.rpm/etc/init.d
目录中,名称为mysqld
或mysql
。有关 Linux RPM 软件包的更多信息,请参阅 第 2.5.4 节“使用 Oracle 提供的 RPM 软件包在 Linux 上安装 MySQL”。如果您从源代码发行版安装 MySQL 或使用不会自动安装 mysql.server 的二进制发行版格式安装 MySQL,则可以手动安装该脚本。它可以在 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
在启动时启动其他服务。要使用此方法启动 MySQL,请将类似于以下内容的命令附加到相应的启动文件中/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 仅支持 start
和 stop
作为命令行参数。
表 6.8 mysql.server 选项文件选项
选项名称 | 描述 | 类型 |
---|---|---|
basedir |
MySQL 安装目录的路径 | 目录名称 |
datadir |
MySQL 数据目录的路径 | 目录名称 |
pid-file |
服务器应在其写入进程 ID 的文件 | 文件名 |
service-startup-timeout |
等待服务器启动的时间 | 整数 |
MySQL 安装目录的路径。
MySQL 数据目录的路径。
服务器应在其写入进程 ID 的文件的路径名。除非给出绝对路径名以指定不同的目录,否则服务器将在数据目录中创建该文件。
如果未给出此选项,则 mysql.server 使用默认值
。传递给 mysqld_safe 的 PID 文件值将覆盖主机名
.pid[mysqld_safe]
选项文件组中指定的任何值。因为 mysql.server 读取[mysqld]
选项文件组,而不读取[mysqld_safe]
组,所以您可以通过在[mysqld_safe]
和[mysqld]
组中都放置相同的pid-file
设置,来确保 mysqld_safe 在从 mysql.server 调用时获得与手动调用时相同的值。等待服务器启动确认的时间(以秒为单位)。如果服务器在此时间内未启动,则 mysql.server 将退出并显示错误。默认值为 900。值为 0 表示根本不等待启动。负值表示永远等待(无超时)。