6.2.2.2 MySQL使用选项文件

6.2.2.2使用选项文件
多数mysql程序可以从选项文件(有时称为配置文件)中读取启动选项。选项文件提供了一种方便的方式来指定常用的选项,这样当您运行一个程序时,它们就不需要在命令行上输入。

要确定程序是否读取选项文件,请使用--help 选择。(用于 MysqDD ,使用 --verbose 和 --help .)如果程序读取选项文件,则帮助消息指示它要寻找的文件和识别的选项组。

注意事项
一个mysql程序从 --no-defaults 选项读取任何选项文件.mylogin.cnf .

一台服务器从 persisted_globals_load 系统变量禁用不能读取 mysqld-auto.cnf .

许多选项文件是纯文本文件,使用任何文本编辑器创建.例外情况是:

….mylogin.cnf 包含登录路径选项的文件。这是一个由 Mysql_康菲_编辑 有用。看 第6.6.7节,"Mysql_配置器--mySQL配置实用工具" .A “ 登录路径 ” 是一个只允许某些选择的选择:host ,user , password ,port 和 socket .客户程序指定从哪个登录路径读取.mylogin.cnf 使用--login-path 选择。

若要指定其他登录路径文件名,请设置 MYSQL_TEST_LOGIN_FILE 环境变量。这个变量是由 米斯库-测试跑步。 测试效用,但也由 Mysql_康菲_编辑 以及由mysql客户端提供的 Mysql , Mysq判刑 ,等等。

…mysqld-auto.cnf 数据目录中的文件。这个Jon格式MAT文件包含持久的系统变量设置。它是由服务器在执行 SET PERSIST 或 SET PERSIST_ONLY 声明。看 第7.1.9.3节,"持久系统变量" .管理 mysqld-auto.cnf 应留给服务器而不是手动执行。

选项档案处理令

选项文件语法

备选方案档案

选项档案处理令
Mysql按照下面讨论中描述的顺序查找选项文件,并读取任何存在的选项文件。如果您希望使用的选项文件不存在,则使用适当的方法创建它,正如刚才讨论的那样。

注意事项
有关与ndb集群程序一起使用的选项文件的信息,请参阅 第25.4节,"网络数据库集群的配置" .

在Windows上,mysql程序从下表中显示的文件中按指定的顺序读取启动选项(首先读取列出的文件,然后读取的文件优先)。

表6.1窗口系统上读取的选项文件

文件名    目的
%WINDIR%\my.ini, %WINDIR%\my.cnf    全局备选办法
C:\my.ini,C:\my.cnf    全局备选办法
BASEDIR\my.ini, BASEDIR\my.cnf    全局备选办法
defaults-extra-file    指定的文件 --defaults-extra-file ,如果有的话
%APPDATA%\MySQL\.mylogin.cnf    登录路径选项(仅限于客户端)
DATADIR\mysqld-auto.cnf    系统变量持续存在 SET PERSIST 或 SET PERSIST_ONLY (仅供伺服器使用)

在上表中,%WINDIR% 表示您的Windows目录的位置。一般来说 C:\WINDOWS .使用下列命令来确定它的精确位置 WINDIR 环境变量:

C:\> echo %WINDIR%
%APPDATA% 表示Windows应用程序数据目录的值.使用下列命令来确定它的精确位置 APPDATA 环境变量:

C:\> echo %APPDATA%
BASEDIR 表示mysql基础安装目录。当mysql9.0已经使用MSI安装时,这是典型的 在其中 表示程序目录(通常 英文版窗口)。 C:\PROGRAMDIR\MySQL\MySQL Server 9.0PROGRAMDIRProgram Files

重要的
尽管mysql配置器将大部分文件放在 PROGRAMDIR ,它安装 my.ini 在…下面 C:\ProgramData\MySQL\MySQL Server 9.0\ 默认目录。

DATADIR 表示mysql数据目录。就像过去 mysqld-auto.cnf ,其默认值是编译mysql时内置的数据目录位置,但可以通过--datadir 指定为选择文件或命令行选项,在此之前处理mysqld-auto.cnf 已经处理完毕。

在UNIX和类似于单机的系统上,mysql程序从下表中显示的文件中按指定的顺序读取启动选项(先读取的文件先读取,后读取的文件优先)。

注意事项
在UNIX平台上,mysql忽略了世界可编写的配置文件。这是有意作为一种安全措施。

