mysql my.cnf文件的option
main.cc(bin/mysql.cc) -->load_defaults(mysys/default.c) -->my_load_defaults(mysys/default.c)
? ? ? ?函数load_defaults的第二个入参为load_default_groups, mysql.cc中是这样定义的:
static const char *load_default_groups[]= { "mysql","client",0 };
? ? ? ?load_defaults函数对这个入参的注释为:“groups?Which [group] entrys to read.”。这下明确了,mysql command tool 会去读取my.cnf中"[mysql]"和"[client]"部分。(除非指定--no-defaults)。
? ? ? ?在my_load_defaults函数里,有这么一段:
/* Check if the user doesn't want any default option processing --no-defaults is always the first option */ if (*argc >= 2 && !strcmp(argv[0][1],"--no-defaults")) { /* remove the --no-defaults argument and return only the other arguments */ uint i; if (!(ptr=(char*) alloc_root(&alloc,sizeof(alloc)+ (*argc + 1)*sizeof(char*)))) goto err; res= (char**) (ptr+sizeof(alloc)); res[0]= **argv;/* Copy program name */ for (i=2 ; i < (uint) *argc ; i++) res[i-1]=argv[0][i]; res[i-1]=0;/* End pointer */ (*argc)--; *argv=res; *(MEM_ROOT*) ptr= alloc;/* Save alloc root for free */ if (default_directories) *default_directories= dirs; DBUG_RETURN(0); }
? ? ? ?当使用了--no-defaults参数(如果使用,必须作为第一个option出现,这个是对所有的client都适用的)并且输入参数>=2时,mysql command tool不会去加载my.cnf中对应的option。
? ? ? ?其它的client则类似,比如mysqlbinlog会去读取"[mysqlbinlog]"和"[client]";mysqldump会去读取"[mysqldump]"和“[client]”...
?
参考链接:
http://dev.mysql.com/doc/refman/5.5/en/option-files.html