LINUX.ORG.RU

apparmor не пускает к /etc/mysql/my.cnf.migrated после апдейта mysql?

 , ,


0

1

обновил дистр xUbuntu 14.04 -> xUbuntu 16.04.1
в процессе обновления mysql (5.5.50->5.7.13) вылетел с ошибкой (текст могу привести по требованию)

теперь пытаюсь перебрать все ручками по кусочкам
делаю-получаю:

~$ sudo /etc/init.d/mysql restart
[....] Restarting mysql (via systemctl): mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
 failed!

ок, смотрим журнал
~$ journalctl -xe|grep mysql|  less
--блабла
-- Начат процесс запуска юнита mysql.service.
Авг 16 18:52:18 meniac kernel: audit: type=1400 audit(1471362738.568:1880): apparmor="DENIED" operation="open" prof
ile="/usr/sbin/mysqld" name="/etc/mysql/my.cnf.migrated" pid=19365 comm="mysqld" requested_mask="r" denied_mask="r"
 fsuid=116 ouid=0
--блабла

сие меня очень удивляет, ибо
в /etc/apparmor.d/usr.sbin.mysqld стоит
# Allow config access
/etc/mysql/ r,
/etc/mysql/** r,
а
~$ grep -r 'my.cnf.migrated' /etc/apparmor.d/
- не дает ничего, то есть явно он в apparmor не запрещен нигде!
(sudo /etc/init.d/apparmor reload - сделать не забыл, да)

нид хелп - что происходит и как с этим жить?

еще раз обновил дистр (на этот раз сохранил /etc/apparmor.d/usr.sbin.mysqld целиком с предыдущей рабочей версии) - та же ошибка
добавил в него для «сверх-явности» строку
/etc/mysql/my.cnf.migrated r,
- все то же самое, пишет что доступа нет

обновление самого mysql завершилось оба раза аварийно, если что


нид хелп!

MinasFilm ()
Ответ на: комментарий от anonymous_sama

я обнаружил в нем файлик /etc/apparmor.d/local/usr.sbin.mysqld
однако в нем пусто - только две строчки комментов

еще нашлось по гуглу такое
https://bugs.launchpad.net/ubuntu/ source/mysql-5.6/ bug/1455773
из этого я не понял ничерта - относительно того, что собственно мне нужно сделать, чтобы пофиксить баг у себя

MinasFilm ()
Ответ на: комментарий от MinasFilm

Можешь попробовать еще.

apparmor_parser --purge-cache
apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
К слову можешь отключить профиль на время обновления, от этого ты врядли умрешь.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от MinasFilm

aa-disable /etc/apparmor.d/usr.sbin.mysqld. Как ты там пользуешь apparmor не зная основных команд?
Потом активируешь с aa-enable или aa-complain, смотря как ты использовал до этого.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

сделал, то же самое

-- Subject: Начинается запуск юнита mysql.service
-- Начат процесс запуска юнита mysql.service.
Авг 17 21:13:32 meniac audit[18856]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mysql.conf.d/" pid=18856 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=116 ouid=0
Авг 17 21:13:32 meniac mysqld[18856]: mysqld: Can't read dir of '/etc/mysql/mysql.conf.d/' (Errcode: 13 - Permission denied)

MinasFilm ()
Ответ на: комментарий от MinasFilm

Только не говори, что ты отключил, а потом включил и еще и этому удивляешь. Ну пакет обновил хоть? Вот профиль судя по всему:

# vim:syntax=apparmor
# Last Modified: Tue Feb 09 15:28:30 2016
#include <tunables/global>

/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>
  #include <abstractions/winbind>

# Allow system resource access
  /sys/devices/system/cpu/ r,
  capability sys_resource,
  capability dac_override,
  capability setuid,
  capability setgid,

# Allow network access
  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

# Allow config access
  /etc/mysql/** r,

# Allow pid, socket, socket lock file access
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock rw,
  /var/run/mysqld/mysqld.sock.lock rw,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock rw,
  /run/mysqld/mysqld.sock.lock rw,

# Allow execution of server binary
  /usr/sbin/mysqld mr,
  /usr/sbin/mysqld-debug mr,

# Allow plugin access
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,

# Allow error msg and charset access
  /usr/share/mysql/ r,
  /usr/share/mysql/** r,

# Allow data dir access
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,

# Allow data files dir access
  /var/lib/mysql-files/ r,
  /var/lib/mysql-files/** rwk,

# Allow keyring dir access
  /var/lib/mysql-keyring/ r,
  /var/lib/mysql-keyring/** rwk,

# Allow log file access
  /var/log/mysql.err rw,
  /var/log/mysql.log rw,
  /var/log/mysql/ r,
  /var/log/mysql/** rw,

  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.sbin.mysqld>
}

Достал из source пакета.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

я сделал только
sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld
то есть по идее, отключил (м.б. есть какая команда, чтобы проверить?)

и какая тогда разница, что там у него в правиле для apparmor-а?

насчет обновился ли mysql - не знаю
закончилось все при обновлении дистра вот так:
Не удалось установить «mysql-server-5.7»
Обновление будет продолжено, но пакет «mysql-server-5.7» может быть в нерабочем состоянии. Просьба рассмотреть вопрос о представлении отчёта об этой ошибке.
subprocess installed post-installation script returned error exit status 1

теперь пытаюсь запустить и понять, почему и что не работает у него

MinasFilm ()
Ответ на: комментарий от MinasFilm

то есть по идее, отключил (м.б. есть какая команда, чтобы проверить?)

aa-status. Почитай тут хотя-бы для начала. Тебе нужно пакет до конца установить, запусти apt-get -f install, например. А так между прочим, кто сейчас mysql вообще использует, если есть MariaDB или Percona вместо сабжа хотя-бы.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

получилось задизейблить только через

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld  /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

но mysql так и не запустился:
journalctl -xe|grep mysql|less
Авг 18 00:36:16 meniac sudo[26155]:  maestro : TTY=pts/0 ; PWD=/home/maestro ; USER=root ; COMMAND=/usr/sbin/servic
Авг 18 00:36:16 meniac sudo[26155]: pam_unix(sudo:session): session opened for user root by maestro(uid=0)
Авг 18 00:36:16 meniac systemd[1]: Stopped MySQL Community Server.
-- Subject: Завершена остановка юнита mysql.service.
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Процесс остановки юнита mysql.service был завершен.
Авг 18 00:36:16 meniac systemd[1]: mysql.service: Unit entered failed state.
Авг 18 00:36:16 meniac systemd[1]: mysql.service: Failed with result 'exit-code'.
Авг 18 00:36:16 meniac systemd[1]: Starting MySQL Community Server...
-- Subject: Начинается запуск юнита mysql.service
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Начат процесс запуска юнита mysql.service.
Авг 18 00:36:17 meniac dhclient[3618]: No DHCPOFFERS received.
Авг 18 00:36:17 meniac dhclient[3618]: No working leases in persistent database - sleeping.
Авг 18 00:36:17 meniac root[26217]: /etc/dhcp/dhclient-exit-hooks.d/zzz_avahi-autoipd returned non-zero exit status
Авг 18 00:36:19 meniac systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Авг 18 00:36:45 meniac gnome-session[3547]: (gnome-shell:3681): Cogl-WARNING **: driver/gl/cogl-clip-stack-gl.c:463
Авг 18 00:36:46 meniac gnome-session[3547]: (gnome-shell:3681): Cogl-WARNING **: driver/gl/cogl-clip-stack-gl.c:463
Авг 18 00:36:48 meniac systemd[1]: Failed to start MySQL Community Server.
-- Subject: Ошибка юнита mysql.service
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel



Тебе нужно пакет до конца установить, запусти

~$ sudo apt-get -f install
астраивается пакет mysql-server-5.7 (5.7.13-0ubuntu0.16.04.2) …
Renaming removed key_buffer and myisam-recover options (if present)
Skipping profile in /etc/apparmor.d/disable: usr.sbin.mysqld
initctl: Не удается подключиться к Upstart: Failed to connect to socket /com/ubuntu/upstart: В соединении отказано
insserv: warning: script 'binfmt-support' missing LSB tags and overrides
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `binfmt-support'
insserv: Default-Stop  undefined, assuming empty stop  runlevel(s) for script `binfmt-support'
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: ошибка при обработке пакета mysql-server-5.7 (--configure):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
dpkg: зависимости пакетов не позволяют настроить пакет mysql-server:
 mysql-server зависит от mysql-server-5.7, однако:
  Пакет mysql-server-5.7 пока не настроен.

dpkg: ошибка при обработке пакета mysql-server (--configure):
 проблемы зависимостей — оставляем не настроенным
Отчёты apport не записаны, так как сообщение об ошибке указывает на повторную ошибку от предыдущего отказа.



какие еще варианты вылечить mysql?

MinasFilm ()
Ответ на: комментарий от anonymous_sama
~$ systemctl status mysql.service
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (start-post) (Result: exit-code) since Чтв 2016-08-18 12:22:44 EEST; 15s ago
  Process: 18261 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 18257 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 18261 (code=exited, status=1/FAILURE);         : 18262 (mysql-systemd-s)
   CGroup: /system.slice/mysql.service
           └─control
             ├─18262 /bin/bash /usr/share/mysql/mysql-systemd-start post
             └─18379 sleep 1

Авг 18 12:22:44 meniac systemd[1]: Starting MySQL Community Server...
Авг 18 12:22:47 meniac systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
MinasFilm ()
Ответ на: комментарий от MinasFilm

Я думаю это либо mysql сломанный либо у тебя что-то с конфигураций. Ищи сообщения который дает mysql при старте, они тебе подскажут.(скорей всего будет просто в syslog). Также можешь обратить внимание на данную тему. Самый простой способ конечно, сохранить конфиги и базы, далее сделать purge пакетов и поставить заново. Все равно судя по актуальности темы, простои тебя не волнуют.

anonymous_sama ★★★★★ ()
Ответ на: комментарий от anonymous_sama

ну я же написал всю историю - апгрейтился-недоапгрейтился
до этого момента с теми же конфигами все работало на ура - в частности после апгрейта дистра 12->14

purge я делать очень не хочу поскольку от mysql зависит куча пакетов, которые также автоматически удалятся - в частности,такие поделия, как exim, для которого я когда-то что-то прописывал в сценариях запуска, настраивал права, создавал пользователей и т.д., в общем его удаление будет смерти подобно

MinasFilm ()
Ответ на: комментарий от anonymous_sama

я не пойму вообще что происходит блджд
вобщем по твоей ссылке взял первый самый железный по описанию метод:
выпилил /etc/mysql/mysql.conf.d/
выпилил my*.cnf - отовсюду, окуда только можно
сделал sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
инсталлирую mysql с чистого листа, получаю:

$ sudo apt install mysql-server
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
The following additional packages will be installed:
  mysql-server-5.7 mysql-server-core-5.7
Предлагаемые пакеты:
  tinyca
НОВЫЕ пакеты, которые будут установлены:
  mysql-server mysql-server-5.7 mysql-server-core-5.7
обновлено 0, установлено 3 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 0 B/10,5 MB архивов.
После данной операции, объём занятого дискового пространства возрастёт на 94,6 MB.
Хотите продолжить? [Д/н] y
sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory
Предварительная настройка пакетов ...
shell-init: ошибка получения текущей директории: getcwd: невозможен доступ к родительским каталогам: Нет такого файла или каталога
Выбор ранее не выбранного пакета mysql-server-core-5.7.
(Чтение базы данных … на данный момент установлен 641241 файл и каталог.)
Подготовка к распаковке …/mysql-server-core-5.7_5.7.13-0ubuntu0.16.04.2_amd64.deb …
Распаковывается mysql-server-core-5.7 (5.7.13-0ubuntu0.16.04.2) …
Выбор ранее не выбранного пакета mysql-server-5.7.
Подготовка к распаковке …/mysql-server-5.7_5.7.13-0ubuntu0.16.04.2_amd64.deb …
Распаковывается mysql-server-5.7 (5.7.13-0ubuntu0.16.04.2) …
Выбор ранее не выбранного пакета mysql-server.
Подготовка к распаковке …/mysql-server_5.7.13-0ubuntu0.16.04.2_all.deb …
Распаковывается mysql-server (5.7.13-0ubuntu0.16.04.2) …
Обрабатываются триггеры для man-db (2.7.5-1) …
Обрабатываются триггеры для ureadahead (0.100.0-19) …
Обрабатываются триггеры для systemd (229-4ubuntu7) …
Настраивается пакет mysql-server-core-5.7 (5.7.13-0ubuntu0.16.04.2) …
Настраивается пакет mysql-server-5.7 (5.7.13-0ubuntu0.16.04.2) …
update-alternatives: используется /etc/mysql/mysql.cnf для предоставления /etc/mysql/my.cnf (my.cnf) в автоматическом режиме
Renaming removed key_buffer and myisam-recover options (if present)
initctl: Не удается подключиться к Upstart: Failed to connect to socket /com/ubuntu/upstart: В соединении отказано
insserv: warning: script 'binfmt-support' missing LSB tags and overrides
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `binfmt-support'
insserv: Default-Stop  undefined, assuming empty stop  runlevel(s) for script `binfmt-support'
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: ошибка при обработке пакета mysql-server-5.7 (--configure):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
dpkg: зависимости пакетов не позволяют настроить пакет mysql-server:
 mysql-server зависит от mysql-server-5.7, однако:
  Пакет mysql-server-5.7 пока не настроен.

dpkg: ошибка при обработке пакета mysql-server (--configure):
 проблемы зависимостей — оставляем не настроенным
Отчёты apport не записаны, так как сообщение об ошибке указывает на повторную ошибку от предыдущего отказа.
                                                                                                           Обрабатываются триггеры для systemd (229-4ubuntu7) …
Обрабатываются триггеры для ureadahead (0.100.0-19) …
При обработке следующих пакетов произошли ошибки:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

- с чистой системы, чистого листа, карл!

о боги дайте мне яду

MinasFilm ()
Ответ на: комментарий от MinasFilm

Походу бубунтовцы при обновлении, какой-то скриптик опять поломали.

Попробуйте у пользователя mysql задать корректный home_dir, не знаю как в убунте, но обычно /var/lib/mysql

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

Ошибка очень характерна.

rootFS ()
Ответ на: комментарий от rootFS

вот так вот получилось в целом

maestro@meniac:/$ sudo usermod -m -d /var/lib/mysql mysql
usermod: каталог /var/lib/mysql существует
maestro@meniac:/$ less /etc/passwd|grep mysql
mysql:x:116:127:MySQL Server,,,:/var/lib/mysql:/bin/false
maestro@meniac:/$ sudo dpkg-reconfigure mysql-server
/usr/sbin/dpkg-reconfigure: Пакет mysql-server сломан или установлен не полностью
maestro@meniac:/$ sudo apt-get -f install
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
не установлено до конца или удалено 2 пакетов.
После данной операции, объём занятого дискового пространства возрастёт на 0 B.
Настраивается пакет mysql-server-5.7 (5.7.13-0ubuntu0.16.04.2) …
Renaming removed key_buffer and myisam-recover options (if present)
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: ошибка при обработке пакета mysql-server-5.7 (--configure):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
dpkg: зависимости пакетов не позволяют настроить пакет mysql-server:
 mysql-server зависит от mysql-server-5.7, однако:
  Пакет mysql-server-5.7 пока не настроен.
dpkg: ошибка при обработке пакета mysql-server (--configure):
 проблемы зависимостей — оставляем не настроенным
Отчёты apport не записаны, так как сообщение об ошибке указывает на повторную ошибку от предыдущего отказа.
                                                                                                           При обработке следующих пакетов произошли ошибки:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

MinasFilm ()
Ответ на: комментарий от MinasFilm

Ну, следующий логичный шаг - дать пользователю mysql на время установки нормальный шелл, хоть /bin/sh потом вернуть обратно.

Подозреваю, ребята из убунты, видимо тестировали начальную установку, а апгрейд не проверяли. Кто-то в скриптах хочет стать мускулем, а у него либо home_dir /nonexist либо шелл /bin/false На этом обламывается. Потом снова dpkg-reconfigure mysql-server, и запуск (первый старт после апгрейда может отличаться). Если пройдет нормально - вернуть все как было.

Кста-ти, мне чаще помогало apt-get --reinstall install pkg-name нежели --force

Как-то при апгрейде с 12.04 на 14.04 убунтовцы поломали console-setup. При том, скрипт запускался, но ничего не делал и никаких ошибок не выводил. С тех пор на моих виртуалках console-setup с 12 версии тянется. Главное - проверенный и работает. Сколько таких еще подводных камней в убунте вылезает.

rootFS ()
Ответ на: комментарий от rootFS

В этом плане недоволен новой убунтой.
Но что делать, когда сторонним репам не очень доверяешь, а хочешь новый php и мускуль.

Deleted ()
Ответ на: комментарий от rootFS
maestro@meniac:~$ sudo usermod  -s /bin/bash  mysql
maestro@meniac:~$ less /etc/passwd|grep mysql
mysql:x:116:127:MySQL Server,,,:/var/lib/mysql:/bin/bash
maestro@meniac:~$ sudo dpkg-reconfigure mysql-server
/usr/sbin/dpkg-reconfigure: Пакет mysql-server сломан или установлен не полностью
maestro@meniac:~$ sudo apt-get install --reinstall  mysql-server
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
обновлено 0, установлено 0 новых пакетов, переустановлено 1 переустановлено, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
не установлено до конца или удалено 2 пакетов.
После данной операции, объём занятого дискового пространства возрастёт на 0 B.
E: Internal Error, No file name for mysql-server:amd64
maestro@meniac:~$ sudo apt-get -f install
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
не установлено до конца или удалено 2 пакетов.
После данной операции, объём занятого дискового пространства возрастёт на 0 B.
Настраивается пакет mysql-server-5.7 (5.7.13-0ubuntu0.16.04.2) …
+ . /usr/share/debconf/confmodule
++ '[' '!' '' ']'
++ PERL_DL_NONLAZY=1
++ export PERL_DL_NONLAZY
++ '[' '' ']'
++ exec /usr/share/debconf/frontend /var/lib/dpkg/info/mysql-server-5.7.postinst configure ''
+ . /usr/share/debconf/confmodule
++ '[' '!' 1 ']'
++ '[' -z '' ']'
++ exec
++ '[' '' ']'
++ exec
++ DEBCONF_REDIR=1
++ export DEBCONF_REDIR
+ '[' -n '' ']'
+ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin:/usr/sbin:/bin:/usr/bin
+ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/sbin:/usr/sbin:/bin:/usr/bin
+ ERR_LOGGER='logger -p daemon.err -t mysqld_safe -i'
+ set +e
+ invoke stop
+ pathfind invoke-rc.d
+ OLDIFS=' 	
'
+ IFS=:
+ for p in '$PATH'
+ '[' -x /usr/local/sbin/invoke-rc.d ']'
+ for p in '$PATH'
+ '[' -x /usr/local/bin/invoke-rc.d ']'
+ for p in '$PATH'
+ '[' -x /usr/sbin/invoke-rc.d ']'
+ IFS=' 	
'
+ return 0
+ invoke-rc.d mysql stop
+ set -e
+ case "$1" in
+ mysql_datadir=/usr/share/mysql
+ mysql_statedir=/var/lib/mysql
+ mysql_rundir=/var/run/mysqld
+ mysql_logdir=/var/log/mysql
+ mysql_cfgdir=/etc/mysql
+ mysql_upgradedir=/var/lib/mysql-upgrade
+ mysql_filesdir=/var/lib/mysql-files
+ mysql_keyringdir=/var/lib/mysql-keyring
+ aa-status --enabled
+ apparmor_parser -r -T -W /etc/apparmor.d/usr.sbin.mysqld
+ /usr/share/mysql-common/configure-symlinks install mysql /etc/mysql/mysql.cnf
+ for d in '$mysql_statedir' '$mysql_filesdir' '$mysql_keyringdir' '$mysql_logdir'
+ '[' '!' -d /var/lib/mysql -a '!' -L /var/lib/mysql ']'
+ chown -R mysql:mysql /var/lib/mysql
+ chmod 0700 /var/lib/mysql
+ for d in '$mysql_statedir' '$mysql_filesdir' '$mysql_keyringdir' '$mysql_logdir'
+ '[' '!' -d /var/lib/mysql-files -a '!' -L /var/lib/mysql-files ']'
+ chown -R mysql:mysql /var/lib/mysql-files
+ chmod 0700 /var/lib/mysql-files
+ for d in '$mysql_statedir' '$mysql_filesdir' '$mysql_keyringdir' '$mysql_logdir'
+ '[' '!' -d /var/lib/mysql-keyring -a '!' -L /var/lib/mysql-keyring ']'
+ chown -R mysql:mysql /var/lib/mysql-keyring
+ chmod 0700 /var/lib/mysql-keyring
+ for d in '$mysql_statedir' '$mysql_filesdir' '$mysql_keyringdir' '$mysql_logdir'
+ '[' '!' -d /var/log/mysql -a '!' -L /var/log/mysql ']'
+ chown -R mysql:mysql /var/log/mysql
+ chmod 0700 /var/log/mysql
+ set +e
+ chown -R 0:0 /usr/share/mysql
+ touch /var/log/mysql/error.log
+ chown -R mysql:adm /var/log/mysql
+ chmod 0750 /var/log/mysql
+ chmod 0640 /var/log/mysql/error.log
+ set -e
+ db_set mysql-server/postrm_remove_database false
+ _db_cmd 'SET mysql-server/postrm_remove_database' false
+ _db_internal_IFS=' 	
'
+ IFS=' '
+ printf '%s\n' 'SET mysql-server/postrm_remove_database false'
+ IFS=' 	
'
+ IFS='
'
+ read -r _db_internal_line
+ RET='10 mysql-server/postrm_remove_database doesn'\''t exist'
+ case ${_db_internal_line%%[ 	]*} in
+ return 10
+ true
+ dpkg --compare-versions '' le 5.7.13-0ubuntu0~
+ echo 'Renaming removed key_buffer and myisam-recover options (if present)'
Renaming removed key_buffer and myisam-recover options (if present)
+ fix_old_config_options
+ '[' -f /etc/mysql/my.cnf.migrated ']'
+ return 0
+ test_mysqld_startup
+ result=0
++ mysqld --verbose --help --innodb-read-only
+ output=
+ '[' '!' 0 = 0 ']'
+ return 0
+ dc=/etc/mysql/debian.cnf
++ fgrep mysql_upgrade /etc/mysql/debian.cnf
+ '[' -e /etc/mysql/debian.cnf -a -n '[mysql_upgrade]' ']'
++ sed -n 's/^[     ]*password *= *// p' /etc/mysql/debian.cnf
++ head -n 1
+ pass=RHN5uHnTkIYRCI5N
+ sed -i /basedir/d /etc/mysql/debian.cnf
+ chown 0:0 /etc/mysql/debian.cnf
+ chmod 0600 /etc/mysql/debian.cnf
++ ls -A /var/lib/mysql
+ '[' '!' 'auto.cnf
debian-5.5.flag
debian-5.7.flag
ib_buffer_pool
ibdata1
ib_logfile0
ib_logfile1
mysql' ']'
+ existingdatabase=1
+ touch /var/lib/mysql/debian-5.7.flag
+ '[' configure = configure ']'
+ APP_PROFILE=/etc/apparmor.d/usr.sbin.mysqld
+ '[' -f /etc/apparmor.d/usr.sbin.mysqld ']'
+ LOCAL_APP_PROFILE=/etc/apparmor.d/local/usr.sbin.mysqld
+ test -e /etc/apparmor.d/local/usr.sbin.mysqld
+ aa-status --enabled
+ apparmor_parser -r -T -W /etc/apparmor.d/usr.sbin.mysqld
+ deb-systemd-helper unmask mysql.service
+ deb-systemd-helper --quiet was-enabled mysql.service
+ deb-systemd-helper enable mysql.service
+ '[' configure = configure ']'
+ '[' -x /etc/init.d/mysql ']'
+ update-rc.d mysql defaults 19 21
+ '[' -x /etc/init.d/mysql ']'
+ invoke-rc.d mysql start
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
+ exit 1
dpkg: ошибка при обработке пакета mysql-server-5.7 (--configure):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
dpkg: зависимости пакетов не позволяют настроить пакет mysql-server:
 mysql-server зависит от mysql-server-5.7, однако:
  Пакет mysql-server-5.7 пока не настроен.

