A atualização para o MySQL 5.7.15 falha no Ubuntu 16.04


13

Na noite passada, tentei atualizar meu Ubuntu OS e o MySQL 5.7.15 foi uma das mudanças. Parece que a atualização foi bem-sucedida porque o mysql está funcionando corretamente, mas o processo de instalação parou de funcionar com esta mensagem:

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

Não consigo cancelar o processo de instalação de forma reqular e só preciso matá-lo. Portanto, isso pode causar algum problema e também para todas as outras instalações (no futuro) ele tenta fazê-lo novamente.

Como evitar essa atualização ou resolvê-la?

Respostas:


12

Esta solução resolveu meu problema:

  1. Faça backup de seus arquivos de banco de dados com permissões:

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

    sudo rm -rv /etc/mysql 
    
  3. Remova o MySQL completamente através da execução:

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

    Recomenda-se o uso de Synaptic .

  4. Crie estas pastas:

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

    A instalação do mysql não fez isso automaticamente e não sei por quê.

  5. Instale o MySQL novamente

    sudo apt install mysql-server
    

    Em sudo apt install lamp-server^vez disso, usei para instalar outras dependências para o desenvolvimento do PHP.

  6. Pare o MySQL:

    sudo service mysql stop 
    
  7. Restaure bancos de dados e arquivos:

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

    sudo service mysql start 
    

1
dpkg: erro durante a limpeza: o script de pós-instalação instalado pelo subprocesso retornou o status de saída de erro 1 Erros foram encontrados durante o processamento: mysql-server-5.7
— Stevie G

Coisa fundamental é a remoção de: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.date sudo rm /var/cache/debconf/templates.dat. Depois limpe tudo. Em seguida, reinicie o sistema.
— Stevie G

Eu tive o mesmo problema e resolvi-o com este procedimento. Eu recomendo a reinicialização do sistema depois de limpar o MySQL. Parece que isso evita o problema relatado por Stevie.
— Tsutomu

4

Consegui consertar isso sem precisar limpar tudo. Parece que o problema é que o banco de dados do esquema sys nunca foi criado, então aqui está a solução:

  1. Clone https://github.com/mysql/mysql-sys e cd na pasta clonada.
  2. Em um terminal, execute mysql -u root -p <./sys_57.sql (ou sys_56.sql, dependendo da sua versão)

Desfrute do mysql_upgrade trabalhando novamente. Eu acho que isso provavelmente foi, uma bagunça de scripts de atualização.


Sim, é um problema com a atualização de bancos de dados. Infelizmente, não posso mais testar sua solução para ver se está funcionando ou não.
— Omid

Tentei esta solução na minha instalação do mysql 5.7.22 que estava relatando "Esta instalação do MySQL já foi atualizada para 5.7.22, use --force se você ainda precisar executar o mysql_upgrade" e funcionou como um encanto
— henrik

2

Eu também tive esse problema. Toda vez que eu começava a obter e instalar o processo travava após ou durante a atualização do banco de dados. Nenhuma das outras soluções aqui funcionou.

No final, eu limpei

sudo apt purge mysql-server mysql-server-5.7

E seguiu a instalação manual das instruções para o mysql aqui

Em seguida, substitui o diretório de dados pelos meus dados antigos

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

e, finalmente, adicionou um serviço 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

Então correu

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

Então tudo parecia estar funcionando como antes e o mysql não estava quebrando as atualizações do sistema

A desvantagem, é claro, é que precisarei fazer atualizações manuais no futuro.


1

Se sua localhostconta root @ não tiver senha, ocorrerá um erro no processo de pós-instalação, conforme indicado aqui (consulte particularmente o último comentário do tópico)

  • limpe todos os TMP*arquivos/var/lib/mysql-files
  • edite o arquivo /var/lib/dpkg/info/mysql-server-5.7.postinste comente (usando #) a linha 370:

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

  • Corra novamente sudo dpkg --configure -a


Oh meu Deus! <3 Você salvou minha vida: p Nota para a posteridade: você pode impedir uma atualização adicional do mysql (que falhará da mesma maneira) usandoapt-mark hold mysql-server-5.7
— Gab - deixado Monica em
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.