Назад | Перейти на главную страницу

Не удается изменить папку данных mysql CentOS 6

У меня установлен сервер с CentOS 6.3 и Mysql. Я создал два раздела, один для системы и больший для данных, смонтированных в / data. Сразу после установки Mysql я создал dir / data / mysql, а затем как root я изменил контекст selinux для этой папки, набрав chcon -R -t mysqld_db_t /data/mysql и изменил файл конфигурации Mysql (my.cnf) на это:

[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
user=mysql
symbolic-link=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

но теперь я не могу запустить службу mysqld! Это дает мне Невозможно изменить каталог на / data / mysql (код ошибки 13)

Это результат ls -Z /data | grep mysql:

drwxr-xr-x. mysql mysql system_u:object_r:mysqld_db_t:s0 mysql

Странно то, что каждый раз, когда я пытаюсь запустить службу mysqld, и она терпит неудачу, контекст myslq dir становится system_u:object_r:default_t:s0 и в нем создаются два каталога (mysql и test).

В любом случае, если я отключу selinux, evreything отлично работает ....

Тебе надо использовать semanage fcontext чтобы установить контекст файла по умолчанию для нестандартного расположения баз данных MySQL.

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

После этого используйте restorecon чтобы исправить любые файлы / каталоги с неправильной маркировкой:

restorecon -r -v /data/mysql

Теперь у вас не должно возникнуть проблем с SELinux.

У меня такая же проблема, и я решил:

Проблема заключается в разрешении, my.cnf выполняет mysqld с пользователем mysql [mysqld]
datadir = / данные / MySQL
сокет = / данные / mysql / mysql.sock
пользователь = MySQL
символическая ссылка = 0

Затем я перемещаю использованные файлы mysql и ссылки по всему / var / lib / mysql /, затем изменяю:

/etc/my.cnf

[mysqld]
datadir = / вар / библиотека / mysql
сокет = / var / lib / mysql / mysql.sock
пользователь = MySQL
# По умолчанию используется старый формат пароля для совместимости с mysql 3.x
# клиентов (использующих пакет совместимости с mysqlclient10).
old_passwords = 1
# Отключение символических ссылок рекомендуется для предотвращения различных угроз безопасности;
# для этого раскомментируйте эту строку:
# символические ссылки = 0
[mysqld_safe]
журнал-ошибка = / var / lib / mysql / mysqld.log
pid-файл = / var / lib / mysql / mysqld.pid

/etc/init.d/mysqld

get_mysql_option mysqld datadir "/ var / lib / mysql"
datadir = "$ результат"
get_mysql_option сокет mysqld "$ datadir / mysql.sock"
socketfile = "$ результат"
get_mysql_option mysqld_safe log-error "/var/lib/mysql/mysqld.log"
errlogfile = "$ результат"
get_mysql_option mysqld_safe pid-файл "/var/lib/mysql/mysqld.pid"
mypidfile = "$ результат"
.
.
.
fi [$ ret -eq 0] && touch /var/lib/mysql/mysqld.lock (это и еще одна ссылка на файл блокировки.)
вернуть $ ret

Я меняю имя mysql заблокировать файл mysqld.lock в /etc/init.d/mysqld, но это не обязательно.

наконец, я меняю владельца / var / lib / mysql chown mysql: mysql / var / lib / mysql -R

и установите разрешения:

chmod 755 / var / lib / mysql -R

сейчас

/etc/init.d/mysqld start