MYSQL是怎样运行的-第2章-启动项和系统变量

一、在命令行上使用选项

        选项名、=、选项值之间不可以有空 白字符,比如写成下边这样就是不正确的:
mysqld --default-storage-engine = MyISAM
        每个MySQL程序都有许多不同的选项。大多数程序提供了一个--help选项,可以查看该程序支持的全部启动选项以及它们的默认值。
选项的长形式和短形式
        短形式的选项名只有一个字母,与使用长形式选项时需要在选项名前加两个短划线 -- 不同的是,使用短形式选 项时在选项名前只加一个短划线 - 前缀。有一些短形式的选项我们之前已经接触过了,比方说我们在启动服务器程序时指定监听的端口号:
        mysqld -P3307
        使用短形式指定启动选项时,选项名和选项值之间可以没有间隙,或者用空白字符隔开( -p 选项有些特殊, -p 和密码值之间不能有空白字符),也就是说上边的命令形式和下边的是等价的:
        mysqld -P 3307
        另外,选项名是区分大小写的,比如 -p -P 选项拥有完全不同的含义

二、配置文件中使用选项

2.1 配置文件的路径
2.1.1 Windows 操作系统的配置文件
        mylogin.cnf 配置文件有点儿特殊,它不是一个纯文本文件(其他的配置文件都是纯 文本文件),而是使用 mysql_config_editor 实用程序创建的加密文件。文件中只能包含一些用于启动客户端软件时连接服务器的一些选项,包括 host user password port socket 。而且它只能被客户
端程序所使用。
2.1.2 Unix 操作系统中的配置文件
2.2 配置文件的内容
配置文件里就定义了许多个组,组名分别是 server mysqld mysqld_safe client mysql 、 mysqladmin
[mysqld] [mysql] 组分别应用于 mysqld 服务器程序和 mysql 客户端程序。不过有两个
选项组比较特别:
        [server] 组下边的启动选项将作用于所有的服务器程序。
        [client] 组下边的启动选项将作用于所有的客户端程序。
需要注意的一点是, mysqld_safe mysql.server 这两个程序在启动时都会读取 [mysqld] 选项组中的内容。
为了直观感受一下,我们挑一些启动命令来看一下它们能读取的选项组都有哪些:
2.3  配置文件的优先级
如果我们在多个配置文件中设置了相同的启动选项,那以最后一个配置 文件中的为准。
2.4 同一个配置文件中多个组的优先级
同一个命令可以访问配置文件中的多个组,如 mysqld 可以访问 [mysqld] [server] 组,如在同一个配置文件中,比如 ~/.my.cnf ,在这些组里出现了同样的配置项,如这样:
将以最后一个出现的组中的启动选项为准

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

如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启 动选项为准!

四、系统变量

设置不同作用范围的系统变量
作用范围 分为这两 种:
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 匹配的模式];        
  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值