dpkg: ошибка при обработке пакета mysql-server (--configure):
 проблемы зависимостей — оставляем не настроенным
Отчёты apport не записаны, так как сообщение об ошибке указывает на повторную ошибку от предыдущего отказа.
                                                                                                           При обработке следующих пакетов произошли ошибки:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
MinasFilm ()
Ответ на: комментарий от MinasFilm

Хех... Не всегда вчитываюсь в простынки. Сорри. Но тут вот несколько замечаний.

dpkg: ошибка при обработке пакета mysql-server-5.7 (--configure):
подпроцесс установлен сценарий post-installation возвратил код ошибки 1

После исправления ошибки, нужно dpkg-reconfigure именно для mysql-server-5.7

mysql-server - это «ненастоящий» метапакет.
Он вытягивает по зависимостям текущий mysql-server-5.7
А так как он корректно не встал, считается,что пакета mysql-server в системе нет.
Я просто привел «общий ход» действий в ситуации. Смотрим далее.

Ошибка возникает при:

+ invoke-rc.d mysql start
Job for mysql.service failed because the control process exited with error code. See «systemctl status mysql.service» and «journalctl -xe» for details.
invoke-rc.d: initscript mysql, action «start» failed.
+ exit 1

Сервер установлен, но не стартует (классика жанра).
Смотрим в логи mysql, это либо
/var/log/mysql.err либо
/var/log/mysql/error.log либо еще как-то,
задается параметр в /etc/mysql/my.cnf
может лежать в data_dir
/var/lib/mysql/

