MYSQL配置文件解析

来源:互联网 发布:浙江2018年专升本数据 编辑:程序博客网 时间:2024/04/28 00:52
1. 收集默认的目录: 接口 init_default_directories();
主要是下面的目录:
  1. "/etc/"
  2. "/etc/mysql/"
  3. 环境变量中设置的: MYSQL_HOME
  4. 当前用户的home目录 : "~/"

2. 如果命令行参数中有"--no-defaults"选项, 则将"--no-defaults"选项直接从现有的命令行参数中去掉, 然后直接返回,即不去解析配置文件。

3. 如果没有"--no-defaults"选项, 则解析配置文件: my_search_option_files()
检查命令行中是否有: "--defaults-file="; "--defaults-extra-file="; "--defaults-group-suffix=";
   a). 如果有"--defaults-group-suffix="选项,则在默认的group后面添加带后缀的group, 
      默认group:
   const char *load_default_groups[] =
    {
       #ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
          "mysql_cluster",
       #endif
             "mysqld", "server", MYSQL_BASE_VERSION, 0, 0
   };

如果后缀是_A: "--defaults-group-suffix=_A", 则所有的group将是
   const char *load_default_groups[] =
    {
       #ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
          "mysql_cluster",
       #endif
             "mysqld", "server", MYSQL_BASE_VERSION, 
    #ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
          "mysql_cluster_A",
       #endif 
      "mysqld_A", "server_A", MYSQL_BASE_VERSION_A

   };

  b).  如果有"--defaults-file="选项, 则只是从"--defaults-file="指定的配置文件中读取配置选项;
  
  c).  如果没有"--defaults-file="选项, 则从传递进来的" MYSQL_CONFIG_NAME"my""加默认的后缀名文件中去读配置选项

 d).  如果上面的都不成功,则从默认的目录(即init_default_directories()中获得的默认目录中读取配置文件, 后缀一般是.cnf); 如果默认目录为空(mysqld好像不为空, 其他可能为空), 则从"--defaults-extra-file="指定的文件中读取配置文件。


MYSQL将配置文件中的选项读取以后,会将选项的前面加上"--",最后会将所有的配置文件选项和命令行选项都做为命令行选项拷贝到argv中作为程序的选项。最后将选项赋给了defaults_argv和defaults_argc。



















原创粉丝点击