美文网首页
定制MySQL数据目录

定制MySQL数据目录

作者: RocWay | 来源:发表于2017-06-29 15:27 被阅读0次

    MySQL的数据存在哪里

    具体位置可以在配置文件中指定datadir:

    # /etc/mysql/mysql.conf/mysqld.cnf
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysqldata
    log-error       = /var/log/mysql/error.log
    # By default we only accept connections from localhost
    # bind-address  = 127.0.0.1
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    

    数据目录无法访问

    尽管已经修改好了datadir,但是此时重启mysql,会提示无法访问这个新的datadir。原因是apparmor限制了mysql能够访问的目录。
    运行aa-status,可以看到相应结果:

    [root@boxy ~]# aa-status 
    apparmor module is loaded.
    18 profiles are loaded.
    18 profiles are in enforce mode.
       /sbin/dhclient
    ...
       /usr/sbin/cupsd
       /usr/sbin/mysqld
       /usr/sbin/tcpdump
    0 profiles are in complain mode.
    2 processes have profiles defined.
    ...
    

    在上面的结果中, mysqld处于enfore mode,也就是说mysqld现在受apparmor的控制。
    而mysqld具体能访问什么目录,则是在

    /etc/apparmor.d/usr.sbin.mysqld

    文件中指定的。

     # Allow data dir access                                                                                                                                                             
       /var/lib/mysql/ r,                                                                                                                                                                
       /var/lib/mysql/** rwk,  
    

    这是mysql缺省的数据目录。

    允许访问新的数据目录

    在usr.sbin.mysqld文件中,可以使用如下指令,引用用户配置文件,

      include <local/usr.sbin.mysqld>
    

    然后用户就可以在

    /etc/apparmor.d/local/usr.sbin.mysqld

    文件中指定新的、允许访问的数据目录。

     # Allow data dir access                                                                                                                                                             
       /path/to/new/datadir/ r,                                                                                                                                                                
       /path/to/new/datadir/** rwk,  
    ##
    

    重新载入apparmor配置文件,重新启动mysql即可访问新的数据目录。

    [root@boxy ~]# service apparmor reload
     * Reloading AppArmor profiles
    Skipping profile in /etc/apparmor.d/disable: usr.bin.firefox
    Skipping profile in /etc/apparmor.d/disable: usr.sbin.rsyslogd
    

    相关文章

      网友评论

          本文标题:定制MySQL数据目录

          本文链接:https://www.haomeiwen.com/subject/udbmcxtx.html