大致形式

  1. [server]
  2. ...具体的启动选项...
  3. 键=值 # 键值对
  4. disabled_log_bin # 属性
  5. [mysqld]
  6. ...具体的启动选项...
  7. [mysqld_safe]
  8. ...具体的启动选项...
  9. [client]
  10. ...具体的启动选项...
  11. [mysql]
  12. ...具体的启动选项...
  13. [mysqladmin]
  14. ...具体的启动选项...

使用

在配置文件中指定启动选项的语法类似于命令行语法,但是配置文件中指定的启动选项不允许加~~前缀,并且
每行只指定一个选项,而且=周围可以有空白字符(命令行中选项名、=、选项值之间不允许有空白字符)。另
外,在配置文件中,我们可以使用4来添加注释,从#出现直到行尾的内容都属于注释内容,读取配置文件时会
忽骆这些注释内容。

启动命令和选项组:
配置文件中的不同选项组是给不同命令使用的 。 但有两个组较为特殊:
[server]组的启动选项将作用于所有服务器程序
[client]组的启动选项将作用于所有客户端程序
启动命令和组的关系:

命令 分类 可读取的组
mysqld 启动服务器 [mysqld],[server]
mysqld_safe 启动服务器 [mysqld],[server],[mysqld_safe]
mysql.server 启动服务器 [mysqld],[server],[mysql.server]
mysql 启动客户端 [mysql],[client]
mysqladmin 启动客户端 [mysqladmin],[client]
mysqldump 启动客户端 [mysqldump],[client]

例如:在/etc/mysql/my.cnf配置文件中添加内容:

  1. [server]
  2. skip-networking
  3. default-storage-engine=MyISAM

然后使用命令mysqld重启服务器程序

虽然在命令行没有添加启动选项,但是在程序启动的时候,就会默认的到我们上边提到的置文件路径下查找配
置文件,其中就包括/etc/my.cnf 又由于mysqld命令可以读取[server]选项组的内容,所以skip-networking
和default-storage-engine=MyISAM这两个选项是生效的。

可以把这些启动选项放在[client]组里再试试用mysqld启动服务器程序,就不生效.

特定MySQL版本的专用选项组

我们可以在选项组的名称后加上特定的MysQ版本号,比如对于[mysq1d]选项组来说,我们可以定义一个
[mysq1d-5.7]的选项组,它的含义和[mysq1d]一样,只不过只有版本号为5.7的mysq1d程序才能使用这个
选项组中的选项。

同一个配置文件中多个组的优先级

我们说同一个命令可以访问配置文件中的多个组,比如mysqld可以访问[mysqld]、[server]组,如果在同一
个配置文件中,比如~/.my.cf,在这些组里出现了同样的配置项,比如这样:

  1. [server]
  2. default-storage-engine=MyISAM
  3. [mysqld]
  4. default-storage-engine=InnoDB

重复的配置使用后覆盖前原则 后面的覆盖前面的 因为[mysqld]处于后面 所以使用了配置 default-storage-engine=InnoDB

命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中,但是有一些选项是专门为命令行设计的,比方说
defaults-extra-file、defaults-file这样的选项本身就是为了指定配置文件路径的,再放在配置文件中使用就没啥意义了。

如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启动选项为准!比如我们在配
置文件中写了:
[server]
default-storage-engine=MyISAM
启动时增加命令 mysql.server start —default-storage-engine=InnoDB
最后将使用命令中的配置 即 default-storage-engine=InnoDB