2.1 启动选项和配置文件

==启动选项(startup option)==,控制着程序启动后的行为。

启动选项可以在命令行中指定,也可以在配置文件中指定。

在命令行上指定启动选项

比如,禁止客户端使用TCP/IP网络进行通信:

1
mysqld --skip-networking

参数--为前缀,多个单词以-_连接。

修改默认存储引擎:

1
mysqld --default-storage-engine=MyISAM

启动服务器程序的命令行指定启动选项的通用格式:

1
--启动选项1[=1] --启动选项2[=2] ... --启动选项n[=n]

查看程序全部启动选项及其默认值:

1
2
3
mysql --help
mysql_safe --help
mysqld --verbose --help

常用的启动选项可以有短形式的:

配置文件中指定启动选项

命令行配置只能当次启动生效。

1.配置文件的路径

MySQL程序启动时会在多个路径下寻找配置文件,也可在命令行中添加额外的配置文件路径。不同系统有所不同。

Windows

  • 前3个路径,配置文件可以.ini也可以是.cnf
  • %WINDIR指Windows目录,通常是C:\WINDOWS。可以通过echi %WINDIR%查看。
  • BASEDIR是指MySQL的安装目录路径。
  • %APPDATA%表示Windows应用程序数据目录,可用echo %APPDATA%查看。
  • 最后一个.mylogin.cnf有点特殊,它不是纯文本文件,是程序mysql_config_editor创建的加密文件。

类Unix:

2.配置文件的内容

配置文件中的启动选项被划分为若干个组(组名用[]扩起来),不同选项组给不同程序使用。

[server]
option1
option2 = value2
...

[mysqld]
option1
option2 = value2
...

[mysqld_safe]
option1
option2 = value2
...

[client]
option1
option2 = value2
...

[mysql]
option1
option2 = value2
...

[mysqladmin]
option1
option2 = value2
...

3.特定MySQL版本的专用选项组
# 只有对应版本的mysqld才能使用
[mysqld-5.7]
4.配置文件的优先级

配置文件读取,是按照表2-2或表2-3的顺序依次加载,相同启动选项,以最后一个配置文件为准。

5.同一个配置文件中多个组的优先级

以最后一个出现的组中的启动选项为准。

6.defaults-file的使用

不想让MySQL到默认的路径下搜索配置文件。

1
mysqld --defaults-file=/tmp/myconfig.txt

程序启动时只在/tmp/myconfig.txt路径下搜索配置文件。

在命令行和配置文件中启动选项的区别

除了defaults--extra-filedefaults-file这样的本身指定配置文件路径的和一些只能在命令行使用的,其它启动选项都可以放到配置文件中。

命令行的优先级高于配置文件。

2.2 系统变量

系统变量:MySQL服务器程序在运行过程中会用到许多影响程序行为的变量。有好几百个。

每个系统变量都有一个默认值,可使用命令行或配置文件在启动服务器是修改。

大多说系统变量的值也可以在程序运行过程中修改,而无须停止并停止并重新启动服务器。

查看系统变量

1
Show Variables [Like 匹配的模式];

设置系统变量

1.通过启动选项设置
1
mysqld --default-storage-engine=MyISAM --max-connections=10
[server]
default-storage-engine=MyISAM 
max-connections=10

:系统变量,各单词之间只能用_连接。

2.运行中设置

系统变量有作用范围之分:

  • Global(全局范围):影响服务器的整体操作。(全局变量)
  • Session(会话范围):影响某个客服端连接的操作。(会话变量)

服务器程序运行期间通过客服端程序设置系统变量的语法:

1
2
3
Set [Global|Session] 系统变量名 = ;
-- 或
Set [@@(Global|Session).]系统变量名 = ;

如果在设置系统变量的语句中省略了作用范围,默认是Session。

查看不同作用范围的系统变量:

1
Show [Global|Session] Variables [Like 匹配的模式];

注:

  • 通过启动选项设置的系统变量的作用范围都是GLOBAL。

  • 一些系统变量只具有Global作用范围,如max_connections。

  • 一些系统变量只具有Session作用范围,如inser_id。

  • 有些系统变量是只读的,如version。

3.启动选项和系统变量的区别
  • 大部分的系统变量都可以当作启动选项传入。
  • 有些系统变量是在程序运行过程中自动生成的,不可以当作启动选项来设置,比如 character_set_client。
  • 有些启动选项也不是系统变量,比如 defaults-file。

2.3 状态变量

MySQL服务器程序运行状态的变量,好几百个,不能人为设置。

1
Show [Global|Session] Variables [Like 匹配的模式];
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
mysql> show status like 'thread%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 2     |
| Threads_connected | 1     |
| Threads_created   | 3     |
| Threads_running   | 2     |
+-------------------+-------+
4 rows in set (0.00 sec)