1.参数的种类
无论是mysql还是其他的软件,都会有各种参数,通过参数控制程序的行为。参数的种类大致分为配置文件中的配置项,程序中默认的参数,用于启动软件时指定的参数。
mysql中支持使用配置文件
也支持命令行中指定
更支持在程序访问过程中配置
2.命令行
命令行中的参数可以使用长形式或短形式,用来指定一些临时配置,比如第一次启动客户端时指定host
当启动第二个客户端时必须重新指定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中系统选项的数量特别多,可以通过再启动时设置其默认值
这些系统参数主要分为两类,全局的和当前会话的,全局适用于全部客户端,当前会话适用于当前客户端,如果存在重复则以当前会话为准
在客户端不指定级别设置的默认都是当前会话级别
设置了左边的变量后并没有影响到右边会话的变量
但是当设置为GLOBAL级别的变量时会影响到设置之后重新登录的会话
5.代码中的参数
在mysql的源码中存在一些不可修改的变量,我们可以使用客户端查询,但是并不能修改
通过show status方式查看此类变量
可以看到当前mysql中共有357个变量