zoukankan      html  css  js  c++  java
  • CentOS6 更改MySQL默认数据库路径,关键在SELINUX

        在CentOS中修改MySQL默认数据库路径,网上介绍很多,只需要修改 /etc/my.cnf 和 /etc/init.d/mysqld,将新目录所有者改为mysql:mysql,很简单。但是改后重启mysqld却总是失败,/var/log/mysqld.log 提示mysqld没有权限访问目录,如下:
    InnoDB: The error means mysqld does not have the access rights to
    InnoDB: the directory.

        想来想去想起了 SELINUX,呵呵,搜了一下找到了方法,其实就是一两条指令的事儿。

        CentOS使用 yum install mysql-server后,默认数据库目录是 /var/lib/mysql,假如我们要把数据库目录改到 /opt/mysql,下面是全过程。

    1. 停止 mysqld
    # service mysqld stop

    2. 修改配置文件
    # vi /etc/my.cnf
    [mysqld]
    # datadir=/var/lib/mysql
    datadir=/opt/mysql

    # vi /etc/init.d/mysqld
    # get_mysql_option mysqld datadir "/var/lib/mysql"
    get_mysql_option mysqld datadir "/opt/mysql"

    3. 复制数据库文件到新的目录并更改所有者
    # cp -r /var/lib/mysql /opt/
    # chmod -R mysql:mysql /opt/mysql

    4. 这时候如果运行 # service mysqld start 不会成功的,因为要对付SELINUX。有两种办法:
    1)关闭SELINUX
    SELINUX默认是启用的,可以用 # setenforce 0 关闭 SELINUX(启用SELINUX:# setenforce 1)。
    把指令加到系统默认启动里面(“>>” 表示追加到文件中):
    # echo "setenforce 0" >> /etc/rc.local

    2)启用SELINUX
    我们还是希望SELINUX提供系统安全性,那么就要修改目录的SELINUX上下文:
    # chcon -R -t mysqld_db_t /opt/mysql

    然后再启动 mysqld 就可以了。

    原数据目录(/var/lib/mysql)中只需要保留 mysql.sock,剩下的文件在确认数据库完全正常后就可以删除了。

    顺便记录一下SELINUX的其他参数:
    # chcon -R -h -t httpd_sys_content_t /www/web/
    # chcon -R -t samba_share_t /path

    (参考 http://topic.csdn.net/u/20100419/16/a1929b50-de24-4346-87ee-659a65668960.html ,在#10)

  • 相关阅读:
    JavaScriptCore框架介绍
    可执行程序加载到内存的过程
    阿里云服务器怎么更换系统盘
    什么是A记录  域名
    宝塔服务器管理助手Linux面版-使用教程
    虚拟主机、VPS以及云主机的区别和对比
    怎样选择一个好的虚拟主机
    解Linux SSH命令大全,新手必看SSH命令
    虚拟主机,VPS,云主机之间的区别?
    云服务器和虚拟主机的区别:
  • 原文地址:https://www.cnblogs.com/panblack/p/change_default_mysql_data_directory.html
Copyright © 2011-2022 走看看