La actualización a MySQL 5.7.15 se bloquea en Ubuntu 16.04

13

Anoche intenté actualizar mi sistema operativo Ubuntu y MySQL 5.7.15 fue uno de los cambios. Parece que la actualización es exitosa porque mysql está funcionando correctamente, pero el proceso de instalación ha dejado de funcionar con este mensaje:

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

No puedo cancelar el proceso de instalación en forma reqular y solo tengo que matarlo. Por lo tanto, puede causar algún problema y también para cualquier otra instalación (en el futuro) intenta hacerlo nuevamente.

¿Cómo evitar esta actualización o resolverla?

Omid
fuente

Respuestas:

12

Esta solución resolvió mi problema:

  1. Haga una copia de seguridad de sus archivos de base de datos con permisos

    sudo cp -avt /your/backup/directory /var/lib/mysql /etc/mysql/my.cnf
    
  2. Eliminar archivos mysql:

    sudo rm -rv /etc/mysql 
    
  3. Eliminar MySQL completamente a través de la ejecución:

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

    Se recomienda el uso de Synaptic .

  4. Crea estas carpetas:

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

    La configuración de mysql no lo hizo automáticamente y no sé por qué.

  5. Instalar MySQL nuevamente

    sudo apt install mysql-server
    

    En su sudo apt install lamp-server^lugar, solía instalar otras dependencias para el desarrollo de PHP.

  6. Detener MySQL:

    sudo service mysql stop 
    
  7. Restaurar bases de datos y archivos:

    sudo cp -a /your/backup/directory/mysql /var/lib   
    sudo cp /your/backup/directory/my.cnf /etc/mysql 
    
  8. Reiniciar MySQL:

    sudo service mysql start 
    
Omid
fuente
1
dpkg: error durante la limpieza: el subproceso instalado después de la instalación devolvió el estado de salida del error 1 Se encontraron errores durante el procesamiento: mysql-server-5.7
Stevie G
Lo clave es la eliminación de: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.daty sudo rm /var/cache/debconf/templates.dat. Luego purgue todo. Luego, reinicie el sistema.
Stevie G
Tuve el mismo problema y lo resolví con este procedimiento. Recomiendo reiniciar el sistema después de purgar MySQL. Parece que esto evita el problema reportado por Stevie.
Tsutomu
4

Logré arreglar esto sin tener que purgar todo. Parece que el problema es que la base de datos del esquema sys nunca se creó, así que aquí está la solución:

  1. Clone https://github.com/mysql/mysql-sys y cd en la carpeta clonada.
  2. En una terminal, ejecute mysql -u root -p <./sys_57.sql (o sys_56.sql, según su versión)

Disfruta mysql_upgrade trabajando de nuevo. Supongo que esto probablemente fue un desastre de actualización de scripts.

Asefa Tasew
fuente
Sí, es un problema con la actualización de bases de datos. Lamentablemente, ya no puedo probar su solución para ver si funciona o no.
Omid
Probé esta solución en mi instalación de mysql 5.7.22 que informaba "Esta instalación de MySQL ya está actualizada a 5.7.22, use --force si aún necesita ejecutar mysql_upgrade" y funcionó de maravilla
henrik
2

También tuve este problema. Cada vez que comencé apt get e instalé el proceso se bloqueaba después o durante la actualización de la base de datos. Ninguna de las otras soluciones aquí funcionó.

Al final me purgué

sudo apt purge mysql-server mysql-server-5.7

Y siguió la instalación manual de las instrucciones para mysql aquí

Luego sobrescribí el directorio de datos con mis datos anteriores

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

y finalmente agregué un servicio systemd como este

/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

Luego corrió

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

Entonces todo parecía estar funcionando como antes y mysql no estaba rompiendo las actualizaciones del sistema

La desventaja, por supuesto, es que tendré que hacer actualizaciones manuales en el futuro.

Jeremy French
fuente
1

Si su localhostcuenta root @ no tiene contraseña, entonces hay un error en el proceso posterior a la instalación como se indica aquí (vea particularmente el último comentario del hilo)

  • purgar todos los TMP*archivos en/var/lib/mysql-files
  • edite el archivo /var/lib/dpkg/info/mysql-server-5.7.postinsty comente (usando #) la línea 370:

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

  • corre de nuevo sudo dpkg --configure -a

Gab - dejó a Mónica
fuente
Oh querido! <3 Me salvaste la vida: p Nota para la posteridad: es posible que desees evitar más actualizaciones de mysql (que fallarán de la misma manera) usandoapt-mark hold mysql-server-5.7
Gab - dejado sobre Mónica el