【MySQL】详解 MySQL 程序的选项配置

一直详细学习 MySQL 选项方面的知识,只是知道常用的 .cnf (尤其是 /etc/my.cnf 和安装目录或用户家目录的 .cnf 文件)和命令行选项,以及之前学到的使用 SET {PERSIST | @@PERSIST. | PERSIST_ONLY | @@PERSIST_ONLY.} system_var_name SQL 语句在数据目录 datadir 下 MySQL 自动生成的 mysqld-auto.cnf (这个文件比较特殊,它是最后被执行的,因而虽然属于选项文件,优先级却高于命令行选项)。后觉得有必要详细学习一下,在学习完记入有道云笔记后时隔多日,写下此篇文章分享给大家。

什么是命令行选项,选项文件?

命令行选项
即和一般的命令行程序一样,在程序命令中使用的选项(或参数),分为长格式( --option=value--option value)和短格式(-short_option value 或 --short_option value)。详见 4.2.2.1 在命令行上使用选项
选项文件
又称 配置文件,是一种在大多数 MySQL 程序启动时读取的选项所在的文件。该文件可被任何文本编辑器编辑,一般为纯文本文件,除了 .mylogin.cnf登陆选项文件和数据目录中的 mysqld-auto.cnf MySQL 服务器端自动生成的持久化变量的 JSON 格式的选项文件。 选项文件 的作用是提供一种方便的方式来指定常用选项,这样每次运行程序时就不需要在命令行中输入这些选项。详见 4.2.2.2 使用选项文件

MySQL 程序选择选项赋值的优先级

MySQL 程序选择选项赋值的优先级整体上遵循如下原则:

  • 同类型的以后定义的选项值会覆盖先定义的,因而对选项的最后一次赋值才是 MySQL 程序运行时选项最终使用的值。

    有一个例外:
    --user选项会选择第一次赋予的值,即第一个实例。这被用作安全预防措施,以防止选项文件中指定的用户在命令行上被覆盖。

  • 命令行选项的优先级一般高于选项文件。

    有一个例外:
    在 MySQL 服务器上,数据目录中的 mysqld-auto.cnf 选项文件是最后处理的,因此它的优先级最高,甚至高于命令行选项。

Unix 及类 Unix 操作系统的 MySQL 程序选项总优先级顺序(从低到高,数字升序)如下表所示:

名称类型优先级解释
/etc/my.cnf选项文件1(最低)全局选项
/etc/mysql/my.cnf选项文件2全局选项
SYSCONFDIR/my.cnf选项文件3全局选项
$MYSQL_HOME/my.cnf选项文件4服务器指定选项(仅限服务器)
defaults-extra-file选项文件5--defaults-extra-file指定的文件(如果存在)
~/.my.cnf选项文件6用户特定选项
客户端程序的--no-defaults选项命令行选项7低于~/.mylogin.cnf登陆选项文件(仅限客户端)
~/.mylogin.cnf选项文件8登陆路径选项(仅限客户端),即便指定--no-defaults,仍然会读取该登陆选项文件
命令行选项命令行选项9命令行选项在一般选项文件之后读取并应用
DATADIR\mysqld-auto.cnf选项文件10(最高)使用SET PERSIST或SET PERSIST_ONLY持久化的系统变量(仅限服务器)

Windows 平台的情况也类似,只是文件路径和扩展名(多了.ini后缀的选项文件)略有不同而已。

选项的语法

在选项名称中,短划线(-)和下划线(_)在大多数情况下可以互换使用,尽管前导短划线不能以下划线给出。例如,--skip-grant表和--skip_grant_tables是等效的。一般我们在选项名称中使用破折号,除非下划线别有含义。例如,--log-bin (点击跳转至详情)和--log_bin (点击跳转至详情)是不同的选项。

命令行选项前缀分为 长格式(–)短格式(-) 两种。 “选项”“值” 之间一般可以使用 空格“ ”等号“=” 分隔(或叫做连接),有一个 特例 是:--password-p如果后跟选项值,即密码,不能使用空格作为分割符,可以使用--password=密码-p密码的形式,即短格式的密码选项必须直接后跟密码的值。不需要值的选项使用--选项名称指定。

选项文件中选项可以省略前导的两个短划线,但 “选项”“值” 必须使用=连接,不需要值的选项只需给出选项名称。选项必须属于某个“选项组”,因而在选项文件中必须定义在“选项组”下方的位置。“选项组”以[选项组名称]的形式存在于选项文件中,例如常用的[mysqld][client][mysql]等。详见 4.2.2.2 使用选项文件

DATADIR\mysqld-auto.cnf这个选项文件虽是 MySQL 服务器为存储持久化变量而自动生成的,但我们仍然可以以 JSON 语法来向其中添加选项配置,但它们只能在重启服务器后生效。

有关 MySQL 程序选项的更多详细信息,请参阅我的专栏 第 4 章 MySQL 程序 中的 4.2.2 指定程序选项 及其子章节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独上西楼影三人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值