Если по какой-то причине лога не найдено, можно запустить ручками от рута /usr/sbin/mysqld
Должен выплюнуть в консоль - чего ему не нравиться.

После чего устраняем причину. Когда запуститься нормально,
oстанавливаем и делаем опять dpkg-reconfigure mysql-server-5.7
Чтобы скрипт post-install отработал нормально,
а менеджер пакетов пометил его у себя как исправный.

Судя по истории ветки, Вы обновляетесь с 5.5.50 до 5.7.13.
Первое, что нужно было сделать - прошерстить my.cnf
на предмет depricated опций.
5.5 и 5.6 отличаются сильно,
а 5.5 и 5.7 тем более.

Ну, это все можно увидеть в error - логе мускуля при старте.
Подравниваем, вычищаем, приводим в соответствие с
требованиями 5.7. И оно заведется.

Можно было сделать проще, как тут советовали.
Сделать дамп базы/баз, после чего apt-get purge mysql-server.
Обновиться, и восстановить базы из дампа уже на сервер 5.7
Upgrade баз процедура сложная, очень много подводных камней.

Даже после этого могут появиться сюрпризы. Например с 5.6 'set option' уже неработает.
Если приложение работающее с базой старое, может сбиться кодировка.

уже просто хочешь чтобы заработал хотя бы какой-то

