2009-11-10 29 views
6

为了重新安装我的MySQL数据库,我删除了/etc/my.cnfMySQL:如何查看使用哪个配置文件?

但是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 
+1

只需指定:当我得到这个答案时,我会考虑回答这个问题: 如何查看哪些配置文件正在使用? – 2009-11-16 12:38:17

回答

4

据我所知,没有办法看到什么配置文件MySQL 读取开始时。如果不存在,它只是使用它所编译的默认值。请注意,的读数为是有效的字,MySQL不会将配置文件保持打开状态的时间超过解析它的时间。

如果您对验证搜索文件的顺序感到好奇,可以通过strace运行mysql并注意系统调用access()。这会告诉你它在搜索它的配置时编译的顺序,以及你真正不想知道的很多东西。

+0

所以,我想这意味着没有公平的方式来查看它从哪个文件读取它的配置文件 – 2009-11-16 14:08:56

+0

@JesperRønn-Jensen - 没有传统的方式(由mysql自己提供),但是它不应该太难与其他方法。正如culebrón指出的那样,local-inifile应该强制mysql读取./my.cnf(如果存在)或〜/ my。cnf,那么系统默认。只有斯特拉斯会告诉你,它是否按照它所宣传的顺序来做,尽管我没有理由怀疑它不会。 – 2009-11-16 14:41:13

+0

我接受这是最合适的答案。非常感谢您花时间回答。赏金是最值得的:) – 2009-11-16 15:19:12

3

输出试试这个my.cnf文件或命令行参数加载:

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

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

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

+0

所以我想答案是:有没有办法看到什么配置文件MySql使用? – 2009-11-16 12:06:09

0

显然,只有存在的列出的配置文件才会被读取。你有没有尝试读取/etc/my.cnf或其中一个而不是作为根目录在你的主目录?令我感到惊讶的是,他们中没有一个人在那里。

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

+0

所以我想答案是:有没有办法看到什么配置文件MySql使用? – 2009-11-16 12:07:11

相关问题