MySQL-基础篇-启动选项和系统变量

129 阅读3分钟

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     |
+-------------------+-------+