Терпение и настойчивость - это золото. Такова цена опыта.

rootFS ()
Ответ на: комментарий от rootFS

спасибо за развернутый ответ, логи сейчас буду смотреть
но один момент вы упустили в треде - apt-get purge mysql-server я делал (и не раз), как раз таки предварительно вычистив абсолютно все конфиг-файлы
то есть это не апгрейт mysql, а это уже проблемы с «чистой» установкой и запуском mysql на ubuntu, проапгрейженой с 14 до 16

MinasFilm ()
Ответ на: комментарий от MinasFilm

apt-get purge mysql-server я делал (и не раз), как раз таки предварительно вычистив абсолютно все конфиг-файлы

Я имел в виду, apt-get purge перед обновлением системы,
забекапив предварительно базы мускуля.
После обновления, учитывая, что пакет mysql-server-5.7
не поставился, вероятно получилась «сборная солянка» из
файлов пакетов mysql-5.5 и mysql-5.7

apt-get purge в таком варианте вычистит файлы
пакета mysql-5.7, а старые хвосты от 5.5 остануться.
При установке снова получим проблему.
Если делали purge лучше вручную проверить,
что каталог /var/lib/mysql отсутствует.
Пользователь mysql после purge должен отсутствовать.

Вообще, пакеты mysql-server-5.5 mysql-server-core-5.5 содержат 175 файлов,
можно прям по списку пройтись скриптом, и вычистить, перед установкой версии 5.7
К сожалению, список большой и здесь разместить даже под спойлером его нельзя.