表6.2选择文件(在UNIX和类似CO2的系统上阅读)

文件名    目的
/etc/my.cnf    全局备选办法
/etc/mysql/my.cnf    全局备选办法
SYSCONFDIR/my.cnf    全局备选办法
$MYSQL_HOME/my.cnf    服务器专用选项(仅服务器)
defaults-extra-file    指定的文件 --defaults-extra-file ,如果有的话
~/.my.cnf    特定用户选择
~/.mylogin.cnf    用户专用登录路径选项(仅客户端)
DATADIR/mysqld-auto.cnf    系统变量持续存在 SET PERSIST 或 SET PERSIST_ONLY (仅供伺服器使用)

在上表中,~ 表示当前用户的主目录 $HOME ).

SYSCONFDIR 表示与SYSCONFDIR 选择 木棉 当我创建了mysql。当然,这是etc 目录位于编译的安装目录下。

MYSQL_HOME 是一个环境变量,它包含到服务器特定的目录的路径my.cnf 文件存放。如果 MYSQL_HOME 没有设置,您使用 MysqLD_安全 程序, MysqLD_安全 安排在 BASEDIR ,数据基安装目录。

DATADIR represents the MySQL data directory. As used to find mysqld-auto.cnf, its default value is the data directory location built in when MySQL was compiled, but can be changed by --datadir specified as an option-file or command-line option processed before mysqld-auto.cnf is processed.

If multiple instances of a given option are found, the last instance takes precedence, with one exception: For mysqld, the first instance of the --user option is used as a security precaution, to prevent a user specified in an option file from being overridden on the command line.

Option File Syntax
下面的选项文件语法说明适用于手动编辑的文件.这排除了 .mylogin.cnf ,是使用 Mysql_康菲_编辑 是加密的,而且 mysqld-auto.cnf ,由服务器以JSON格式创建。

在运行mysql程序时,命令行上可能给出的任何长选项也可以在一个选项文件中给出。要获得一个程序的可用选项列表,请使用--help 选择。(用于 MysqDD ,使用 --verbose 和 --help .)

在选项文件中指定选项的语法类似于命令行语法(参见 第6.2.2.1节,"在命令行中使用选项" )。然而,在一个选项文件中,您从选项名中省略了引导的两个破折线,并且只为每一行指定一个选项。例如, --quick 和--host=localhost 在命令行中应指定为 quick 和host=localhost 在一个选项文件中单独的行。指定表格的选择 在一个选项文件中,将它写为 . --loose-opt_nameloose-opt_name

选项文件中的空行被忽略。非空行可采用下列任何一种形式:

#comment, ;comment

评论行从# 或 ; .A# 评论也可以从一行中间开始。

[group]

group设置选项的程序或组的名称。在组行之后,任何选择设置行都将应用于命名组,直到给出选项文件或另一组行的结尾。选项组名称不区分大文本。

opt_name

相当于 在命令行。 --opt_name

opt_name=value

相当于 在命令行。在一个选项文件中,您可以在 在命令行上不真实的东西。可选择地将该值包含在单引号或双引号中,如果该值包含 评论性质。 --opt_name=value=#

前置和后置空格自动从选项名和值中删除。

你可以使用转义序列\b , \t ,\n , \r ,\\ ,以及 \s 在选项值中表示回空格、选项卡、换行、回车、反斜杠和空格字符。在选项文件中,这些转义规则适用于:

后面跟着一个有效的转义序列字符的反斜杠将被转换为该序列所表示的字符。例如,\s 变成了一个空间。

没有跟着有效的转义序列字符的反斜杠保持不变。例如, \S 依然如故。

前面的规则意味着一个字面斜杠可以作为\\ ,或作为\ 如果它后面没有一个有效的转义序列字符.

选择文件中的转义序列的规则与SQL语句中的字符串文本中的转义序列的规则略有不同。在后一种情况下,如果 “x ” 不是一个有效的转义序列, 变成 “ ” 与其说 .看 第11.1.1节,"字符串文字" . \xx\x

选项文件值的转义规则与Windows路径名称特别相关,后者使用的是 \ 作为路径名称分隔符。Windows路径名称中的分隔符必须作为\\ 如果后面跟着一个转义序列字符.它可以写成\\ 或\ 如果不是的话。或者,/ 可用于Windows路径名称,并被视为\ .假设你想指定一个基本目录 C:\Program Files\MySQL\MySQL Server 9.0 在一个选项文件中。这可以通过多种方式实现。一些例子:

