zoukankan      html  css  js  c++  java
  • Change the default MySQL data directory with SELinux enabled

    转载:https://rmohan.com/?p=4605

    Change the default MySQL data directory with SELinux enabled

    This is a short article that explains how you change the default MySQL data directory and adjust SELinux to account for the changes. The article assumes that you’re running either RHEL, CentOS, Scientific Linux or Fedora with SELinux enabled. This works with the most recent EL (6.2) version.

    We’ll be doing this in the following order.

    • Stopping the MySQL server
    • Create a new data directory and move the content from the old data directory
    • Correct the MySQL configuration file
    • Adjust SELinux parameters to accept our new change
    • Starting the MySQL server

    Stopping the MySQL server

    # service mysqld stop

    Create a new data diretory and move the content from the old one

    Creating a new data directory

    # mkdir /srv/mysql/
    # chown mysql:mysql /srv/mysql

    Moving the original data files

     # mv /var/lib/mysql/* /srv/mysql/

    Correct the MySQL configuration file

    Edit the my.cnf file for your distribution. In my example it’s located in the /etc/mysql/ directory. RHEL/CentOS/Scientific Linux put the my.cnf file directly in /etc by default.

    # nano /etc/mysql/my.cnf

    Change

    datadir=/var/lib/mysql

    to

    datadir=/srv/mysql

    and

    socket=/var/lib/mysql/mysql.sock

    to

    socket=/srv/mysql/mysql.sock

    and save the file.

    Adjust SELinux parameters to accept our new change

    Should the following command output “Permissive” or “Disabled” then you may skip the details for SELinux.

    # getenforce

    Run the semanage command to add a context mapping for /srv/mysql.

    # semanage fcontext -a -t mysqld_db_t "/srv/mysql(/.*)?"

    Now use the restorecon command to apply this context mapping to the running system.

    # restorecon -Rv /srv/mysql

    Starting the MySQL server

    # service mysqld start

    Verifying access and connectivity

    $ mysql -u root -p
    mysql> show databases;

    If this is working, you’re up and running. Should you get a message that says

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

    then add the following to your /etc/my.cnf

    [client]
    socket = /srv/mysql/mysql.sock
    

    Optionally you can just use

    $ mysql -u root -p --protocol tcp

    to avoid connecting via the socket.

  • 相关阅读:
    小试阿里云容器服务
    .NET跨平台:再见dnx,你好dotnet cli
    使用Let's Encrypt手动创建https证书
    Chrome以https访问gitlab的问题:Your connection is not private
    [ASP.NET 5]终于解决:Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll'
    Mac上远程桌面连接Windows Server 2012 R2
    解决JSON.stringify()在IE10下无法使用的问题
    解决阿里云SLB无法添加https证书的问题
    “状态机”学习笔记
    HttpClient读取ASP.NET Web API错误信息的简单方法
  • 原文地址:https://www.cnblogs.com/coffee_cn/p/9939148.html
Copyright © 2011-2022 走看看