基础
MySQL
MySQL
  • 基础知识
    • MySQL 的安装与配置
      • Windows
        • 安装
        • 配置文件
      • Linux
        • 安装
        • 配置文件
      • docker
      • mysql 配置文件格式
    • MySQL 查询的执行过程
      • MySQL 的客户端/服务器通信协议
      • MySQL 查询优化器
        • 优化器可能选择错误的执行计划
        • MySQL 能够处理的优化类型
          • 优化 COUNT()、MIN() 和 MAX()
          • 预估并转化为常数表达式
          • 提前终止查询
          • 排序优化
      • MySQL如何执行联接查询
    • 事务
      • ACID
      • 隔离级别
      • 死锁
      • 事务日志
      • 两阶段锁定协议
      • 多版本并发控制(MVCC)
  • SQL 优化
    • schema 设计
      • 选择数据类型
        • 整数类型
        • 实数类型
        • 字符串类型
          • VARCHAR 和 CHAR
          • BINARY 和 VARBINARY
          • BLOB 和 TEXT
          • ENUM 和 SET
        • 日期类型
      • 选择标识符
    • 索引
      • HASH 索引
      • B-tree 索引
      • 聚簇索引
      • 覆盖索引
      • 前缀索引和索引的选择性
      • 索引合并
      • 选择合适的索引列顺序
      • 使用索引扫描来做排序
      • 维护索引和表
    • 查询优化
      • 优化 SQL 语句的一般步骤
        • 1. 通过 show status 命令了解各种 SQL 的执行频率
        • 2. 定位执行效率较低的 SQL 语句
        • 3. 通过 EXPLAIN 分析低效 SQL 的执行计划
        • 4. 通过 SHOW PROFILE 分析 SQL
        • 5. 通过 TRACE 分析优化器如何选择执行计划
        • 6. 确定问题并采取相应的优化措施
      • 两个简单实用的优化方法
      • 一个复杂查询还是多个简单查询
      • 常用 SQL 的优化
        • 大批量插入数据
        • 优化 GROUP BY 语句
        • 优化联接查询
        • 优化分页查询
        • 优化 SQL_CALC_FOUND_ROWS
        • 优化 UNION 查询
    • Performance Schema
      • 配置
      • 使用
        • 检查SQL语句
        • 检查预处理语句
        • 语句剖析
        • 检查读写性能
        • 检查内存使用情况
        • 检查变量
    • MySQL线程
    • 复制
      • 概述
        • 复制中的各类文件
        • 三种复制格式
        • 全局事务标识符(GTID)
        • 崩溃后的复制安全
      • 安装
        • 基于二进制日志文件位置的复制
        • 基于GTID的复制
      • 复制拓扑
        • 主动/被动模式
        • 主动/只读池模式
        • 多级复制架构
  • 其他
    • 查询缓存
    • 批量insert
    • MySQL 锁的类型
    • MySQL 的索引有哪些
    • INSERT ... ON DUPLICATE KEY UPDATE Statement
由 GitBook 提供支持
在本页
  • 配置文件语法格式
  • Include
  1. 基础知识
  2. MySQL 的安装与配置

mysql 配置文件格式

配置文件语法格式

以下是对配置文件语法的描述:

  1. 在运行 MySQL 程序时,可以在选项文件中使用与在命令行中给出的任何长选项相同的选项。

    要获取程序的可用选项列表,请使用 --help 选项运行它(对于 mysqld,请使用 --verbose 和 --help)。

  2. 在配置文件中指定选项的语法类似于命令行语法。只不过在配置文件中,需要省略选项名称前面的破折号,并且每行只指定一个选项。

  3. 配置文件中的空行会被忽略。非空行可以采用以下任意形式:

    • #comment 或 ;comment

      • 注释行以井号(#)或分号(;)作为开头。

      • 使用 # 号注释也可以在行中间开始。

    • [group]

      • group 是选项的程序或组的名称。

      • 在 group 行之后设置的所有选项属于该组,直到到达选项文件的末尾或给出另一个 group 为止。

      • 选项组名称对大小写不敏感。

    • opt_name

      • 这相当于在命令行上使用 --opt_name。

    • opt_name=value

      • 这相当于在命令行上使用 --opt_name=value。

      • value 值可以用单引号或双引号括起来,如果值中包含 # 注释字符,则这样做是有用的。

如果选项组名称(group)与程序名称相同,则该组中的选项仅适用于该程序。

  • [mysqld] 和 [mysql] 组分别适用于 mysqld 服务器和 mysql 客户端程序。

  • [client] 选项组由 MySQL 的所有客户端程序读取(除了 mysqld)。

  • 要创建仅由特定版本的 mysqld 服务器读取的选项组,请使用名称为 [mysqld-5.6]、[mysqld-5.7]这样的组。 下面的组表示 sql_mode 设置仅应在 MySQL 服务器为 5.7.x 版本号时使用:

    [mysqld-5.7] 
    sql_mode=TRADITIONAL

在配置选项组时,应该先列出较一般的选项组,然后列出更具体的选项组。

例如,[client] 组更通用,因为它由所有客户端程序读取,而 [mysqldump] 组仅由 mysqldump 读取。后面指定的选项会覆盖先前指定的选项,因此按照 [client] [mysqldump] 的顺序排列选项组可以使 mysqldump 特定的选项覆盖 [client] 选项。

[client] 组使你能够指定适用于所有客户端的选项。因此请确保不要将一个选项放在 [client] 组中,除非所有你使用的客户端程序都识别它。

转义字符

在配置文件中,反斜杠 ‘\’ 为转义字符。

对于 Windows 路径而言,转义字符十分有用,因为 Windows 会使用反斜杠 ‘\’ 作为分隔符。假设想在配置文件中指定 C:\Program Files\MySQL\MySQL Server 5.7 的基目录。有几种方式可以做到:

basedir="C:\Program Files\MySQL\MySQL Server 5.7"
basedir="C:\\Program Files\\MySQL\\MySQL Server 5.7"
basedir="C:/Program Files/MySQL/MySQL Server 5.7"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s5.7

第一种配置方式之所以有效是因为,配置文件中的转义规则由以下两条组成:

  1. 如果转义字符后跟了一个有效转义序列的字符,那么会转换成特定的字符。 例如 \b,\t,\n,\r , \\, 和 \s 分别会被转换成退格、制表、换行、回车、反斜杠和空格

  2. 如果转义字符后跟了一个无效转义序列的字符,则保持不变。 例如 \S 依然会是 \S,\P 依然是 \P,\M 依然是 \M

Include

可以在一个配置文件中使用 !include 指令包含另一个配置文件,或者使用 !includedir 指令包含一个文件夹下的所有配置文件。

例如,如果想在当前配置文件中包含一个名为 /home/mydir/myopt.cnf 的配置文件,可以使用如下的配置:

!include /home/mydir/myopt.cnf

如果想要包含目录下所有的配置文件,可以使用如下的配置:

!includedir /home/mydir

MySQL 并不保证目录(!includedir)下各配置文件的读取顺序。

  • 在类 Unix 的系统上,MySQL 只会将后缀名为 .cnf 的文件作为配置文件。

  • 在 Windows 上,MySQL除了支持 .cnf 后缀的配置文件外,还支持 .ini 后缀的配置文件。

上一页docker下一页MySQL 查询的执行过程

最后更新于9个月前