mysql 的自动启动 使用配置文件 /etc/my.cnf

本文介绍了多种启动MySQL服务器的方式,包括直接调用mysqld、作为Windows服务运行、使用mysqld_safe脚本、mysql.server脚本及MacOSX StartupItem等,并提供了在不同操作系统上自动启动和停止MySQL服务器的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常你可以用以下方法启动mysqld服务器:

?        直接调用mysqld。该方法适合任何平台。

?        作为Windows服务运行MySQL服务器。可以在支持服务的Windows版本(例如NT、2000、XP和2003)上实现。可以将服务设置为在Windows启动时自动启动服务器,或根据需要启动的手动服务。相关说明参见2.3.12节,“以Windows服务方式启动MySQL”。

?        调用mysqld_safe,可以为mysqld确定正确的选项然后使用这些选项来运行。该脚本适用于基于BSD Unix的系统。请参见5.1.3节,“mysqld_safe:MySQL服务器启动脚本”。

?        调用mysql.server。该脚本主要用于使用系统V-style运行目录的系统的启动和关闭,它通常安装到mysql下。mysql.server脚本调用mysqld_safe来启动服务器。请参见5.1.4节,“mysql.server:MySQL服务器启动脚本”。

?        你可以在Mac OS X上安装一个单独的MySQL Startup Item安装包来使系统启动时自动启动MySQL。Startup Item调用mysql.server来启动服务器。详细介绍参见2.5节,“在Mac OS X上安装MySQL”。

mysql.servermysqld_safe脚本和Mac OS X Startup Item可以用来手动启动服务器,或自动启动系统。mysql.server和Startup Item还可以用来停止服务器。

mysql.server脚本可以被用来启动或停止服务器,通过用start或stop参数调用它:

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

mysql.server启动服务器之前,它把目录改变到MySQL安装目录,然后调用safe_mysqld。如果你想要作为一些特定的用户运行服务器,在/etc/my.cnf选项文件的[mysqld]组增加相应user选项,如本节后面所示。(如果你有在一个非标准的地点安装的二进制分发版,你可能需要编辑mysql.server。修改它,运行safe_mysqld前,cd到正确的目录。注意如果你修改mysql.server,那么某个时候升级MySQL时,你的修改版本将被覆盖,因此你应该做一个你可重新安装的编辑过的版本的拷贝)。

mysql.server stop通过向服务器发出一个信号停止它。你可手动执行mysqladmin shutdown关闭服务器。

要想在服务器上自动启动和停止MySQL,应在“/etc/rc *文件中适当的地方增加启动、停止命令。

如果你使用Linux服务器RPM安装软件包(MySQL-server-VERSION.rpm),mysql.server脚本安装在/etc/init.d目录中,名为MySQL。你不需要手动安装它。关于Linux RPM软件包的详细信息参见2.4节,“在Linux下安装MySQL”。

一些供应商提供的RPM软件包安装的启动脚本名字不同,例如mysqld

如果从不自动安装mysql.server的源码分发版或二进制分发版格式来安装MySQL,可以手动安装它。可以在MySQL安装目录下或MySQL源码树的support-files目录中找到脚本。

要想手动安装mysql.server,用名称mysql将它复制到/etc/init.d目录,然后将它变为可执行文件。只需要将位置更改为mysql.serveris所在并执行这些命令的相应目录:

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

旧的Red Hat系统使用/etc/rc.d/init.d目录,不使用/etc/init.d。相应地调节前面的命令。也可以首先创建指向/etc/rc.d/init.d的符号连接/etc/init.d:

shell>cd /etc
shell>ln -s rc.d/init.d .

安装脚本后,用来激活它以便在系统启动时运行所需要的命令取决于你的操作系统。在Linux中,你可以使用chkconfig:

shell>chkconfig --addMySQL

在一些Linux系统中,还需要下面的命令来完全激活MySQL脚本:

shell>chkconfig --level 345MySQL on

在FreeBSD中,启动脚本通常应当位于/usr/local/etc/rc.d/。手册的rc(8)页内说明只有该目录脚本的基本名匹 配*.shshell文件名模式,脚本才会执行。目录内的其它文件或目录将被忽略掉。换句话说,在FreeBSD中,应当将mysql.server脚本 安装为/usr/local/etc/rc.d/mysql.server.sh以便自动启动。

