一、在命令行上使用选项
选项名、=、选项值之间不可以有空 白字符,比如写成下边这样就是不正确的:
mysqld --default-storage-engine = MyISAM
每个MySQL程序都有许多不同的选项。大多数程序提供了一个--help选项,可以查看该程序支持的全部启动选项以及它们的默认值。
选项的长形式和短形式
![](https://img-blog.csdnimg.cn/direct/a538e0ecf8dd4835ace32250d9d2cba2.png)
短形式的选项名只有一个字母,与使用长形式选项时需要在选项名前加两个短划线 -- 不同的是,使用短形式选 项时在选项名前只加一个短划线
- 前缀。有一些短形式的选项我们之前已经接触过了,比方说我们在启动服务器程序时指定监听的端口号:
mysqld -P3307
使用短形式指定启动选项时,选项名和选项值之间可以没有间隙,或者用空白字符隔开( -p
选项有些特殊, -p 和密码值之间不能有空白字符),也就是说上边的命令形式和下边的是等价的:
mysqld -P 3307
另外,选项名是区分大小写的,比如 -p
和
-P
选项拥有完全不同的含义
二、配置文件中使用选项
2.1
配置文件的路径
2.1.1 Windows
操作系统的配置文件
![](https://img-blog.csdnimg.cn/direct/dc9be2e53aac4bc68b3d8e503eb10aa6.png)
mylogin.cnf 配置文件有点儿特殊,它不是一个纯文本文件(其他的配置文件都是纯 文本文件),而是使用 mysql_config_editor 实用程序创建的加密文件。文件中只能包含一些用于启动客户端软件时连接服务器的一些选项,包括
host
、
user
、
password
、
port
和
socket
。而且它只能被客户
端程序所使用。
2.1.2
类
Unix
操作系统中的配置文件
![](https://img-blog.csdnimg.cn/direct/3a3bc375e0a94361badabf5d8a738df5.png)
2.2
配置文件的内容
![](https://img-blog.csdnimg.cn/direct/09d03af0fb10438f85b3428d4642a572.png)
配置文件里就定义了许多个组,组名分别是
server
、
mysqld
、
mysqld_safe
、
client
、
mysql 、 mysqladmin
[mysqld]
和
[mysql]
组分别应用于
mysqld
服务器程序和
mysql
客户端程序。不过有两个
选项组比较特别:
[server] 组下边的启动选项将作用于所有的服务器程序。
[client] 组下边的启动选项将作用于所有的客户端程序。
需要注意的一点是,
mysqld_safe
和
mysql.server
这两个程序在启动时都会读取
[mysqld]
选项组中的内容。
为了直观感受一下,我们挑一些启动命令来看一下它们能读取的选项组都有哪些:
![](https://img-blog.csdnimg.cn/direct/81d64f124bac41839d4e7fc930b91e7c.png)
2.3
配置文件的优先级
如果我们在多个配置文件中设置了相同的启动选项,那以最后一个配置 文件中的为准。
2.4
同一个配置文件中多个组的优先级
同一个命令可以访问配置文件中的多个组,如
mysqld
可以访问
[mysqld]
、
[server] 组,如在同一个配置文件中,比如
~/.my.cnf
,在这些组里出现了同样的配置项,如这样:
![](https://img-blog.csdnimg.cn/direct/4595ce92483d43c19511f5d89668ffa8.png)
将以最后一个出现的组中的启动选项为准
三、命令行和配置文件中启动选项的区别
如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启 动选项为准!
四、系统变量
设置不同作用范围的系统变量
作用范围 分为这两 种:
GLOBAL
:全局变量,影响服务器的整体操作。
SESSION
:会话变量,影响某个客户端连接的操作。(注:
SESSION
有个别名叫
LOCAL
)
通过客户端程序设置系统变量的语法:
SET [GLOBAL|SESSION] 系统变量名 = 值;
或者写成这样也行:
SET [@@(GLOBAL|SESSION).]var_name = XXX;
如果在设置系统变量的语句中省略了作用范围,默认的作用范围就是 SESSION 。 也就是说 SET 系统变量名 = 值 和 SET SESSION 系统变量名 = 值 是等价的。
查看不同作用范围的系统变量
既然 系统变量
有
作用范围
之分,那我们的
SHOW VARIABLES
语句查看的是什么
作用范围
的
系统变量
呢?
答:默认查看的是
SESSION
作用范围的系统变量。
当然我们也可以在查看系统变量的语句上加上要查看哪个 作用范围
的系统变量,就像这样:
SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];
注意:
1、如果某个客户端改变了某个系统变量在`GLOBAL`作用范围的值,并不会影响该系统变量在当前已经连接 的客户端作用范围为`SESSION`的值,只会影响后续连入的客户端在作用范围为`SESSION`的值。
2、并不是所有系统变量都具有 GLOBAL 和 SESSION 的作用范围。
有一些系统变量只具有 GLOBAL 作用范围,比方说 max_connections ,表示服务器程序支持同时最多有 多少个客户端程序进行连接。
有一些系统变量只具有SESSION作用范围,比如 insert_id ,表示在对某个包含AUTO_INCREMENT列的表进行插入时,该列初始的值。
有一些系统变量的值既具有 GLOBAL 作用范围,也具有 SESSION 作用范围,比如我们前边用到的
default_storage_engine ,而且其实大部分的系统变量都是这样的,
3、有些系统变量是只读的,并不能设置值。
五、状态变量
状态变量 是用来显示服务器程序运行状况的,所以
它们的值只能由服务器程序自己来设置,我们程序员是 不能设置的
。与
系统变量
类似,
状态变量
也有
GLOBAL
和
SESSION
两个作用范围的,所以查看
状态变量 的语 句可以这么写:
SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];