MySQL-基础篇-启动选项和系统变量
启动选项
命令行上使用选项
格式:
--启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
比如:
mysqld --default-storage-engine=MyISAM
简写:
| 长形式 | 短形式 | 含义 |
|---|---|---|
| --host | -h | 主机名 |
| --user | -u | 用户名 |
| --password | -p | 密码 |
| --port | -P | 端口 |
| --version | -V | 版本信息 |
注意区分大小写。
配置文件中使用选项
配置文件的名称为:my.cnf,Windows 系统下通常为 my.ini。
配置文件的内容为:
[server]
(具体的启动选项...)
[mysqld]
(具体的启动选项...)
[mysql_safe]
(具体的启动选项...)
[client]
(具体的启动选项...)
[mysql]
(具体的启动选项...)
[mysqladmin]
(具体的启动选项...)
比如:
[server]
option1
option2 = value2
在配置文件中,不同的选项组([server])是给不同的程序使用的,如果选项组名称与程序名称相同,则组中的选项将专门用于该程序。比如 [mysqld] 和 [mysql] 组分别应用于 mysqld 服务器程序和 mysql 客户端程序。不过有两个选项组比较特别。
[server]组下面的启动选项将作用于所有的服务器程序;[client]组下面的启动选项将作用于所有的客户端程序。
| 程序名 | 类别 | 能读取的组 |
|---|---|---|
| mysqld | 启动服务器 | [mysqld]、[server] |
| mysqld_safe | 启动服务器 | [mysqld]、[server]、[mysql_safe] |
| mysql.server | 启动服务器 | [mysqld]、[server]、[mysql.server] |
| mysql | 启动客户端 | [mysql]、[client] |
| mysqladmin | 启动客户端 | [mysqladmin]、[client] |
| mysqldump | 启动客户端 | [mysqldump]、[client] |
特定 MySQL 版本的专用选项组:比如对于 [mysqld] 组来说,可以定义一个 [mysqld-5.7] 的选项组。
配置文件的优先级:以最后读取的配置文件为准。
同一个配置文件中多个组的优先级:以最后一个出现的组中的启动选项为准。
指定配置文件启动:mysqld --defaults-file=/temp/myconfig.txt。
default-extra-file:指定额外的配置文件路径,也就是说固定路径下的配置文件也会被搜索。
如果同一个启动选项既在命令行中出现,又在配置文件中出现,那么将以命令行中的启动选项为准。
系统变量
MySQL 服务器程序在运行过程中会使用到许多影响程序行为的变量,他们称之为系统变量。每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项,在启动服务器时改变一些系统变量的值。大多数系统变量的值也可以在程序运行过程中修改,而无需停止并重新启动服务器。
查看系统变量
语法:
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
比如:
SHOW VARIABLES LIKE 'default_storage_engine';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
SHOW VARIABLES LIKE 'default%';
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
| default_password_lifetime | 0 |
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| default_week_format | 0 |
+-------------------------------+-----------------------+
更严谨的说,MySQL 服务器实际上是允许 max_connections + 1 个客户端连接,额外的一个是给超级用户准备的。
设置系统变量
通过启动选项设置
-
命令行;
mysqld --default-storage-engine=MyISAM --max-connections=10 -
配置文件。
[server] default-storage-engine=MyISAM max-connections=10
服务器程序运行过程中来设置
系统变量的作用范围分为下面两种:
- GLOBAL(全局变量):影响服务器的整体操作。
- SESSION(会话变量):影响某个客户端连接的操作。
语法:
SET [GLOBAL|SESSION] 系统变量名 = 值;
SET [@@(GLOBAL|SESSION).]系统变量名 = 值;
省略作用范围,默认是 SESSION。
状态变量
为了更好的了解服务器程序的运行情况,MySQL 服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量。状态变量也有 GLOBAL 和 SESSION 两个作用范围。如果不写修饰符,则与使用 SESSION 修饰的效果一样。
语法:
SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
比如:
SHOW STATUS LIKE 'thread%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 7 |
| Threads_connected | 3 |
| Threads_created | 370 |
| Threads_running | 1 |
+-------------------+-------+