确定正在使用哪个configuration文件

有没有一个命令来确定MySQL 5.0当前使用的configuration文件?

如果你在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”O'Reilly着作:

 $ 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 

如果你运行mysql --verbose --help | less mysql --verbose --help | less它会告诉你有关第11行.cnf文件,它会寻找。

你也可以使用mysql --print-defaults来显示它将使用的configuration值。 这也可以用于识别它正在加载的configuration文件。

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

我所看到的configuration文件使用的是去pipe理工具>服务> MySQL56>右键单击>属性,并检查可执行文件的path:

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

另一种方法是使用

 mysqladmin variables 

mysqld –help –verbose是危险的。 您可以轻松地覆盖运行实例的pidfile! 与–pid-file = XYZ一起使用

哦,如果你有超过1个实例运行,你不能真的使用它。 它只会显示你的默认值。

真的很好的文章:

如何findMySQLconfiguration文件?

只是做了一个Ubuntu的快速testing:

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

  • mysqld –verbose –help | grep -A 1“默认选项”

110112 13:35:26 [注]插件'FEDERATED'被禁用。
默认选项按以下顺序读取:/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf〜/ .my.cnf

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

  • 重新启动mysql – 它使用/usr/etc/my.cnf中设置的端口号

同时还发现了mysqld的–defaults-file选项。 如果你在那里指定一个configuration文件,那么只有那个被使用,不pipe由/ usr / sbin / mysqld返回什么–verbose –help | grep -A 1“默认选项”

我发现这非常有用:

  1. 在“ Control Panel -> Administration Tools下的“服务”中findMySQL进程
  2. 用鼠标右键单击并selectProperties
  3. 单击并selectPath to executable ,看它是否包含my.ini/my.cfg的path

一些服务器安装和configuration了多个MySQL版本。 确保你正在处理使用Unix命令运行的正确版本:

 ps -ax | grep mysql 

对于使用mysql作为服务运行windows服务器的人来说,find正在运行的configuration文件的一个简单方法是打开服务控制面板,find你的mysql服务(在我的情况下是'MYSQL56'),右键单击属性。 然后从这里你可以检查“Path to Executable”,它应该有一个defaults-file开关,指向你的configuration文件的位置。

使用MySQL Workbench,它将显示在“服务器状态”下: 在这里输入图像描述

以防万一您正在运行mac也可以通过以下方式实现:

 sudo dtruss mysqld 2>&1 | grep cnf 

如果你在Windows上,你可以使用Sysinternals procmon 。 打开它并像这样configurationfilter设置,然后点击“添加”。 现在procmon会监控mysqld。

在这里输入图像描述

现在像平常一样启动你的mysql服务器。 Procmon将捕获mysql的后台操作。 search“我的”。 在procmon结果窗格中,你会发现如下所示:

在这里输入图像描述

很明显,mysql依次searchconfiguration文件列表。 在我的情况下,它find了C:\mysql-5.7.19-winx64\my.cnf因此它使用了这个。