前面设置的另一种情况是,一些操作系统启动时也使用/etc/rc.local或/etc/init.d/boot.local来启动其它服务。要想使用该方法启动MySQL,你可以在相应启动文件后面追加一条命令:

/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'

对于其它系统,查阅操作系统的文档来查看安装启动脚本的方法。

你也可以在一个全局“/etc/my.cnf”文件中增加mysql.server的选项。一个典型的“/etc/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脚本使用下列变量:basedir、datadir和pid-file。定义后,必须将它们放到选项文件中,不能放到命令行。mysql.server只识别start和stop命令行参数。

下面的表显示了服务器和每个启动脚本从选项文件读取哪个选项组:

脚本

选项组

mysqld

[mysqld],[server],[mysqld-major-version]

mysql.server

[mysqld],[mysql.server],[server]

mysqld_safe

[mysqld],[server],[mysqld_safe]

[mysqld-major-version]意味着名为[mysqld-5.0]的组,[mysqld-5.1]用于版本为5.0.x、5.1.x等的服务器。该特性可以用来指定只被给定发布系列的服务器读取的选项。

为了向后兼容,mysql.server还读取[mysql_server]组,mysqld_safe还读取[safe_mysqld]组。然而,当使用MySQL 5.1时,你应当更新选项文件,使用[mysql.server]和[mysqld_safe]组。

参见4.3.2节,“使用选项文件”。

