При обновлении до 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 и перейдите в клонированную папку.
  2. В терминале выполните mysql -u root -p <./sys_57.sql (или sys_56.sql, в зависимости от вашей версии)

Наслаждайтесь работой mysql_upgrade снова. Я предполагаю, что это, вероятно, была путаница обновлений сценариев.

Асефа Тасев
источник
Да, это проблема с обновлением баз данных. К сожалению, я больше не могу проверить ваше решение, чтобы увидеть, работает оно или нет.
Омид
Я пробовал это решение на моей установке mysql 5.7.22, которая сообщала: «Эта установка MySQL уже обновлена ​​до 5.7.22, используйте --force, если вам все еще нужно запустить mysql_upgrade», и она работала как
чудо
2

У меня тоже была эта проблема. Каждый раз, когда я запускал apt get и устанавливал процесс зависал после или во время обновления БД. Ни одно из других решений здесь не сработало.

В конце концов я очистил

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

Если ваша localhostучетная запись root @ не имеет пароля, то в процессе постинсталляции есть ошибка, как указано здесь (см., В частности, последний комментарий в теме)

  • очистить все 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 - оставил Монику