启动项是mysql服务启动时传递过去的一些参数(可以通过命令行也可以通过配置文件),系统变量是影响服务器运行行为的变量

1.命令行指定配置项

只在首次启动生效

长参数使用 ”--下划线分割单词“ 的形式

短参数使用“-字母”的形式,且参数区分大小写

2.配置文件指定配置项

Linux环境下,按照下列顺序寻找配置文件:

路径名备注

/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf

特定于服务器的选项(仅限服务器)

defaults-extra-file

命令行指定的额外配置文件路径

~/.my.cnf

用户特定选项

~/.mylogin.cnf

用户特定的登录路径选项(仅限客户端)

SYSCONFDIR表示在使用CMake构建MySQL时使用SYSCONFDIR选项指定的目录。默认情况下,这是位于编译安装目录下的etc目录。

也可以在启动MySQL时通过 ”--defaults-file“指定配置文件路径,如果配置文件不存在或者无法访问则会发生错误

3.配置文件具体内容

配置文件启动项划分为多个组

[server] (具体的启动选项...)
option = value
......
[mysqld] (具体的启动选项...)
option = value
......
[mysqld_safe] (具体的启动选项...)
option = value
......
[client] (具体的启动选项...)
option = value
......
[mysql] (具体的启动选项...)
option = value
......
[mysqladmin] (具体的启动选项...)
option = value
......

[server]组下边的启动选项将作用于所有的服务器程序。

[client]组下边的启动选项将作用于所有的客户端程序。

启动命令类别能读取的组

mysqld
启动服务器
[mysqld]、[server]
mysqld_safe
启动服务器
[mysqld]、[server]、[mysqld_safe]
mysql.server
启动服务器
[mysqld]、[server]、[mysql.server]
mysql
启动客户端
[mysql]、[client]
mysqladmin
启动客户端
[mysqladmin]、[client]
mysqldump
启动客户端
[mysqldump]、[client]

命令行参数的优先级>配置文件参数

系统变量

查看系统变量

show [global] variables like '%[系统变量名]%';

该sql默认查询当前session系统变量,通过global指定查询global变量

修改统变量

set [global] 系统变量名=系统变量值;

查看状态变量(状态变量维护当前运行中的mysql的状态 )

show [golbal] status like '%[状态变量名]%';

编码

ASCII:128字符,占1个字节

IOS 8859-1:256字符,占1个字节,别名latin1

GB2312:收录汉字,如果是ASCII字符集,占1字节否则占2字节。扩充后改为GBK

utf8:占1~4字节变长编码

mysql中utf8默认时utf8mb3阉割版的utf8,只使用1~3字节,完整版utf8需要指定utf8mb4

编码比较规则

字符集_语言地区_后缀,后缀是该规则是否区分重音、大小写等

后缀英文释义描述

_ai
accent insensitive
不区分重音
_as
accent sensitive
区分重音
_ci
case insensitive
不区分大小写
_cs
case sensitive
区分大小写
_bin
binary

以二进制方式比较

MySQL中可以分别在服务器级别、数据库级别、 表级别、列级别设置字符集和比较规则

MySQL中字符集转换设计三个系统变量character_set_client、character_set_connection、character_set_results。请求岛到MySQL服务器先根据character_set_client解码得到字符串,然后按照character_set_connection编码得到字节串,然后根据字节串去表中查询,得到结果根据character_set_results编码返回给客户端

通常将character_set_client、character_set_connection、character_set_results三个系统变量设置成相同的值