确定正在使用哪个 MySQL 配置文件

是否有一个命令来确定 MySQL 5.0当前使用的配置文件?

236409 次浏览

如果您在 Linux 上,那么使用 strace启动‘ mysqld’,例如 strace ./mysqld

在所有其他系统调用中,您会发现类似于:

stat64("/etc/my.cnf", 0xbfa3d7fc)       = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3

因此,正如您所看到的. . 它列出了. cnf 文件,它尝试使用并最终使用这些文件。

如果您运行 mysql --verbose --help | less,它将告诉您关于第11行它将查找哪个 .cnf文件。

您还可以执行 mysql --print-defaults来显示它将如何使用配置值。这对于确定正在加载的配置文件也很有用。

摘自 O’Reilly 的精彩著作《高性能 MySQL 》 :

$ which mysqld
/usr/sbin/mysqld


$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf

刚刚在 ubuntu 上做了一个快速测试:

  • 安装了 mysql-server,它创建了/etc/mysql/my.cnf

  • Mysqld ——详细—— help | grep-A 1“ Default options”

11011213:35:26[注意]插件“ FEDERATE”被禁用。
默认选项按给定顺序从下列文件中读取: /etc/my.cnf/etc/mysql/my.cnf/usr/etc/my.cnf ~/. my.cnf

  • 创建/etc/my.cnf 和/usr/etc/my.cnf,每个都有不同的端口号

  • Restart mysql-它使用/usr/etc/my.cnf 中设置的端口号

同时还找到了 mysqld 的—— default-file 选项。如果在那里指定配置文件,则只使用该配置文件,而不管 /usr/sbin/mysqld ——详细—— help | grep-A 1“ Default options”

Mysqld —— help —— verose 是危险的。您可以很容易地为运行的实例覆盖 pidfile

哦,如果运行的实例超过一个,那么就不能真正使用它。它只会显示默认值。

这篇文章写得很好:

如何找到 MySQL 配置文件?

另一种选择是使用

mysqladmin variables

有些服务器安装和配置了多个 MySQL 版本。请确保您所处理的是使用 Unix 运行的正确版本 掌握:

ps -ax | grep mysql

我在 Windows 上,我已经安装了最新版本的 MySQL 社区5.6

我看到配置文件使用的是管理工具 > 服务 > MySQL56 > 右键单击 > 属性并检查可执行文件的路径:

“ C:/Program Files/MySQL/MySQL Server 5.6/bin mysqld”—— default-file = “ C: ProgramData MySQL MySQL Server 5.6 my.ini”MySQL56

我发现这个真的很有用:

  1. Control Panel -> Administration Tools下的 Services 中查找 MySQL 进程
  2. 鼠标右键单击并选择 Properties
  3. 单击并选择 Path to executable,查看它是否包含到 my.ini/my.cfg的路径

对于那些使用 mysql 服务运行 windows server 的人来说,一个简单的方法就是打开 services 控制面板,找到你的 mysql 服务(在我的例子中是“ MYSQL56”) ,右击并点击属性。然后,从这里您可以检查“路径到可执行文件”,它应该有一个 defaults-file开关,指向您的配置文件所在的位置。

使用 MySQL Workbench,它将显示在“ Server Status”下: enter image description here

如果你正在运行 Mac,这也可以通过以下方法实现:

sudo dtruss mysqld 2>&1 | grep cnf

如果在 Windows 上,则可以使用 SysInternal alsProcmon。打开它并像这样配置过滤器设置,然后单击“添加”。现在 procmon 将监视 mysqld。

enter image description here

现在像往常一样启动 mysql 服务器。Procmon 将捕获 mysql 的后台操作。搜索“我的”在 procmon 结果窗格中,您将看到如下内容:

enter image description here

很明显,mysql 依次搜索配置文件列表。在我的例子中,它成功地找到了 C:\mysql-5.7.19-winx64\my.cnf,所以它使用了这个。

我安装了 mysql use brew install mysql

mysqld --verbose --help | less

它表明:

enter image description here

在 CentOS 和 MariaDB 上,您可以在以下位置找到 MariaDB 服务器配置设置: /etc/my.cnf.d/server.cnf