MySQL阅读笔记——2.启动项和系统变量
启动项是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编码返回给客户端