rootFS ()
Ответ на: комментарий от rootFS

ок, то есть вы предлагаете сделать еще раз apt-get purge mysql-server - и затем вручную найти и удалить все mysql-файлы и каталоги, а также собственно пользователя mysql?
(при этом скорее всего останется mysql-клиент, на который повешено дочерта зависимых пакетов... которые вообще говоря, удалять бы мне не хотелось)

MinasFilm ()
Ответ на: комментарий от MinasFilm

Если анализ error лога мускуля ничего внятного не дает, то это единственный способ, IMHO.
Наличие «хвостов» от mysql-клиента не повлияет, его не трогаем.

Основное - сделать purge mysql-server-5.7
удалить вручную пользователя mysql и каталоги
/etc/mysql
/var/lib/mysql
/usr/lib/mysql/plugin
Файлы
/etc/init.d/mysql
/etc/logrotate.d/mysql-server

Каталог /usr/share/mysql/ может содержать клиентские вещи - его не трогаем.

После чего попробовать установить по новой.
Оно будет «как с чистого листа».

rootFS ()
Ответ на: комментарий от rootFS

И да, лучше на время установки, apparmor отключить. Бывают интересные эффекты.

rootFS ()
Ответ на: комментарий от rootFS

кажется свершилось - фух
1. положил в /var/lib/mysql/mysql таблицы из бекапа БД (предыдущей версии)
2. запустил sudo apt-get -f install
3. логин mysql -uroot -p прошел, системные БД он показал
юпи!
сейчас буду постепенно, пошагово возвращать все как было и возвращать параметры из старого конфига с верификацией каждого (омг!)

