确定正在使用的配置文件

yal*_*tar 136 mysql configuration

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

Mar*_*k B 247

摘自梦幻般的"高性能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
Run Code Online (Sandbox Code Playgroud)

  • 这不会给出加载的配置.可能加载的可能的自定义配置 (5认同)
  • 这很奇怪..我检查了每一个人,他们都是空的(在我的Mac上)..任何想法为什么? (4认同)
  • 我认为这不会列出`!includedir`指定的文件.我试图找出为什么我的`/ etc/mysql/my.cnf`文件中的`!includedir`指令不起作用. (4认同)
  • 我假设列出的最后一个文件获胜? (2认同)
  • 为什么您需要使用完整路径调用`mysqld`? (2认同)

sta*_*san 60

如果你运行mysql --verbose --help | less它将告诉你第11行.cnf它将寻找哪些文件.

您还可以mysql --print-defaults向您展示它将使用的配置值.这对于识别它正在加载哪个配置文件也很有用.

  • 不确定它应该重要,但你可能想使用`mysqld`而不是`mysql` (3认同)
  • +1,因为这是 mysql 推荐的方法。对于 Windows,如果您想分析内容,一种简单的方法是将输出转储到文件中。 (2认同)
  • 并且仍然在 Windows 中,我发现 my.ini 是从 ProgramData 目录中读取的,这并没有显示在此处建议的答案中。 (2认同)
  • 为“mysqld --print-defaults”投了赞成票,当我用谷歌搜索这个问题时,它给了我想要的东西。 (2认同)

小智 57

如果你在Linux上,那么启动'mysqld' strace,例如 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
Run Code Online (Sandbox Code Playgroud)

所以,正如你所看到的......它列出了它试图使用并最终使用的.cnf文件.

  • 如何在运行的系统上执行此操作而不会弄乱任何东西? (9认同)
  • @MilanBabuškov你应该运行`ps auxf`并找到为MySQL执行的命令.通常它看起来像`mysqld --basedir =/usr/local/mysql ...`(注意......只是意味着命令中可能有更多的标志,但我不会列出所有标志)一旦找到它,复制整个事物然后关闭MySQL.如果你在Linux上,它是`/etc/init.d/mysqld stop`或`mysqladmin -u root -p shutdown`.然后使用您复制的mysql命令运行`strace`.所以它看起来像这样:`strace mysqld --basedir =/usr/local/mysql` (5认同)
  • fwiiw,在Mac上你可以使用dtruss而不是strace:`sudo dtruss mysqld 2>&1 | grep my.cnf` @mgPePe,输出可能意味着没有找到任何文件,因此没有打开任何文件. (4认同)

Ale*_*lin 27

我在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


小智 17

另一种方法是使用

mysqladmin variables
Run Code Online (Sandbox Code Playgroud)

  • 它实际上并没有说明我的变量中cnf文件的位置.我目前正在运行MySQL 5.5.20.但是,我可以说曾经有过这样的工作,就像我之前在变量中看到过的那样.自从转向5.5以来,可能会有所改变. (2认同)

小智 13

mysqld --help --verbose很危险.您可以轻松覆盖pidfile以运行实例!与--pid-file = XYZ一起使用它

哦,如果你有超过1个实例运行,你就无法真正使用它.它只会显示默认值.

关于它的文章非常好:

如何查找MySQL配置文件?


小智 9

刚刚对ubuntu进行了快速测试:

  • 安装了mysql-server,创建了/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

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

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

同时还找到了mysqld的--defaults-file选项.如果你在那里指定一个配置文件,那么只使用那个配置文件,无论/ usr/sbin/mysqld返回什么--verbose --help | grep -A 1"默认选项"


fan*_*mas 6

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