zoukankan      html  css  js  c++  java
  • 小知识:MySQL配置文件优先级

    今天在RHEL7上,严格按之前的安装规范文档,部署MySQL环境时,发现通过服务的方式启动MySQL失败:
    关键错误是:

    log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
    

    规范的配置文件是:/etc/mysql/my.cnf,其中也有对应 log-error 参数的值,并不是上面错误提示的路径。
    而且为何会有mariadb字样呢,猜测可能是RHEL7默认配套mariadb的原因,但是查询安装相关的rpm包,也未发现有mariadb的服务端。
    最后对比发现,RHEL7默认的/etc/my.cnf有默认值,即使mariadb没有安装,而这个默认值里配置的 log-error 参数值正好匹配报错信息。
    解决方案有两个:

    • 1.删掉/etc/my.cnf配置文件
    • 2.使用规范的参数配置,直接覆盖/etc/my.cnf配置文件

    我这里选择了第二种方案,成功解决问题。

    最后复盘时发现用:

    mysql --help|more
    

    可以看到参数文件的顺序是如下:

    Default options are read from the following files in the given order:
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
    

    也就是说优先级:/etc/my.cnf > /etc/mysql/my.cnf
    但我们知道优先级低的配置文件因为最后被读到,如果有同一参数在不同配置文件中设置有差异,反而优先级低的配置文件,反而应该会覆盖之前优先级高的配置文件中的对应参数内容。
    那么这又是怎么回事呢?

    实际上仔细观察,会发现RHEL7中默认的my.cnf内容如下:

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    # Settings user and group are ignored when systemd is used.
    # If you need to run mysqld under a different user or group,
    # customize your systemd unit file for mariadb according to the
    # instructions in http://fedoraproject.org/wiki/Systemd
    
    [mysqld_safe]
    log-error=/var/log/mariadb/mariadb.log
    pid-file=/var/run/mariadb/mariadb.pid
    
    #
    # include all files from the config directory
    #
    !includedir /etc/my.cnf.d
    

    实际上log-error的配置是在标签[mysqld_safe]下,而不是[mysqld]下,而[mysqld_safe]标签下的内容在之后优先级低的配置文件中并没有再次设置;
    换句话说,如果log-error在各个配置文件中,都是统一配置在[mysqld]下,就可以实现被后面优先级低的用户配置文件覆盖。

    AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
  • 相关阅读:
    【原创】用python写的一个监测本地进程CPU占用的程序
    CSS清除浮动的7种方法以及优缺点
    JavaScript函数作用域
    BOM的概念以及相关操作
    文件与文件系统的压缩与打包
    CSRF
    netstat 命令详解
    httpd安装
    ubuntu 耳机没声音
    Linu正常使用MobaXterm
  • 原文地址:https://www.cnblogs.com/jyzhao/p/13179491.html
Copyright © 2011-2022 走看看