чтобы два раза не бегать, еще вот к вам вопрос - когда я верну все старые БД от прошлой версии mysql в текущий каталог БД (я сохранял их все как файлы) - есть ли какой скрипт, который перебирает все БД в их каталоге и апгрейтит при необходимости (ну вдруг формат файлов как-то изменился)?

MinasFilm ()
Ответ на: комментарий от rootFS

спасибо, вроде бы как работает... но снова затыка вышла вот
ситуация такая
первоначально еще «недоустановленный» новый mysql искал системные БД в дефолтном каталоге datadir = /var/lib/mysql - при том, что создать их там у него не получилось
тогда я скопировал прямо туда из старого datadir-а системные базы и innodb-файлы (были в старом корне datadir-а)
после запуска «грубого реинсталла» через sudo apt-get -f install скрипт установки, видимо, обнаружил что эти файлы старого формата и успешно их обновил
НО!
самих каталогов innodb-БД я же не скопировал - и видимо, информация об этих БД оттуда удалилась
теперь когда я возвращаю все это «скопированное и обновленное» обратно в мой (не-дефолтный) datadir (и меняю соотв. в конфиге) - mysql просто не видит всех таблиц в innodb-базах

то есть задача примерно такая - каким-то образом отдельно запустить процедуру обновления всех БД - именно ту, которая выполнялась в конце скрипта установки mysql-я - для «старого» datadir-а (с БД старого формата)
mysql_upgrade, насколько я понял, работает для уже рабочего инстанса mysql-я (когда все системные БД уже в актуальном формате, и сервер запущен)

