Оновлення до MySQL 5.7.15 збоїв на Ubuntu 16.04


13

Минулої ночі я спробував оновити свою ОС Ubuntu, і MySQL 5.7.15 була однією із змін. Здається, оновлення є успішною, оскільки mysql швидко працює, але процес встановлення припинив роботу з цим повідомленням:

This installation of MySQL is already upgraded to 5.7.15, 
use --force if you still need to run mysql_upgrade

Я не можу скасувати процес встановлення реквізитом і просто мушу його знищити. Тож це може спричинити певну проблему, а також для кожної іншої установки (в майбутньому) вона намагатиметься зробити це ще раз.

Як запобігти це оновлення чи вирішити його?

Відповіді:


12

Це рішення вирішило мою проблему:

  1. Резервне копіювання файлів бази даних з дозволами:

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Видалення файлів mysql:

    sudo rm -rv /etc/mysql 
    
  3. Видаліть MySQL повністю за допомогою запуску:

    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7 mysql-client-5.7 mysql-client-core-5.7
    

    Використовувати Synaptic рекомендується.

  4. Створіть ці папки:

    sudo mkdir -p /etc/mysql/conf.d
    

    настройка mysql не робила це автоматично, і я не знаю чому.

  5. Встановіть MySQL знову

    sudo apt install mysql-server
    

    Я використовував sudo apt install lamp-server^замість цього для встановлення інших залежностей для розвитку PHP.

  6. Зупинити MySQL:

    sudo service mysql stop 
    
  7. Відновлення баз даних і файлів:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. Перезапустіть MySQL:

    sudo service mysql start 
    

1
dpkg: помилка під час очищення: встановлено підпроцесорний сценарій після встановлення, повернувся статус виходу з помилки 1 У процесі обробки виникли помилки: mysql-server-5.7
Stevie G

Ключ річ видалення: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.datі sudo rm /var/cache/debconf/templates.dat. Потім очистіть все. Потім робіть перезавантаження системи.
Стіві Г

У мене була така ж проблема, і я вирішив її за допомогою цієї процедури. Я рекомендую перезавантажити систему після очищення MySQL. Схоже, це заважає проблемі, про яку повідомив Стіві.
Цутому

4

Мені вдалося це виправити, не встигаючи все очищати. Здається, проблема полягає в тому, що база даних схеми sys ніколи не створювалася, тому ось таке рішення:

  1. Клоніруйте https://github.com/mysql/mysql-sys і введіть CD у папку клонованих.
  2. У терміналі запустіть mysql -u root -p <./sys_57.sql (або sys_56.sql, залежно від вашої версії)

Насолоджуйтесь роботу mysql_upgrade знову. Я думаю, що це, ймовірно, було замішанням сценаріїв.


Так, це проблема з оновленням баз даних. На жаль, я більше не можу перевірити ваше рішення, щоб побачити, працює він чи ні.
Омід

Я спробував це рішення на моїй установці mysql 5.7.22, яка повідомляла "Ця установка MySQL вже оновлена ​​до 5.7.22, використовуйте --force, якщо вам все-таки потрібно запустити mysql_upgrade", і це спрацювало як шарм
henrik

2

У мене теж було це питання. Кожен раз, коли я починав apt отримувати та встановлювати, процес зависав після або під час оновлення БД. Жодне з інших рішень тут не працювало.

Врешті-решт я очистився

sudo apt purge mysql-server mysql-server-5.7

І дотримуйтесь інструкції, встановленої з інструкцій для mysql тут

Потім я перезаписав каталог даних зі своїми старими даними

sudo cp -Rfv /var/lib/mysql /usr/local/mysql/data

і, нарешті, додав подібний системний сервіс

/lib/systemd/system/mysql.service

[Unit]
Description=MySQL Server
After=syslog.target
After=network.target

[Service]
Type=simple
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/run/mysqld
ExecStartPre=/bin/chown mysql:mysql -R /var/run/mysqld
ExecStart=/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
TimeoutSec=300
PrivateTmp=true
User=mysql
Group=mysql
WorkingDirectory=/usr

[Install]
WantedBy=multi-user.target

Потім побіг

# systemctl daemon-reload
# systemctl enable mysql
# systemctl start mysql

Тоді все, здавалося, працює як раніше, і mysql не порушує оновлення системи

Мінусом, звичайно, є те, що в майбутньому мені потрібно буде робити оновлення вручну.


1

Якщо у вашому root @ localhostакаунта немає пароля, то в процесі післявстановлення є помилка, як зазначено тут (див. Особливо останній коментар теми)

  • очистити всі TMP*файли в/var/lib/mysql-files
  • відредагуйте файл /var/lib/dpkg/info/mysql-server-5.7.postinstта прокоментуйте (використовуючи #) рядок 370:

    echo "ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';" >> "$initfile"

  • знову біжи sudo dpkg --configure -a


О, дорогий мені! <3 Ви врятували мені життя: p Примітка для нащадків: можливо, ви захочете запобігти подальшому оновлення mysql (яке вийде з ладу таким же чином), використовуючиapt-mark hold mysql-server-5.7
Gab - зліва над Монікою
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.