经老大提醒:配置文件应该不是os相关的事情。
查代码,发现如下:
//在脚本目录下有一处,暂时还不清楚这里的作用,不明真相的群众纷纷表示暂且掠过。
scripts/mysqlaccess.sh
# =================================
# sub MergeConfigFiles
# merge options from config files
# NOTE: really should do two separate merges for each
# client to exactly duplicate order of resulting argument lists
# =================================
sub MergeConfigFiles {
my ($name,$pass,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = getpwuid $<;
MergeConfigFile("@sysconfdir@/my.cnf");
MergeConfigFile("/etc/my.cnf");
MergeConfigFile("$dir/.my.cnf");
}
用kDbg调试发现如下:
mysys/default.c
406行: int load_defaults(const char *conf_file, const char **groups,
int *argc, char ***argv)
这里其实只是包了一层,调用另一个函数。
450行: int my_load_defaults(const char *conf_file, const char **groups,
int *argc, char ***argv, const char ***default_directories)
中部调用init_default_directories,获得初始化的所有目录,共五个,依次是:
1. /etc
2. /etc/mysql
3. $BASEDIR/mysql
4. cur_dir
5. ~/
在506行由调用了一个函数my_search_option_files,其定义在
176 int my_search_option_files(const char *conf_file, int *argc, char ***argv,
uint *args_used, Process_option_func func,
void *func_ctx, const char **default_directories)
此函数的第259行
for (dirs= default_directories ; *dirs; dirs++)
优先级在此体现,即使前面找到了配置文件,也会被覆盖。
======================
总结:
1. 干这行就是靠经验阿;
2. kDbg调试还是蛮好使的,比cgdb好看多了。
Sincerely,
ZHOU Yuan <j0sf>
No comments:
Post a Comment