нет ли у вас мыслей, как это можно сделать без очередной переустановки сервера?

MinasFilm ()
Ответ на: комментарий от MinasFilm

Вам нужно в установленный сервер 5.7
перенести целиком старый data_dir,
предварительно удалив все, что имеется в data_dir 5.7
После чего проверить права, не побились ли
(chow -R mysql:mysql data_dir).
И запустить mysql. Если инстанс стартовал корректно,
все базы и таблицы должны быть видны.
Тогда запускаем апгрейд /usr/bin/mysql_upgrade

тогда я скопировал прямо туда из старого datadir-а системные базы и innodb-файлы (были в старом корне datadir-а)

Это основная ошибка.
У InnoDB единый tablespace, даже если у Вас в конфиге
указано innodb_file_per_table, отдельный каталог будет только
под данные, а описание таблиц, структура и прочее - в общих
innoDB файлах. Невозможно перенести innoDB таблицу/базу перенеся только один каталог.

rootFS ()
Ответ на: комментарий от rootFS

Да, и после переноса data_dir,
перед стартом, поправьте в /etc/mysql/debian.cnf
пароль для debian-sys-maint - со старого конфига (системные базы с реквизитами перепишутся).
А этот пользователь в стартовых скриптах проверяет что mysql-сервер жив.

rootFS ()
Ответ на: комментарий от rootFS