basedir="C:\Program Files\MySQL\MySQL Server 9.0"
basedir="C:\\Program Files\\MySQL\\MySQL Server 9.0"
basedir="C:/Program Files/MySQL/MySQL Server 9.0"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s9.0
如果一个选项组名称与程序名称相同,则该组中的选项专门适用于该程序。例如,[mysqld] 和[mysql] 团体申请 MysqDD 服务员和 Mysql 客户程序,分别。

…[client] 选项组由mysql发行版中提供的所有客户端程序读取(但是 不 经过 MysqDD )。要了解使用CAPI的第三方客户端程序如何使用选项文件,请参阅CAPI文档 mysql_options() .

…[client] 组使您能够指定适用于所有客户机的选项.例如, [client] 指定连接到服务器的密码的适当组。(但要确保选项文件只能由您自己访问,这样其他人就无法发现您的密码。)千万不要在[client] 群体,除非 全部的 你使用的客户程序。不了解选项的程序在显示错误消息后退出,如果您试图运行它们。

先列出更一般的选项组,然后列出更具体的组。例如,[client] 组更普遍,因为它被所有客户端程序读取,而[mysqldump] 仅由 Mysql31- .稍后指定的选项优先于前面指定的选项,因此将选项组放在顺序中[client] , [mysqldump] 使能够 Mysql31- -推翻的具体选择 [client] 各种选择。

这里是一个典型的全局选项文件:

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=128M

[mysqldump]
quick
以下是一个典型的用户选项文件:

[client]
# The following password is sent to all standard MySQL clients
password="my password"

[mysql]
no-auto-rehash
connect_timeout=2
创建选项组,只由 MysqDD 来自特定的mysql发布系列的服务器,使用具有 [mysqld-8.4] , [mysqld-9.0] ,等等。下一组指出: sql_mode 设置只应由具有9.0.X版本号的mysql服务器使用:

[mysqld-9.0]
sql_mode=TRADITIONAL
备选方案档案
有可能使用!include 指令在选项文件中包括其他选项文件和 !includedir 为选项文件搜索特定的目录。例如,包括 /home/mydir/myopt.cnf 文件,使用下列指令:

!include /home/mydir/myopt.cnf
去搜查/home/mydir 目录和读到的选项文件,请使用此指令:

!includedir /home/mydir
对于目录中的选项文件的读取顺序,Mysql无法保证.

注意事项
任何使用 !includedir 关于UNIX操作系统的指令 必须 文件名以 .cnf .在Windows上,这个指令检查文件.ini 或 .cnf 延期。

与任何其他选项文件一样,编写包含的选项文件的内容。也就是说,它应该包含一组备选办法,每一个办法之前都有一个 表示选项适用的程序的行. [group]

在处理包含文件时,只使用当前程序正在寻找的组中的选项。其他群体被忽视。假设 my.cnf 文件包含这一行:

!include /home/mydir/myopt.cnf
假设/home/mydir/myopt.cnf 像是这样:

[mysqladmin]
force

[mysqld]
key_buffer_size=16M
如果my.cnf 是由 MysqDD ,只有 [mysqld] 加入 /home/mydir/myopt.cnf 已经用过了。如果文件是由 Mysq判刑 ,只有 [mysqladmin] 使用群体。如果文件被任何其他程序处理,则没有 /home/mydir/myopt.cnf 已经用过了。

…!includedir 指令处理类似的,除了指定目录中的所有选项文件都被读取.

如果一个选项文件包含!include 或 !includedir 指令、这些指令所命名的文件在处理选项文件时都会被处理,无论它们出现在文件中的哪里。

对于要工作的包含指令,不应该在引号中指定文件路径,并且应该没有转义序列。例如,下列声明 my.ini 阅读选项文件 myopts.ini :

!include C:/ProgramData/MySQL/MySQL Server/myopts.ini
!include C:\ProgramData\MySQL\MySQL Server\myopts.ini
!include C:\\ProgramData\\MySQL\\MySQL Server\\myopts.ini
在窗户上,如果 是文件中的最后一行,请确保在结尾处追加新行;否则,该行将被忽略。 !include /path/to/extra.ini

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值