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]

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

系统变量

  1. 查看系统变量

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

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

  1. 修改统变量

  set [global] 系统变量名=系统变量值;
  1. 查看状态变量(状态变量维护当前运行中的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三个系统变量设置成相同的值

原文地址:https://www.cnblogs.com/leon618/p/13783231.html