MariaDB не запустится после обновления Ubuntu 16.04

Обновленный до 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

3
задан 4 August 2016 в 02:09

2 ответа

После нескольких неудавшихся попыток, включающих apparmor конфигурация, редактируя /lib/systemd/system/mariadb.service и /etc/mysql/my.cnf для установки datadir, который перестал работать, я пошел на другой подход.

  1. Остановленный сервис (если запущено): sudo service mysqld stop
  2. Очищенный установка apt-get purge mysqld*

  3. Я удалил все включающее 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

  4. Переустановленный sudo apt-get install mariadb-server

  5. Переименованный /var/lib/mysql кому: /var/lib/mysql.bk и созданная символьная ссылка для /home/db/mysql кому: /var/lib/mysql
  6. Владение набора к символьной ссылке и /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.Примечание: перезагрузка потребовалась, чтобы видеть примененные изменения. Только перезапуск сервиса не применял их. Возможно, некоторый демон должен был быть перезагружен, но не знал который.

3
ответ дан 1 December 2019 в 16:21

В моем случае я установил 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/user

ProtectHome=true

После установки этого к false и systemctl daemon-reload MariaDB обычно запускал бы.

Надо надеяться, это помогает кому-то.

0
ответ дан 1 December 2019 в 16:21

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

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