4.2.6使用選項(配置)文件
++++++++++++++++++++
大多數的mysql程序都會支持配置文件;使用--help選項可以查看某一個mysql程序是否讀取選項(配置)文件;
但是mysqld要使用--verbose --help;如果程序支持選項文件,那麼--help信息會告訴我們選項文件在哪;
mysql_config_editor工具創建了一個.mylogin.cnf文件,這個文件包含了login path options;
A “login path” is an option group that permits only certain options: host, user, password, port and socket.
客戶端程序使用--login-path選項指定從.mylogin.cnf文件讀取哪一個“login path”;
MYSQL_TEST_LOGIN_FILE環境變量可以指定一個可選的配置文件;
在Windows系统中,mysql程序按照顺序从下面的文件中读取启动选项:
1、%PROGRAMDATA%\MySQL\MySQL
2、Server 5.7\my.ini, %PROGRAMDATA%\MySQL\MySQL Server 5.7\my.cnf
3、%WINDIR%\my.ini, %WINDIR%\my.cnf
4、C:\my.ini, C:\my.cnf
5、INSTALLDIR\my.ini, INSTALLDIR\my.cnf
6、defaults-extra-file
7、%APPDATA%\MySQL\.mylogin.cnf
其中,1-5是全局的选项,6是使用--defaults-extra-file=file_name指定的,7是登录路径选项
%PROGRAMDATA% %WINDIR% %APPDATA%等,是Windows的环境变量,可以使用echo命令查看;
%PROGRAMDATA% 通常是C:\ProgramData(这是一个隐藏目录);在Windows Vista以下的版本中这个目录一般是C:\Documents and Settings\All Users\Application Data
%WINDIR% 通常是C:\WINDOWS
%APPDATA% 通常是C:\Users\yourname\AppData\Roaming
在Unix Linux Mac系统下,mysql程序按照顺序从下面的文件中读取启动选项:
1、/etc/my.cnf
2、/etc/mysql/my.cnf
3、SYSCONFDIR/my.cnf
4、$MYSQL_HOME/my.cnf
5、defaults-extra-file
6、~/.my.cnf
7、~/.mylogin.cnf
其中,1-3是全局选项,4是mysql服务器选项,6是用户自定义选项
SYSCONFDIR是使用CMake构建mysql的时候指定的目录,通常是编译安装的目录下的etc目录;
MYSQL_HOME是一个存放server-specific my.cnf 文件的环境变量;
如果这个环境变量没有指定,使用mysqld_safe命令启动mysql服务器的时候,mysqld_safe会试图按照如下方式设置这个环境变量:
1、我们约定BASEDIR = mysql base directory; DATADIR = mysql data directory
2、对于mysql 5.7.8来说,如果MYSQL_HOME没有设置,mysqld_safe将它设置为BASEDIR
3、在mysql 5.7.8 之前,如果DATADIR 里边有my.cnf 但是BASEDIR 里边没有,mysqld_safe将MYSQL_HOME 设置为DATADIR
如果DATADIR 里边没有my.cnf 文件,就mysqld_safe将MYSQL_HOME 设置为 BASEDIR
通常情况下,对于使用二进制方式安装的mysql来说,DATADIR 是 /usr/local/mysql/data;对于使用源码方式安装的mysql来说,DATADIR 是 /usr/local/var
上面讲的这个配置文件如果不存在,而我们又需要的话,完全可以自己创建;
如果一个选项在多个地方配置了,最后一个被读取的文件中的配置优先权最高;但是,对于mysqld来说,--user选项是个例外();
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.
命令行中能使用的长格式的选项都可以在配置文件中使用;
语法和命令行中相似,只是--被去掉了,例如:--quick和--host=localhost在配置文件中分别是quick和host=localhost
配置文件中的空行被忽略;
被注释的行以#或者;开头,不同的是,#可以在行中间使用;
如果选项值里边包含#,可以使用单引号或者双引号;
在配置文件中,=左右可以有空格,但是在命令行中不可以;
开头和结尾的空格自动删除;
可以使用转义字符\b \t \n \r \\ \s ;转义字符在Windows中使用的多;
\可以写成"\\";如果\后面没有跟合法的转义字符,也可以写成"\";(也就是说,在Windows路径名中,如果\后面有合法的转义字符,那么必须写成\\)
“\x”中,如果x不是一个合法的转义字符,那么将会被解释为x而不是\x;
另外,在Windows中,/会被当做\;
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
如果选项组的名字和mysql程序名字一样,那么该选项组就适用于该程序;例如[mysql] 选项组下的配置选项将会被mysql程序读取;
[client]选项组下的配置选项会被所有mysql程序读取,除了mysqld;
[client]选项组下是最好的放置密码的地方;如果一个选项不能被所有的mysql程序读取,不要把它放到[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
如果你想针对特定版本的mysql服务器创建选项组,那么使用这种方式:[mysqld-5.6] [mysqld-5.7]
包含其他的配置文件
!include /home/mydir/my.cnf
!includedir /home/mydir/ 要求目录下需要被包含的文件以.cnf(Windows或者Unix) 或者.ini(Windows)结尾;里边的文件的读取顺序不能保证;
例子:
my.cnf
!include /home/mydir/myopt.cnf
/home/mydir/myopt.cnf
[mysqladmin]
force
[mysqld]
key_buffer_size=16M
如果mysqld使用了my.cnf文件,那么/home/mydir/myopt.cnf里边只有[mysqld]这个选项组被使用;
如果mysqladmin使用了my.cnf文件,那么/home/mydir/myopt.cnf里边只有[mysqladmin]这个选项组被使用;
否则,/home/mydir/myopt.cnf无用;
++++++++++++++++++++
mysql程序概览之(二)
最新推荐文章于 2022-08-10 11:15:55 发布