【问题标题】:MySQL: how do I see which config files are used?MySQL:如何查看使用了哪些配置文件?
【发布时间】:2010-12-14 23:21:09
【问题描述】:

为了重新安装我的MySQL数据库,我删除了/etc/my.cnf

但是 MySQL 的默认设置是什么?以及如何查看正在使用的配置文件?

我可以看到mysql --help 为我提供了当前设置的列表。但我真正的问题是我想修改local-infilemax_allowed_packet

帮助文本还指出它从以下文件中读取:/etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf。但它们都不存在:

> cat /etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf  
cat: /etc/my.cnf: No such file or directory
cat: /etc/mysql/my.cnf: No such file or directory
cat: /opt/local/etc/mysql5/my.cnf: No such file or directory
cat: /Users/jesper/.my.cnf: No such file or directory

我可以创建一个只包含这些设置的新配置文件吗? 最具体的是:如何查看正在使用的配置文件?

这是mysql --help的输出

> mysql --help
mysql  Ver 14.14 Distrib 5.1.40, for apple-darwin10.0.0 (i386) using readline 6.0
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.

[...]

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /opt/local/etc/mysql5/my.cnf ~/.my.cnf 
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults    Print the program argument list and exit
--no-defaults       Don't read default options from any options file
--defaults-file=#   Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- -----------------------------
auto-rehash                       TRUE
character-sets-dir                (No default value)
column-type-info                  FALSE
comments                          FALSE
compress                          FALSE
debug-check                       FALSE
debug-info                        FALSE
database                          (No default value)
default-character-set             latin1
delimiter                         ;
vertical                          FALSE
force                             FALSE
named-commands                    FALSE
ignore-spaces                     FALSE
local-infile                      FALSE
no-beep                           FALSE
host                              (No default value)
html                              FALSE
xml                               FALSE
line-numbers                      TRUE
unbuffered                        FALSE
column-names                      TRUE
sigint-ignore                     FALSE
port                              0
prompt                            mysql> 
quick                             FALSE
raw                               FALSE
reconnect                         TRUE
socket                            (No default value)
ssl                               FALSE
ssl-ca                            (No default value)
ssl-capath                        (No default value)
ssl-cert                          (No default value)
ssl-cipher                        (No default value)
ssl-key                           (No default value)
ssl-verify-server-cert            FALSE
table                             FALSE
user                              (No default value)
safe-updates                      FALSE
i-am-a-dummy                      FALSE
connect_timeout                   0
max_allowed_packet                16777216
net_buffer_length                 16384
select_limit                      1000
max_join_size                     1000000
secure-auth                       FALSE
show-warnings                     FALSE

【问题讨论】:

  • 只是为了说明:当我得到答案时,我会考虑回答这个问题:如何查看正在使用的配置文件?

标签: mysql configuration


【解决方案1】:

据我所知,没有办法查看MySQL启动时读取什么配置文件。如果不存在,它只使用编译时使用的默认值。请注意,read 是操作词,MySQL 不会将配置文件保持打开的时间超过解析它所需的时间。

如果您对验证它搜索的文件的顺序非常好奇,您可以简单地通过strace 运行mysql 并注意access() 系统调用。这将向您显示在搜索其配置时它的编译顺序,以及很多您真的不想知道的东西。

【讨论】:

  • 所以,我想这意味着没有公平的方法可以查看它从哪些文件中读取了它的配置
  • @Jesper Rønn-Jensen - 没有传统的方法(由 mysql 本身提供),但是用其他方法应该不难弄清楚。正如 culebrón 指出的那样,local-inifile 应该强制 mysql 读取 ./my.cnf(如果存在),或者 ~/my.cnf,然后系统默认。只有 strace 会告诉你它是否确实是按照它宣传的顺序来做的,尽管我没有理由怀疑它不会。
  • 我接受这是最合适的答案。非常感谢您花时间回答。赏金是当之无愧的:)
【解决方案2】:

试试这个 my.cnf 或使用命令行参数加载它:

[mysqld]
max_allowed_packet  = 16M
[client]
local-infile=1

参数在适当的部分很重要。

据我了解,MySQL 按您编写的顺序读取文件,然后使用编译时设置的默认值。

【讨论】:

  • 所以我猜答案是:没有办法查看MySql使用了哪些配置文件?
【解决方案3】:

显然,列出的配置文件只有在它们存在时才会被读取。您是否尝试过以 root 身份阅读 /etc/my.cnf 或其他 not 在您的主目录中的文件之一?令我惊讶的是,他们都不在那里。

无论如何,您可以创建其中一个文件,例如 ~/.my.cnf,并包含 culebrón 刚刚发布的代码。

【讨论】:

  • 所以我猜答案是:没有办法查看MySql使用了哪些配置文件?
猜你喜欢
  • 1970-01-01
  • 2013-08-08
  • 2014-03-02
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多