• 类 UNIX 操作系统中配置文件查找顺序
      • /etc/my.cnf
      • /etc/mysql/my.cnf
      • SYSCONFDIR/my.cnf
        • 使用 CMake 构建 MySQL 时使用 SYSCONFDIR 选项指定的目录
      • $MYSQL_HOME/my.cnf
        • 只能放置服务端的配置
        • 如果使用 mysqld_safe 启动服务端程序,并且没有设置这个环境变量,那么会自动Inboard那个设置为 MySQL 的安装目录
      • defaults-extra-file
        • 启动时指定配置文件
      • ~/.my.cnf
      • ~/.mylogin.cnf
        • 只能放置客户端的配置
    • 使用 mysqld_safe 启动服务端程序时,如果选项 mysqld_safe 不处理,将传递给 mysqld 程序处理
    • 配置文件中的内容
      • 分组
        • 如果选项组名称和程序名称一致,则该组选项专门应用于该程序
        • [server] 应用于所有服务端程序
        • [client] 应用于所有客户端程序
        • mysqld_safe、mysql.server 会读取 [mysqld] 选项组的内容
    • 配置文件的优先级
      • 文件查找顺序是按照上面的顺序,但配置是允许覆盖的,意味着优先级是反过来的
      • 命令行参数优先级高于配置文件
    • 系统变量
      • 服务端程序会用到许多影响程序行为的变量,即系统变量
        • 允许同时连入的客户端数量 max_connections
      • 查看
        • SHOW VARIABLES LIKE = ‘max_connections’;
    • 设置系统变量
      • 通过命令行添加启动选项
      • 通过配置文件启动选项
      • 服务端运行过程中设置
        • 作用范围
          • GLOBAL 全局变量
          • SESSION 会话变量
          • 根据启动选项 -> 生成全局变量 -> 客户端连接时生成会话变量
        • 语法
          • SET [GLOBAL|SESSION] 系统变量名 = 值;
            • 默认设置的是会话变量
        • 查看不同范围系统变量的语法
          • SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
          • 默认查询的也是会话变量
        • 修改全局变量的值不会影响现有连接的会话变量,会影响后续连接的会话变量
    • 注意事项
      • 并不是所有变量都具有两种作用范围
        • 只支持全局范围:max_connections
          • SHOW SESSION VARIABLES LIKE “max_connections”; 可以查看到该变量,但是无法通过 SET max_connections = 1000; 来设置值,只能执行 SET GLOBAL max_connections = 1000;
        • 只支持会话范围
        • 大部分变量两种范围都支持
      • 有些系统变量是只读的,不允许修改,例如:version
    • 启动参数是启动时用户配置的参数,系统变量是服务端程序在运行中需要用到的变量。
    • 状态变量
      • 关于程序运行状态的变量
      • 不能认为设置
      • 同样分为全局、会话两个作用范围
      • SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];