<think>嗯,用户现在在问关于MySQL配置文件的问题,具体是/etc/my.cnf.d/mysql-server.cnf和/etc/my.cnf的区别,哪个是主配置文件。之前用户还问了高版本PHP的模块化问题,可能他现在在配置服务器环境,遇到了MySQL配置的问题,需要明确配置文件的结构和优先级。 首先,我需要回忆一下MySQL配置文件加载顺序。记得MySQL会按照一定的顺序读取配置文件,通常是/etc/my.cnf、/etc/mysql/my.cnf,然后是~/.my.cnf。另外,一些发行版,比如某些Linux系统,会将配置分散在/etc/my.cnf.d/目录下的多个文件中,这样方便管理同的配置部分,比如服务端和客户端的配置分开。 用户提到的两个文件,/etc/my.cnf和/etc/my.cnf.d/mysql-server.cnf,需要确定它们之间的关系。可能主配置文件是/etc/my.cnf,而mysql-server.cnf是放在conf.d目录下的一个片段,被主文件包含进去。或者反过来,取决于具体的系统配置。 接下来,我需要确认同系统上的默认配置情况。例如,在Red Hat系的系统(如CentOS、Fedora)中,MySQL或MariaDB通常会使用/etc/my.cnf作为主文件,并且在其中包含conf.d目录下的文件。这样用户可以在conf.d中添加自定义配置,而无需修改主文件,便于维护和升级。 另外,需要解释配置文件的优先级。当多个配置文件存在时,后面的配置会覆盖前面的。所以如果在/etc/my.cnf中设置了某个参数,又在/etc/my.cnf.d/mysql-server.cnf中设置了同的值,后面的可能会覆盖前面的,具体取决于包含的顺序。 用户可能想知道哪个文件应该优先修改,或者当配置冲突时哪个文件的设置会生效。这时候需要说明include指令的作用,以及文件加载的顺序。例如,主配置文件/etc/my.cnf可能包含一个!includedir /etc/my.cnf.d/,这样该目录下的所有.cnf文件会按字母顺序被读取,因此mysql-server.cnf中的配置可能被后续其他文件覆盖,或者覆盖前面的设置。 另外,用户可能在实际操作中遇到了配置生效的问题,需要检查配置文件的加载顺序和是否有多个文件对同一参数进行了设置。这时候需要指导用户如何检查MySQL的实际配置,比如使用SHOW VARIABLES命令或者查看启动时的参数。 最后,总结时应该明确主配置文件通常是/etc/my.cnf,而/etc/my.cnf.d/中的文件是补充,但具体还要看系统发行版和安装方式。需要提醒用户检查主文件中是否有包含其他目录的指令,并注意文件加载顺序和优先级。</think>在 MySQL 或 MariaDB 的配置中,`/etc/my.cnf` 和 `/etc/my.cnf.d/mysql-server.cnf` 的**区别和优先级**取决于系统的具体实现和配置方式。以下是详细解释: --- ### **1.配置文件:`/etc/my.cnf`** - **定位**: `/etc/my.cnf` 是 MySQL/MariaDB 的**主配置文件**,是全局配置的核心入口。 - **作用**: 通常包含全局配置参数(如服务端、客户端、日志、内存等基础设置),并可能通过 `!include` 或 `!includedir` 指令引入其他子配置文件。 - **加载顺序**: MySQL 默认按以下顺序加载配置文件(后加载的配置会覆盖前面的): ``` 1. /etc/my.cnf 2. /etc/mysql/my.cnf 3. ~/.my.cnf ``` --- ### **2.配置文件:`/etc/my.cnf.d/mysql-server.cnf`** - **定位**: 这是**子配置文件**,属于 `/etc/my.cnf.d/` 目录下的一个文件。该目录用于存放模块化配置片段。 - **作用**: 通常由系统包管理器(如 `yum`、`apt`)自动生成,存放服务端相关配置(如 `[mysqld]` 或 `[mariadb]` 段)。例如: ```ini [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock ``` - **加载机制**: 如果主配置文件 `/etc/my.cnf` 中包含 `!includedir /etc/my.cnf.d/`,则会按字母顺序加载该目录下的所有 `.cnf` 文件。 --- ### **3. 两者的关系和优先级** #### **场景 1:主配置文件包含子目录** - 若 `/etc/my.cnf` 中有以下指令: ```ini !includedir /etc/my.cnf.d/ ``` 则所有 `/etc/my.cnf.d/*.cnf` 文件会被加载,且**按文件名字母顺序生效**(后加载的配置覆盖前面的)。 **例如**:`mysql-server.cnf` 和 `custom.cnf` 中若存在相同参数,`custom.cnf` 可能覆盖前者(取决于文件名排序)。 #### **场景 2:主配置文件与子配置独立** - 若 `/etc/my.cnf` 未包含 `/etc/my.cnf.d/`,则子配置文件需手动引入,否则会被加载。 #### **优先级总结**: 1. 直接在主配置文件中定义的参数优先级**最高**(最后加载的配置生效)。 2. 若子配置文件中的参数与主文件冲突,则**后加载的配置覆盖先加载的**。 --- ### **4. 实际系统中的常见配置** - **Red Hat/CentOS**: - 默认使用 `/etc/my.cnf` 作为主文件,并通过 `!includedir /etc/my.cnf.d/` 加载子配置。 - `/etc/my.cnf.d/mysql-server.cnf` 通常由 MySQL 或 MariaDB 的 RPM 包生成,包含服务端基础配置。 - **Debian/Ubuntu**: - 更倾向于使用 `/etc/mysql/my.cnf` 作为主文件,并通过 `!includedir` 加载 `/etc/mysql/conf.d/` 和 `/etc/mysql/mariadb.conf.d/` 下的配置。 --- ### **5. 如何验证配置生效?** - **查看加载的配置文件**: 运行以下命令查看 MySQL 实际加载的配置路径: ```bash mysqld --help --verbose | grep "Default options" ``` - **检查配置优先级**: 在 MySQL 中执行 `SHOW VARIABLES` 或直接查询具体参数: ```sql SHOW VARIABLES LIKE 'datadir'; ``` --- ### **6. 最佳实践** 1. **优先修改配置文件**: 在 `/etc/my.cnf.d/` 下添加自定义配置(如 `custom.cnf`),避免直接修改主文件,便于升级维护。 2. **模块化拆分配置**: 将同功能的配置拆分到同文件(如 `network.cnf`、`memory.cnf`),提高可读性。 3. **注意文件名顺序**: 若需覆盖默认配置,确保自定义配置文件的字母顺序在默认文件之后(如 `zz-custom.cnf`)。 --- ### **总结** - **主配置文件**:`/etc/my.cnf` 是核心入口,通常包含全局配置和子目录引入指令。 - **子配置文件**:`/etc/my.cnf.d/mysql-server.cnf` 是模块化配置的一部分,需通过主文件引入生效。 - **优先级**:后加载的配置覆盖先加载的,最终生效的配置取决于加载顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值