- 类 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] 系统变量名 = 值;
- 默认设置的是会话变量
- 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;
- 只支持会话范围
- 大部分变量两种范围都支持
- 只支持全局范围:max_connections
- 有些系统变量是只读的,不允许修改,例如:version
- 并不是所有变量都具有两种作用范围
- 启动参数是启动时用户配置的参数,系统变量是服务端程序在运行中需要用到的变量。
- 状态变量
- 关于程序运行状态的变量
- 不能认为设置
- 同样分为全局、会话两个作用范围
- SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
