Meng-upgrade ke MySQL 5.7.15 lumpuh di Ubuntu 16.04

13

Tadi malam saya mencoba meningkatkan OS Ubuntu saya dan MySQL 5.7.15 adalah salah satu perubahannya. Tampaknya pemutakhiran berhasil karena mysql berfungsi dengan baik, tetapi proses instalasi telah berhenti bekerja dengan pesan ini:

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

Saya tidak dapat membatalkan proses instalasi dengan cara reqular dan hanya harus membunuhnya. Jadi itu dapat menyebabkan beberapa masalah dan juga untuk setiap instalasi lain (di masa depan) ia mencoba melakukannya lagi.

Bagaimana mencegah pembaruan ini atau menyelesaikannya?

Omid
sumber

Jawaban:

12

Solusi ini memecahkan masalah saya:

  1. Cadangkan file database Anda dengan izin:

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

    sudo rm -rv /etc/mysql 
    
  3. Hapus MySQL sepenuhnya melalui menjalankan:

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

    Dianjurkan untuk menggunakan Synaptic .

  4. Buat folder ini:

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

    pengaturan mysql tidak melakukannya secara otomatis dan saya tidak tahu mengapa.

  5. Instal MySQL lagi

    sudo apt install mysql-server
    

    sudo apt install lamp-server^Sebagai gantinya, saya menginstal dependensi lain untuk pengembangan PHP.

  6. Hentikan MySQL:

    sudo service mysql stop 
    
  7. Pulihkan basis data dan file:

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

    sudo service mysql start 
    
Omid
sumber
1
dpkg: kesalahan saat membersihkan: skrip pasca-pemasangan yang diinstal pasca-pemasangan mengembalikan status keluar kesalahan 1 Kesalahan terjadi saat memproses: mysql-server-5.7
Stevie G
Kuncinya adalah menghapus: sudo rm /var/cache/debconf/config.dat, sudo rm /var/cache/debconf/passwords.datdan sudo rm /var/cache/debconf/templates.dat. Kemudian bersihkan semuanya. Kemudian lakukan reboot sistem.
Stevie G
Saya memiliki masalah yang sama dan menyelesaikannya dengan prosedur ini. Saya merekomendasikan sistem reboot setelah membersihkan MySQL. Tampaknya ini mencegah masalah yang dilaporkan oleh Stevie.
Tsutomu
4

Saya berhasil memperbaiki ini tanpa harus membersihkan semuanya. Tampaknya masalahnya adalah bahwa database skema sys tidak pernah dibuat, jadi inilah solusinya:

  1. Klon https://github.com/mysql/mysql-sys dan cd ke folder yang dikloning.
  2. Di terminal, jalankan mysql -u root -p <./sys_57.sql (atau sys_56.sql, tergantung versi Anda)

Nikmati mysql_upgrade bekerja kembali. Saya kira ini mungkin adalah, skrip upgrade script.

Asefa Tasew
sumber
Ya itu adalah masalah dengan memutakhirkan basis data. Sayangnya saya tidak dapat menguji solusi Anda lagi untuk melihat apakah itu berfungsi atau tidak.
Omid
Saya mencoba solusi ini pada instalasi mysql 5.7.22 saya yang melaporkan "Instalasi MySQL ini sudah ditingkatkan ke 5.7.22, gunakan --force jika Anda masih perlu menjalankan mysql_upgrade" dan itu bekerja seperti pesona
henrik
2

Saya punya masalah ini juga. Setiap kali saya mulai mendapatkan dan menginstal proses akan hang setelah atau selama pembaruan DB. Tidak ada solusi lain di sini yang berfungsi.

Pada akhirnya saya membersihkan

sudo apt purge mysql-server mysql-server-5.7

Dan ikuti petunjuk pemasangan dari instruksi untuk mysql di sini

Saya kemudian menimpa direktori data dengan data lama saya

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

dan akhirnya menambahkan layanan systemd seperti ini

/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

Lalu lari

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

Kemudian semuanya tampak berfungsi seperti semula dan mysql tidak merusak pembaruan sistem

Kelemahannya, tentu saja, saya harus melakukan pembaruan manual di masa mendatang.

Jeremy French
sumber
1

Jika akun root @ Anda localhosttidak memiliki kata sandi, maka ada bug dalam proses postinstall seperti yang dinyatakan di sini (lihat khususnya komentar terakhir utas)

  • bersihkan semua TMP*file/var/lib/mysql-files
  • edit file /var/lib/dpkg/info/mysql-server-5.7.postinstdan komentar (menggunakan #) baris 370:

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

  • berlari lagi sudo dpkg --configure -a

Gab - tinggalkan Monica
sumber
Oh sayangku! <3 Anda menyelamatkan hidup saya: p Catatan untuk anak cucu: Anda mungkin ingin mencegah pembaruan mysql lebih lanjut (yang akan gagal dengan cara yang sama) menggunakanapt-mark hold mysql-server-5.7
Gab - sisa Monica