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.