mysql程序概览之(二)

    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无用;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值