mysql参数文件选项组_选项文件(Option Files)/配置文件(Configuration Files)的使用

1.选项文件的概念及作用

大多数MySQL程序能从选项文件(有时称为配置文件)中读取启动选项.运行程序时,为了不必在命令行输入常用选项,选项文件为确定这些常用选项提供了一个方便的途径.

为了决定程序是否读取选项文件,可以--help选项运行该程序.(对mysqld,使用--verbose和--help,二者缺一不可.)如果读取选项文件,返回的帮助信息会指示它将寻找哪个文件,以及遵从的选项组.

--注:

带有--no-defaults选项运行的mysql程序不会读取.mylogin.cnf外的选项文件.很多选项文件为文本编辑器创建的纯文本文件.但包含登录路径选项的.mylogin.cnf文件则是个例外,该文件为mysql_config_editor工具创建的加密文件.“登录路径(login path)”为一个只允许某些选项的选项组,例如:host,user,password,port和socket等.客户端程序通过--login-path选项确定从.mylogin.cnf读取登录路径.为了确定其他登录路径文件名,可以设置MYSQL_TEST_LOGIN_FILE环境变量,mysql-test-run.pl测试工具会使用该变量,但mysql_config_editor和mysql客户端,像:mysql,mysqladmin等,也可以识别使用该变量.

2.选项文件查找顺序

mysql将会按照下面列出的顺序寻找并读取存在的选项文件,如果不存在,可以使用合适的工具进行创建.

Windows上,mysql程序按照下面的顺序寻找选项文件,并从中读取启动选项(从前向后按序寻找和读取).

1)%WINDIR%\my.ini, %WINDIR%\my.cnf 全局选项

2)C:\my.ini, C:\my.cnf 全局选项

3)BASEDIR\my.ini,BASEDIR\my.cnf 全局选项

4)defaults-extra-file --defaults-extra-file选项确定的文件

5)%APPDATA%\MySQL\.mylogin.cnf 登录路径选项(仅客户端)

%WINDIR%表示windows系统目录的位置,其一般为c:\windows,可以用以下命令确定%WINDIR%环境变量的确切位置:

C:\> echo %WINDIR%

%APPDATA%表示windows应用数据目录,可以用以下的命令确定%APPDATA%环境变量的确切位置:

C:\> echo %APPDATA%

BASEDIR表示mysql基安装目录.当用mysql installer安装mysql5.7时,其典型为“C:\PROGRAMDIR\MySQL\MySQL 5.7 Server”目录,这里PROGRAMDIR表示程序目录(通常为windows英文版的程序文件).

Unix和类Unix系统上,mysql程序按照下面列出的顺序寻找选项文件,并从中读取启动选项(从前向后按序寻找和读取)

--注:

Unix平台上,mysql忽略拥有通用写权限的配置文件.这主要出于安全考虑.

1)/etc/my.cnf 全局选项

2)/etc/mysql/my.cnf 全局选项

3)SYSCONFDIR/my.cnf 全局选项

4)$MYSQL_HOME/my.cnf 针对服务器特定的选项(仅服务器)

5)defaults-extra-file --defaults-extra-file选项确定的文件

6)~/.my.cnf 针对用户特定的选项

7)~/.mylogin.cnf 针对用户特定的登录路径(login path)选项(仅客户端)

前述中,“~”表示当前用户的主目录($HOME的值).

SYSCONFDIR表示编译mysql时SYSCONFDIR选项指定的目录.默认时,其为编译时指定安装目录下的etc目录.

MYSQL_HOME为指向包含服务器特定mysql.cnf文件所在目录的环境变量.如果没有设置MYSQL_HOME,且通过mysqld_safe程序启动mysql,则mysqld_safe将其设定为BASEDIR,也就是mysql的安装基目录.

虽然DATADIR可能因为平台或安装方法不同的不同,但其通常为/usr/local/mysql/data. 该值为编译mysql时指定的数据目录位置,而非启动mysql时--datadir选项指定的位置.运行时指定--datadir不会影响服务器处理任何选项前寻找和读取的选项文件.

3.选项文件语法及填写规则

如果某个选项在选项文件中被指定了多次,则以最后一次为准,但对mysqld来说有个特例,处于安全考虑,--user选项则以第一次指定值为准,这样可以防止选项文件中指定的用户被命令行覆盖掉.

下述选项文件的语法使用手工编辑的文件.但不包括.mylogin.cnf,其通过mysql_config_editor创建和加密.运行mysql程序时可以在命令行指定的任何长选项,都可以在选项文件中指定.为了得到某个程序可用选项,使用--help选项运行该程序.(mysqld得用--verbose和--help两个选项).

选项文件中确定选项的语法和命令行语法类似.但选项文件中,需要去掉选项名前面的两个破折号且每行只确定一个选项.例如:命令行的--quick和--host=localhost选项,在选项文件中应该分别在独立行中确定为quick和host=localhost.为了在选项文件中确定

--loose-opt_name,应该写为loose-opt_name.

选项文件中的空行将被忽视.非空行可以为如下格式:

• #comment, ;comment

