В процессе обновления системы Ubuntu 16.04 появляется ошибка о невозможности обновить MySQL:
"Настраивается пакет mysql-server-5.7 (5.7.26-0ubuntu0.16.04.1) …
mysql_upgrade: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) while connecting to the MySQL server
Upgrade process encountered error and will not continue.
mysql_upgrade failed with exit status 11
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)"
При этом все остальные пакеты успешно обновились!
На просторах сети нашёл вот такую инструкцию по решению такой же ошибки:
https://900913.ru/2017/10/06/mysqld-sock-not-found/
Делаю так.
1. Ищу файл сокета для MySQL
sudo lsof /var/run/mysqld/mysqld.sock
Получаю вывод:
...
lsof: status error on /run/mysqld/mysqld.sock: No such file or directory
...
2. Создаю папку, в которой должен лежать файл сокета:
sudo mkdir /var/run/mysqld
3. Создаю сам сокет командой mkfifo (хотя сокет -- это тоже файл, создавать его можно только специальной программой -- mkfifo):
sudo mkfifo /var/run/mysqld/mysqld.sock
4. Устанавливаю владельцем папки "/var/run/mysqld" пользователя "mysql"
sudo chown -R mysql /var/run/mysqld
5. Перезапускаю MySQL
sudo systemctl restart mysql
6. Смотрю текущий статус (запущен ли) MySQL
sudo systemctl status mysql
Вывод - запущен.
7. Но при повторном вводе команд обновления ОС получаю опять ту же ошибку:
sudo apt update && apt upgrade
sudo apt dist-upgrade
То есть, пропадает файл сокета MySQL
...
lsof: status error on /run/mysqld/mysqld.sock: No such file or directory
...
Подскажите, пожалуйста, есть ли способ решить данную проблему без переустановки самой MySQL или ОС?!
После долгих мучений и страданий как временное решение сделал так. Может кому-то в будущем и пригодится.
1. На официальном сайте разработчиков MySQL нашёл такую доку:
https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/
2. Добавил в ОС новый репозиторий от сюда:
https://dev.mysql.com/downloads/repo/apt/
С помощью браузера скачал и сохранил файл «mysql-apt-config_0.8.13-1_all.deb» в домашнюю папку пользователя (на текущий момент у него такое название как я указал, а у Вас уже может бы и другим).
Открыл терминал и ввёл последовательно команду для установки нового репозитория:
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
В открывшемся диалоговом окне выбираю строчку «Ok» (самая нижняя), а потом на кнопку «Ok».
Если Вы сохранили файл в другой каталог, то нужно указать путь к нему или просто перейти в ту папку и запустить приведённые выше мной команды.
3. Обновляем список репозиториев в системе:
sudo apt-get update
4. Запускаем процесс установки MySQL:
sudo apt-get install mysql-server
Во время данного процесса система попросит Вас ввести пароль суперпользователя для MySQL, а также спросит стоит ли заменять существующий файл конфиг на новый или оставить текущий (тут решайте сами). Я решил заменить и потом уже подправить под свои нужды.
5. Теперь посмотрим, запустился ли наш только что установленный MySQL:
sudo service mysql status
Или так:
sudo systemctl status mysql
Если нет, тогда запустим его командой:
sudo service mysql start
Или так:
sudo systemctl start mysql
После указанных выше действий MySQL успешно обновился и запустился, таким образом удалось пока устранить ошибку, указанную в названии данной темы!
И что меня совсем удивило – заработал mysqldump!!!
P.S.: не знаю какие траблы с ОС могут меня ждать в будущем после таких действий, но пока ошибок в работе не обнаружил!