2009-02-24 105 views

回答

47

如果您使用的是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 

所以,你可以see..it列出了.CNF文件,它会尝试使用和最终用途。

+6

如何在运行系统上做到这一点而不会搞乱任何东西? – 2010-05-11 18:08:32

+3

@MilanBabuškov你应该运行`ps auxf`并找到为MySQL执行的命令。通常,它看起来像一些诸如'的mysqld --basedir =在/ usr /本地/ MySQL的`(注意...只是意味着有可能在该命令的更多的标志,但我不会列出所有的话)一旦你找到它,复制整个事情,然后关闭MySQL。如果你在Linux上,它是`/etc/init.d/mysqld stop`或`mysqladmin -u root -p shutdown`。然后用你复制的mysql命令运行`strace`。因此,它看起来像这样:`strace的的mysqld --basedir =在/ usr /本地/ mysql` – Hengjie 2012-11-24 18:08:15

+0

我没有'开(...`行,而不是我有4行以`结束= -1错误#2`你怎么我现在该文件被加载知道 – mgPePe 2014-03-17 15:36:43

50

如果您运行mysql --verbose --help | less它会告诉您有关第11行,其中.cnf文件它将查找。

你也可以做mysql --print-defaults向你展示它将如何使用它的配置值。这对于识别它正在加载的配置文件也很有用。

+1

+1因为这是mysql推荐的方式,对于Windows来说,一个简单的方法是将输出转储到文件中,如果你喜欢分析内容 – kta 2013-12-13 11:24:15

+0

在windows ,它告诉我的位置的列表,但不正确的,这不是我设法找到与MySQL工作台(http://stackoverflow.com/a/17953456/1504300)。 – reallynice 2015-02-03 08:23:30

172

从梦幻般的 “高性能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 
8

只是做了一个快速测试在Ubuntu:

  • 安装的MySQL服务器,它创建的/ etc/mysql/my.cnf

  • mysqld --verbose --help | grep -A 1“Default options”

110112 13:35:26 [Note]插件'FEDERATED'被禁用。
默认选项从以下文件中给定的顺序读: 的/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf〜/ .my.cnf

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

  • 重启MySQL的 - 它是使用在/usr/etc/my.cnf

  • 设置的端口号

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

12

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

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

它真正的好文章:

How to find MySQL configuration file?

16

另一种方法是使用

mysqladmin variables 
2

某些服务器已安装并配置了多个版本的MySQL。请确保您正在处理正确版本的Unix的 命令运行:

ps -ax | grep mysql 
22

我在Windows和我已经安装了最新的MySQL社区5.6

我做什么看什么版本配置文件的用途是去管理工具>服务> MySQL56>右键单击>属性,并检查可执行文件的路径:

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

3

我发现这真的有用:

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

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

1

使用MySQL工作台将在“服务器状态”显示: enter image description here

0

万一你正在运行MAC这也可以通过实现:

sudo dtruss mysqld 2>&1 | grep cnf 
0

如果您在Windows,你可以使用Sysinternals procmon。打开它并像这样配置过滤器设置,然后点击“添加”。现在procmon将监控mysqld。

enter image description here

现在开始你的MySQL服务器正常。 Procmon将捕获mysql的后台操作。搜索“我的”。在将procmon结果窗格中,你会发现类似如下:

enter image description here

很明显,MySQL的搜索配置文件依次列表。在我的情况下,它发现C:\mysql-5.7.19-winx64\my.cnf成功,所以它使用这一个。

相关问题