注释行以#或;开始.一个#注释也可以在一行中间开始.Comment lines start with # or ;. A # comment can start in the middle of a line as well.

• [group]

group为程序或想为其设置选项的组的名字.group行后,任何设置选项行将会应用于被命名的group,直到选项文件末尾或另一个group行被设置.选项group名大小写不敏感.

• opt_name

--opt_name命令行选项的等同物.

• opt_name=value

命令行--opt_name=value的等同物. 选项文件中,"="旁边可以有空格,但命令行则不行.其后的值可以选择是否用单引号或双引号括起来,当选项值中包含"#"等特殊字符时会用到.

选项名和值前后的空格将被自动删掉.其中,可以在选项值中用转义序列 \b, \t, \n, \r, \\, 和\s等表示空格,tab键,新行,回车,反斜杠和空格等.选项文件中,下列转义规则将适用:

• 反斜杠后跟一个有效序列字符被转换成序列表示的字符.例如:\s被转换成空格.

• 反斜杠后不跟有效转义序列字符将保持不变.例如:\S依然为\S.

前述规则意味着文本反斜杠可以用\\表示,或当后面不跟一个有效转义序列字符时用\表示.

选项文件中的转义序列规则与SQL语句中文本串中的转义序列规则不同.

后者上下文中,如果"x"不是一个有效的转义序列字符,\x将变为"x"而非\x.选项文件值的转义规则尤其与windows路径名相关,其用\作为一个路径名分隔符.如果后面跟一个转义序列字符,windows路径名分隔符必须被写成\\.否则,可以写成\\或\.或者,/也可以用作windows路径名且将被认作\.假设像在选项文件中用“C:\Program Files\MySQL\MySQL Server 5.7”做基目录.可以有多个方法.例如:

basedir="C:\Program Files\MySQL\MySQL Server 5.7"

basedir="C:\\Program Files\\MySQL\\MySQL Server 5.7"

basedir="C:/Program Files/MySQL/MySQL Server 5.7"

basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s5.7

如果选项group名和程序名相同,该group中的选项将用于该程序.例如:[mysqld]和[mysql]groups将会分别应用于mysqld服务器和mysql客户端程序.

[client]选项group将被mysql发布版本中提供的所有客户端(但不包括mysqld)读取.

[client]group使得用户可以为所有的客户端确定选项.例如:[client]适于用来指定连接服务器的口令.(但要确定只有你可以存取该选项文件,以防口令泄露.除非某个选项能被所有客户端程序使用,否则,不要讲该选项放于[client]group.如果某个程序不能识别该选项,当你运行时将显示错误信息后退出.选项文件中,应该将更通用的选项组放在前面,而更特定的组放在后面.例如:[client]group更通用,因为所有客户端程序将读取,而[mysqldump]group只被mysqldump读取.后面确定的将会覆盖前面确定的同个选项的值,因此,按照先[client]后[mysqldump]的顺序将使mysqldump特定选项覆盖[client]选项.下面为一个典型的全局选项文件:

[client]

port=3306

socket=/tmp/mysql.sock

[mysqld]

port=3306

socket=/tmp/mysql.sock

key_buffer_size=16M

max_allowed_packet=8M

[mysqldump]

quick

下面为一个典型的用户选项文件:

[client]

# The following password will be sent to all standard MySQL clients

password="my password"

[mysql]

no-auto-rehash

connect_timeout=2

为了创建确定mysql版本系列mysqld服务器读取的选项groups,使用[mysqld-5.6], [mysqld-5.7]等名字的groups.下面的group指示mysql 5.7.x版本的servers使用sql_mode设置:

[mysqld-5.7]

sql_mode=TRADITIONAL

4.嵌套包含选项文件方法及指令

选项文件中可以使用!include指令来包含其他选项文件,以及!includedir搜索特定目录作为选项文件.例如:为了包含/home/mydir/myopt.cnf文件,用如下指令:

!include /home/mydir/myopt.cnf

为了搜索/home/mydir目录和读取发现的选项文件,用如下指令:

!includedir /home/mydir

mysql并不保证该目录中选项文件被读取的顺序.

--注:

unix操作系统上,任何被发现及用!includedir指令包含的任何文件都必须有以“.cnf”结尾的文件名.windows,该指令将检查带".ini"或"cnf"扩展名的文件.

被包含选项文件的内容与任何其他选项文件类似.即,其应该包含选项groups,每个group以[group]行开始,以指示这些选项将应用的程序.

当被包含文件被处理时,仅当前程序正寻找的groups中的那些选项被用.其他group将被忽略.假设my.cnf文件包含如下行:

!include /home/mydir/myopt.cnf

且假设/home/mydir/myopt.cnf如下所示:

[mysqladmin]

force

[mysqld]

key_buffer_size=16M

如果my.cnf被mysqld处理,仅/home/mydir/myopt.cnf中的[mysqld] group被用.如果文件被mysqladmin处理,则仅[mysqladmin]group被用.如果文件被其他程序处理,则/home/mydir/myopt.cnf中的选项都不被用.

如果一个选项文件包含!include或!includedir指令,当选项文件被处理时,无论指令出现于文件的什么位置,指令指示的文件都将被处理.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值