1.参数的种类

无论是mysql还是其他的软件,都会有各种参数,通过参数控制程序的行为。参数的种类大致分为配置文件中的配置项,程序中默认的参数,用于启动软件时指定的参数。

mysql中支持使用配置文件

mysql在线修改binlog目录 如何更改mysql参数配置_配置文件


也支持命令行中指定

mysql在线修改binlog目录 如何更改mysql参数配置_mysql在线修改binlog目录_02


更支持在程序访问过程中配置

mysql在线修改binlog目录 如何更改mysql参数配置_客户端_03

2.命令行

命令行中的参数可以使用长形式或短形式,用来指定一些临时配置,比如第一次启动客户端时指定host

mysql在线修改binlog目录 如何更改mysql参数配置_客户端_04


当启动第二个客户端时必须重新指定host参数才可生效

3.配置文件

在配置文件中[]代表了一个组,每个组指定了不同的配置项,各个可执行文件通过读取对应组中的配置项重设默认配置,比如mysql.exe启动时会读取[mysql]和[client]组,具体的配置项和所有组可在官方文档中查询

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
# 设置mysql的安装目录
basedir = D:\mysql5.7
# 设置mysql数据库的数据的存放目录
datadir = D:\mysql5.7\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎
# 为事务存储引擎启用严格模式,也可能为非事务存储引擎启用严格模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 开启查询缓存
explicit_defaults_for_timestamp=true

配置文件相比命令行的好处是它可以永久保存,而命令行只适用当前会话
mysql会在多个目录下搜索配置文件,如果搜到多个,则以最后一个中的配置为准
一个可执行文件可能会读取某个配置文件中的多个组,而组中的内容有可能会重复,此时以最后读取的组为准

4.系统选项

mysql中系统选项的数量特别多,可以通过再启动时设置其默认值

mysql在线修改binlog目录 如何更改mysql参数配置_mysql在线修改binlog目录_05


这些系统参数主要分为两类,全局的和当前会话的,全局适用于全部客户端,当前会话适用于当前客户端,如果存在重复则以当前会话为准

在客户端不指定级别设置的默认都是当前会话级别

mysql在线修改binlog目录 如何更改mysql参数配置_mysql在线修改binlog目录_06


设置了左边的变量后并没有影响到右边会话的变量

mysql在线修改binlog目录 如何更改mysql参数配置_配置文件_07


但是当设置为GLOBAL级别的变量时会影响到设置之后重新登录的会话

5.代码中的参数

在mysql的源码中存在一些不可修改的变量,我们可以使用客户端查询,但是并不能修改

通过show status方式查看此类变量

mysql在线修改binlog目录 如何更改mysql参数配置_配置文件_08


可以看到当前mysql中共有357个变量