вот не взлетело так(
я:
1. проверил, работает ли текущий 5.7-инстанс - да, работает
2. удалил все из его datadir-а (/var/lib/mysql)
3. перенес в его datadir все из старого datadir-а (все файлы, абсолютно)
4. запустил сервер mysql - не запускается, ошибка

и с правами там все ок, ибо когда заменял в старом datadir-е системные базы и innodb-файлы на «обновленные», и указал в конфиге адрес этого каталога (старого datadir-а т.е.) - сервер работал, вот только innodb-таблиц соотв. не было

MinasFilm ()
Ответ на: комментарий от rootFS
~$ journalctl -xe|less
-- Начат процесс запуска юнита mysql.service.
Авг 23 00:12:56 meniac systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Авг 23 00:13:00 meniac gnome-session[4032]: (gnome-shell:4226): Cogl-WARNING **: driver/gl/cogl-clip-stack-gl.c:463: GL error (1282): Invalid operation
Авг 23 00:13:25 meniac systemd[1]: Failed to start MySQL Community Server.
-- Subject: Ошибка юнита mysql.service
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Произошел сбой юнита mysql.service.
-- 
-- Результат: failed.
Авг 23 00:13:25 meniac systemd[1]: mysql.service: Unit entered failed state.
Авг 23 00:13:25 meniac systemd[1]: mysql.service: Failed with result 'exit-code'.
Авг 23 00:13:25 meniac sudo[17736]: pam_unix(sudo:session): session closed for user root
Авг 23 00:13:25 meniac systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
Авг 23 00:13:25 meniac systemd[1]: Stopped MySQL Community Server.
-- Subject: Завершена остановка юнита mysql.service.
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Процесс остановки юнита mysql.service был завершен.
Авг 23 00:13:25 meniac systemd[1]: Starting MySQL Community Server...
-- Subject: Начинается запуск юнита mysql.service
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Начат процесс запуска юнита mysql.service.
Авг 23 00:13:26 meniac systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE


и в
/var/log/mysql/error.log

2016-08-23T11:43:11.649771Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2016-08-23T11:43:11.651987Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
2016-08-23T11:43:11.869964Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-08-23T11:43:11.870898Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.13-0ubuntu0.16.04.2) starting as process 30694 ...
2016-08-23T11:43:11.878799Z 0 [Note] InnoDB: PUNCH HOLE support available
2016-08-23T11:43:11.878876Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-08-23T11:43:11.878889Z 0 [Note] InnoDB: Uses event mutexes
2016-08-23T11:43:11.878905Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2016-08-23T11:43:11.878917Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-08-23T11:43:11.878928Z 0 [Note] InnoDB: Using Linux native AIO
2016-08-23T11:43:11.879336Z 0 [Note] InnoDB: Number of pools: 1
2016-08-23T11:43:11.879509Z 0 [Note] InnoDB: Not using CPU crc32 instructions
2016-08-23T11:43:11.882219Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2016-08-23T11:43:11.900163Z 0 [Note] InnoDB: Completed initialization of buffer pool
2016-08-23T11:43:11.903891Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2016-08-23T11:43:11.913987Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2016-08-23T11:43:11.914095Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
2016-08-23T11:43:11.914128Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2016-08-23T11:43:12.514849Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2016-08-23T11:43:12.514911Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-08-23T11:43:12.514930Z 0 [ERROR] Failed to initialize plugins.
2016-08-23T11:43:12.514943Z 0 [ERROR] Aborting

2016-08-23T11:43:12.514977Z 0 [Note] Binlog end
2016-08-23T11:43:12.515082Z 0 [Note] Shutting down plugin 'MyISAM'
2016-08-23T11:43:12.515105Z 0 [Note] Shutting down plugin 'CSV'
2016-08-23T11:43:12.515629Z 0 [Note] /usr/sbin/mysqld: Shutdown complete

MinasFilm ()
Ответ на: комментарий от MinasFilm

Ну, дык, он же не двусмысленно материться :

The innodb_system data file 'ibdata1' must be writable

Очевидно после копирования права/владелец на файлы слетели. chown -R mysql:mysql data_dir

И будет счастье.

И не забываем про:

/etc/mysql/debian.cnf

rootFS ()
Ответ на: комментарий от rootFS

да, sudo chown -R mysql /var/lib/mysql таки помогло - сервер запустился (на «старых» базах)!
однако снова печалька вышла
сделал после этого
sudo mysql_upgrade --force -u root -p
в итоге для всех таблиц innodb-БД он показал
Error : Table 'bd_name.table_name' doesn't exist
status : Operation failed
та же фигня при select * from table_name;

что-то я перестаю что-либо понимать...

MinasFilm ()
Ответ на: комментарий от MinasFilm

Забэкапь все нужные базы, потом таблички db и user из базы mysql.
Удали мускуль полностью (/var/lib/mysql тоже) поставь заново, импортни бэкапы.

Deleted ()
Ответ на: комментарий от Deleted

перечитай тред
все это делал уже
что ты имеешь под «бекапы»? в см. sql-скрипты, которые делает phpmyadmin, который не работает сейчас?

MinasFilm ()
Ответ на: комментарий от rootFS

еще раз обновил базы из бекапа (без применения mysql_upgrade) - та же фигня
то есть новый mysql старых innodb-баз не хочет видеть никак!
(ну или есть вероятность, что данные побились на предыдущем апдейте дистра, хотя это маловероятно)

MinasFilm ()
Ответ на: комментарий от MinasFilm

что ты имеешь под «бекапы»?

Есть стандартное средство для бекапов баз
mysqldump

еще раз обновил базы из бекапа (без применения mysql_upgrade) - та же фигня

(ну или есть вероятность, что данные побились на предыдущем апдейте дистра, хотя это маловероятно)

Другого варианта нет.
InnoDB очень «нежный», он не любит «издевательств» вроде "--force", все равно что «резать по живому».
Типичный безпроблемный вариант апгрейда - сделать дамп базы, обновить сервер, восстановить из дампа.
Файловый бекап, в общем случае для InnoDB недопустим.

rootFS ()
Ответ на: комментарий от MinasFilm

Так вот сделай нормальный бэкап всех нужных баз (только не через опцию -A , т.к. база под именем mysql у тебя поломалась) через mysqldump с опцией --single-transaction .
На всякий случай фалы пусть тоже будут.
Когда сделаешь всё что я писал выше, должно заработать нормально.
Если есть вопросы - распишу подробней.

Deleted ()
Ответ на: комментарий от MinasFilm

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

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.