Мое общее обновление прошло хорошо, но у меня осталась критическая проблема, связанная с тем, что mysql-сервер не смог установить себя, и ничто из того, что я пробовал, не заставило его работать.
Это ошибка, которую я вижу при попытке установить / переустановить ее:
Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
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: error processing package mysql-server-5.7 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.7; however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
Я попытался полностью удалить ее, хотя при этом пытается установить MariaDB из-за зависимостей (?). Любые предложения о том, что я могу сделать, чтобы это исправить, были бы очень кстати.
РЕДАКТИРОВАТЬ: похоже, я не единственный: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279
Инструкции, опубликованные @ andrew-beerman, находятся на правильном пути, хотя они не совсем понятны мне и, кажется, рекомендуют больше, чем необходимо. Я собрал воедино ответ из вышеупомянутого и полезный пост в ветке сообщения об ошибке.
Вот шаги, которые я предпринял, чтобы исправить это:
Создайте резервную копию вашего файла my.cnf
в / etc / mysql
и удалите или переименуйте его
sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
Удалите папку /etc/mysql/mysql.conf.d/
, используя
sudo rm -r /etc/mysql/mysql.conf.d/
Убедитесь, что у вас нет файла my.cnf
, спрятанного где-то еще (я сделал в моем домашнем каталоге!) Или в /etc/alternatives/my.cnf
, используйте
sudo find / -name my.cnf
Резервное копирование и удаление файлов /etc/mysql/debian.cnf
(не уверен, если необходимо, но на всякий случай)
sudo mv /etc/mysql/debian.cnf / etc / mysql / debian.cnf.bak
sudo apt очистить mysql-server mysql-server-5.7 mysql-server-core-5.7
sudo apt установить mysql-server
Если ваш системный журнал показывает ошибку типа «mysqld: Can't read dir of '/etc/mysql/conf.d/'», создайте символическую ссылку:
sudo ln -s / etc / mysql / mysql .conf.d /etc/mysql/conf.d
Тогда служба должна иметь возможность запускаться с sudo service mysql start
.
Вот и все заработало!
Сегодня у меня возникла та же проблема. Попробовав множество решений, я обнаружил, что проблема была в команде sudo systemctl disable mysql.service
, которую я использовал для отключения MySQL автоматический запуск, поэтому, чтобы он заработал, я снова включил сервер MySQL с помощью команды sudo systemctl enable mysql.service
и снова запустил процесс обновления, и он полностью завершился.
Ваше сообщение об ошибке содержит эту строку:
subprocess installed post-installation script returned error exit status 1
Однако, этот установленный скрипт после установки
не упоминается по имени. После долгих манипуляций я обнаружил, что его имя (в моем случае) /var/lib/dpkg/info/mysql-server-5.7.postinst
.
Откройте этот файл с помощью sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst
, или предпочитаемого вами редактора.
Сверху поменяйте строку 3 (или около того): установите -e
на установите -x
, сохраните файл. (опция -e
это "выход по ошибкам", -x
означает "явно показать выполненную команду", предположительно)
Выполнить sudo dpkg --configure -a --log /tmp/dpkg.log
.
(опция --log необязательна). Вы также можете просто запустить apt-обновление
, если знаете, что это будет единственный пакет, который будет обновлен.
Теперь вы получите подробный вывод mysql-server-5.7. postinst
bash скрипт, и вы можете понять, что не так.
В моем случае он безуспешно пытался (пере)запустить mysql_upgrade
, но это не понадобилось для моей персонализированной установки mysql. Я был уверен, что до этого я запускал его вручную, успешно, и все было хорошо.
Так что я скоммиминговал строку 321 (для старых mysqld релизов попробуйте строку 281),
#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
и команда, которая не сработала ранее, sudo apt upgrade
(запустите ее еще раз), завершилась успешно, и dpkg удалила статус ошибки для этого пакета.
Теперь вы можете вернуть набор -x
к набору -e-e
(упоминавшемуся выше). И опционально, без комментариев к строке mysql-обновления.
Дополнительная работа может потребоваться, если вы переместили ваш раздел с данными mysql в нестандартное место. Я переместил мой из /var/lib/mysql/data
на другой диск через symlink. Тогда, возможно, вам придется временно удалить символическую ссылку, до манипуляции со скриптом postinst
. Затем воссоздать его после запуска обновления пакета.
После следующего незначительного обновления пакета mysqld debian эта проблема со скриптом /var/lib/dpkg/info/mysql-server-5.7.postinst
может появиться снова.
sshfs
зашифрованная папка и затем дешифровать его локально?
– pa4080
11 September 2017 в 22:52
Инструкции, приведенные здесь, исправили его на моем сервере: https://bugs.mysql.com/bug.php?id=72722
Я могу понять боль от вашего система в несовместимом состоянии но давайте не будем беспокоиться обо всей ситуации и рассмотрим ее шаг за шагом чтобы очистить систему.
Сначала давайте посмотрим текущее состояние всех пакетов mysql на машине используя: dpkg -l | grep mysql (вставьте вывод, исключая последний столбец)
Первый столбец обозначает текущий статус пакета. Здесь возможные варианты:
ii) Установлен rc) Удаленные файлы конфигурации сохранены (Это должно быть состояние из всех пакетов, которые вы удалили с помощью 'apt-get remove', который делает не удалять файлы конфигурации в / etc)
Чтобы это сработало, вам нужно будет запустить 'apt-get purge
' до вы не видите пакетов в приведенном выше списке. Помните, что некоторые пакеты, не относящиеся к серверу mysql, например python-mysql.connector и python-mysqldb, если они установлены, не обязательно удалены, поскольку они не влияют на эту ситуацию, но если удалены, может вызвать проблемы для приложений, использующих их.
Мы обязательно постараемся повторно посетить нашу документацию, чтобы узнать, как мы можем уберечь пользователей от подобных проблем. Спасибо, что поделился ваши отзывы подробно описаны у нас.
В моем случае я мог бы решить проблему, добавив
# Allow log file access
/home/system/var/log/mysql.err rw,
/home/system/var/log/mysql.log rw,
/home/system/var/log/mysql/ r,
/home/system/var/log/mysql/** rw,
в / etc / apparmor.d / local / usr.sbin.mysqld
Подробнее см. мой ответ (ChristophS) на stackoverflow.
У меня была такая же проблема. Я пытался переустановить mysql несколько раз, но безуспешно.
Я понял, что проблема для меня в том, что уже запущен другой процесс mysql.
Подробно:
После того, как я внимательно прочитал журналы в /var/log/mysql/error.log
и обнаружил:
[ОШИБКА] Невозможно запустить сервер: привязка к порту TCP / IP: адрес уже указан используйте
[ОШИБКА] У вас уже есть другой сервер mysqld, работающий на порту: 3306?
Похоже, другое приложение уже использовало этот порт.
Я проверил его с помощью ps -aux | grep 3306
:
$ ps -aux | grep 3306
milkovs+ 6802 0.0 0.0 16336 1084 pts/19 S+ 21:39 0:00 grep --color=auto 3306
mysql 14706 0.0 0.3 1270192 13916 pts/2 Sl Aug19 0:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=
И я остановил запущенный процесс sudo kill -15 14706
Затем я запустил mysql: /etc/init.d/mysql start
Наконец, mysql работает для мне! Надеюсь, это кому-то поможет.
В моем случае с strace я увидел, что / var / run / mysqld / не существует, и mysqld не может создать файл mysqld.sock.
Эти команды решили мою проблему. проблема:
mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
chmod 700 /var/run/mysqld
Теперь:
systemctl start mysql
И mysql снова работает:)
Ни один из ответов на этой странице не помог мне.
В итоге я перешел на страницу загрузок Oracle , загрузив mysql-apt-config_0.8.8-1_all .deb
и установка MySQL из репозитория Oracle:
sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server
У меня возникла проблема на нескольких серверах. Исправление заключалось в запуске apt install phpmyadmin --reinstall
, который разрешил описанное выше (без необходимости впоследствии прикасаться к mysql)
Для версии WSl Ubuntu 16.04 я нашел эту полезную статью здесь
Действия, которые необходимо выполнить для решения
sudo vi / var / lib / dpkg / info / mysql-server-5.7.postinst
mysql_upgrade --defaults-file = / etc / mysql / debian.cnf || result = $?
службу mysql restart
непосредственно над строкой под номером 2. sudo dpkg --configure -a
, оно должно выглядеть так
service mysql restart
mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?
Надеюсь на эту помощь