Каждый раз, когда я изменяю местоположение журнала
форма:/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
Теперь на основе ссылки Вы обеспечили и другой ресурс об отношениях между AppArmor
и Mysql
Я смог заставить это работать. Политика, которая управляет mysql, загружается из этого местоположения /usr/sbin/mysqld
который Вы видите, когда Вы работаете: sudo aa-status
. Это может быть изменено от:
/etc/apparmor.d/usr.sbin.mysqld
и
/etc/apparmor.d/local/usr.sbin.mysqld
Я буду изменять последнего.
Шаги:
Я создал папку /var/www/html/mysql
и с помещенным файл (error.log
) там. Я верю mysql
будет искать такой файл. Теперь это - мое пользовательское местоположение журнала.
Откройтесь /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, пишут и блокируют доступ к содержанию там.Открытый /etc/mysql/mysql.conf.d/mysqld.cnf
и измените местоположение журнала к:
#log_error = /var/log/mysql/error.log
log_error = /var/www/html/mysql/error.log
Теперь перезапуск apparmor
: sudo systemctl restart apparmor
mysql
: sudo systemctl restart mysql
Примечание:
/var/www/html
кому: $USER:www-data
и полномочия к: Добавленный 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
. Который выбранный будет зависеть от типа желаемого изменения (широкая сеть или конкретная машина). Поэтому измените к комплекту свои планы.
Ресурс (посмотрите на них):