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)

  • 相关阅读:
    IP地址、手机归属和身份证查询接口
    如何用SQL语句给表增加字段? 如何分区视图?
    屏蔽IE的图片工具条,防止图片被轻易保存的一种方法
    转 无依赖Office资源的导入导出
    Asp.Net Winform 条形码系列之Code39 Code39 Of .Net BarCode Serial Blog
    搬家了。。
    POJ 3162 Walking Race(dfs+单调队列)
    HDOJ 4389 X mod f(x) (数位DP)
    POJ 1947 Rebuilding Roads(树DP)
    POJ 1155 TELE(二分+树DP)
  • 原文地址:https://www.cnblogs.com/panblack/p/change_default_mysql_data_directory.html
Copyright © 2011-2022 走看看