Не может MySQL 5.7 Change Error Log Location For в Ubuntu 16.04

Каждый раз, когда я изменяю местоположение журнала

форма:/var/log/mysql к:/var/www

для хранения каждого, файлы журнала в том же месте (только под общедоступной папкой) в mysqld.cnf mysql сервер не могут перезапустить.

/etc/mysql/mysql.conf.d/mysqld.cnf

log_error = /var/log/mysql/mysql_errors.log

Я проверил на некоторые решения и добавил:

сервер набора символов = utf8

сервер сопоставления = utf8_general_ci

Но все еще не работал./var/www имеет 770 полномочий и принадлежащий группе www-данных.

Я добавил mysql к группе www-данных:

www-данные sudo usermod-aG mysql

Но все еще не работал.

MySQL: 5.7.19

Ubuntu: 16.04.1

Вот журнал ошибок:

Задание для mysql.service перестало работать потому что процесс управления, из которого выходят с кодом ошибки. См. "systemctl состояние mysql.service" и "journalctl - ксенон" для деталей.

mysql.service: Основной процесс, из которого выходят, code=exited, status=1/FAILURE

Каждый раз, когда я отменяю изменение местоположения журнала, оно начинает работать.


РЕДАКТИРОВАНИЕ 31.07.2017

Я выполняю это после изменения местоположения журнала:

sudo touch /var/www/mysql_errors.log
sudo chown mysql:mysql /var/www/mysql_errors.log
sudo chmod 770 /var/www/mysql_errors.log

sudo systemctl restart mysql

sudo journalctl -xe > ~/journal.txt

Вот соответствующие объекты журнала:

-- Unit mysql.service has begun starting up.
Jul 31 00:33:55 mydomain.com audit[1738]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1738/status" pid=1738 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112

Jul 31 00:33:55 mydomain.com audit[1738]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/var/www/mysql_errors.log" pid=1738 comm="mysqld" requested_mask="ac" denied_mask="ac" fsuid=112 ouid=112
Jul 31 00:33:55 mydomain.com audit[1738]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" 

Jul 31 00:33:55 mydomain.com systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
3
задан 6 September 2018 в 01:27

1 ответ

Теперь на основе ссылки Вы обеспечили и другой ресурс об отношениях между AppArmor и Mysql Я смог заставить это работать. Политика, которая управляет mysql, загружается из этого местоположения /usr/sbin/mysqld который Вы видите, когда Вы работаете: sudo aa-status. Это может быть изменено от:

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

и

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

Я буду изменять последнего.

Шаги:

  1. Я создал папку /var/www/html/mysql и с помещенным файл (error.log) там. Я верю mysql будет искать такой файл. Теперь это - мое пользовательское местоположение журнала.

  2. Откройтесь /etc/appparmor.d/local/usr.sbin.mysqld и добавьте следующие строки:

    /var/www/html/mysql/ r,
    /var/www/html/mysql/** rwk,
    
    • Интерпретация:
      • /var/www/html/mysql/ r,:-> дают mysql доступ для чтения к той папке.
      • /var/www/html/mysql/** rwk,:-> дают чтение mysql, пишут и блокируют доступ к содержанию там.
  3. Открытый /etc/mysql/mysql.conf.d/mysqld.cnf и измените местоположение журнала к:

    #log_error = /var/log/mysql/error.log
    log_error = /var/www/html/mysql/error.log
    
  4. Теперь перезапуск apparmor: sudo systemctl restart apparmor

  5. Теперь перезапуск mysql: sudo systemctl restart mysql

Примечание:

  1. Я установил user:group /var/www/html кому: $USER:www-data и полномочия к:
    • пользователь: rwx,
    • группа: rwx, и
    • другие: r-x
  2. Добавленный mysql пользователь к www-data группа:

    sudo usermod -a -G www-data mysql
    

Теория:

Apparmor является способом Ubuntu удостовериться, что существует мелкомодульное управление тем, кто получает доступ к файловой системе и как он сделан. Это имеет два режима, осуществите и жалуйтесь режимы. Осуществлять режим то, где mysql подпадает под (чтобы видеть, что они работают sudo aa-status).

Можно или измениться mysql кому: complain mode где apparmor будет только жаловаться, но не предотвращать mysql доступ к другим областям файловой системы. В этом случае я выбираю enforce mode и просто измененный apparmor политика для mysql Изменить их apparmor режимы необходимо установить apparmor-utils и затем Вы могли просто сделать sudo aa-complain /usr/sbin/mysqld и apparmor будет теперь только жаловаться на нарушения файловой системы mysql.

Два места используются для изменения политики, это (1) /etc/apparmor.d/usr.sbin.mysqld, и (2)/etc/appamrmor.d/local/usr/sbin/mysqld. Который выбранный будет зависеть от типа желаемого изменения (широкая сеть или конкретная машина). Поэтому измените к комплекту свои планы.

Ресурс (посмотрите на них):

https://blogs.oracle.com/jsmyth/apparmor-and-mysql

https://blogs.oracle.com/jsmyth/selinux-and-mysql

2
ответ дан 1 December 2019 в 16:54

Другие вопросы по тегам:

Похожие вопросы: