Обновленный до Ubuntu 16.04 от 14,04 x64
Если я пытаюсь запуститься mysqld
это перестало работать, и в системном журнале я имею
kernel: [ 2336.792423] audit: type=1400 audit(1470265086.730:518): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=11850 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=117 ouid=0
Я добавил /run/systemd/notify/
к apparmor, но я не могу добавить run/systemd/notify
- "/" отсутствует
Как я могу зафиксировать это? Мне нужен MariaDB для работы отдельного раздела
Я использую MariaDB с папкой данных на /home/db/mysql
Мне настроили символьную ссылку для указания на него от
lrwxrwxrwx 1 mysql mysql 14 iun 22 20:58 /var/lib/mysql -> /home/db/mysql
и также настроили профиль брони приложения:
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/mysql>
#include <abstractions/winbind>
capability dac_override,
capability sys_resource,
capability setgid,
capability setuid,
network tcp,
/etc/hosts.allow r,
/etc/hosts.deny r,
/etc/mysql/*.pem r,
/etc/mysql/conf.d/ r,
/etc/mysql/conf.d/* r,
/etc/mysql/*.cnf r,
/usr/lib/mysql/plugin/ r,
/usr/lib/mysql/plugin/*.so* mr,
/usr/sbin/mysqld mr,
/usr/share/mysql/** r,
/var/log/mysql.log rw,
/var/log/mysql.err rw,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid rw,
/var/run/mysqld/mysqld.sock w,
/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock w,
/run/systemd/notify w,
/home/db/** rwk,
/home/db/mysql/** rwk,
/sys/devices/system/cpu/ r,
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.mysqld>
}
Это ранее перестало работать на CD к /home/db/mysql
, но зафиксированный это путем редактирования /lib/systemd/system/mariadb.service
и установка ProtectHome=false
После нескольких неудавшихся попыток, включающих apparmor конфигурация, редактируя /lib/systemd/system/mariadb.service
и /etc/mysql/my.cnf
для установки datadir, который перестал работать, я пошел на другой подход.
sudo service mysqld stop
Очищенный установка apt-get purge mysqld*
Я удалил все включающее mysql и mariadb (искавший /etc
, /var
для них). Можно хотеть создать резервную копию их, если Вы думаете, что Вам, возможно, понадобятся они для ссылки в будущем.
mysql и mariadb конфигурация в /etc/systemd/system
mysql представляют в /etc/apparmor.d
dir /etc/mysql
символьная ссылка я имел для mysql
в /var/lib
(мои данные безопасны на /home/db/mysql
). Пропустите это, если Ваши данные находятся в /var/lib/mysql
Переустановленный sudo apt-get install mariadb-server
/var/lib/mysql
кому: /var/lib/mysql.bk
и созданная символьная ссылка для /home/db/mysql
кому: /var/lib/mysql
/home/db/mysql
для mysql:mysqlВсе работы над перезагрузкой и это больше не умирает.
Я могу запустить и остановить сервис с sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
Я предполагаю, что миграция к systemd доставила все эти неприятности. Возможно, использование старых init.d сценариев не является лучшим способом сделать вещи, но это - единственный способ, которым я нашел для хранения MariaDB, бегущего за перезагрузкой, иначе это продолжало отказывать из-за
kernel: [ 2336.792423] audit: type=1400 audit(1470265086.730:518): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=11850 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=117 ouid=0
Так как некоторые клиенты, которые я использовал, дали Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
, Я должен был создать символьную ссылку sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
. Ссылка была удалена на перезагрузке хотя...
Поэтому я должен был отредактировать /etc/mysql/my.cnf
и /etc/mysql/debian.cnf
файлы для установки socket = /tmp/mysql.sock
. debian.cnf говорит DO NOT TOUCH!
, но я рискнул, так как my.cnf говорит Remember to edit /etc/mysql/debian.cnf when changing the socket location
.Примечание: перезагрузка потребовалась, чтобы видеть примененные изменения. Только перезапуск сервиса не применял их. Возможно, некоторый демон должен был быть перезагружен, но не знал который.
В моем случае я установил MariaDB 10.2 на Ubuntu Гостеприимные 16.04 и использовал символьные ссылки для указания на базы данных пользователей в их корневых каталогах. Это хорошо работало для 10,0, но теперь возвратит ошибки
[ОШИБКА] InnoDB: код ошибки Операционной системы 13 в операции файла.
[ОШИБКА] InnoDB: ошибка означает, что mysqld не имеет прав доступа к каталогу.
[ОШИБКА] InnoDB: os_file_readdir_next_file () возвратился-1 в каталоге./, восстановление катастрофического отказа, возможно, перестало работать для некоторых .ibd файлов!
Все файлы и каталоги принадлежали mysql:mysql. Однако благодаря плакату вопроса я нашел в /lib/systemd/system/mariadb.service
установка:
#
Предотвратите доступ / домой, / корень и/run/userProtectHome=true
После установки этого к false
и systemctl daemon-reload
MariaDB обычно запускал бы.
Надо надеяться, это помогает кому-то.