Pertanyaan 16,04 pemutakhiran merusak mysql-server


Peningkatan keseluruhan saya berjalan dengan baik, tetapi saya ditinggalkan dengan masalah yang sangat serius dari mysql-server yang tidak dapat menginstal sendiri, dan tidak ada yang saya coba membuatnya bekerja.

Ini adalah kesalahan yang saya lihat ketika mencoba menginstal / menginstal ulang:

Setting up mysql-server-5.7 (5.7.11-0ubuntu6) ...
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing package mysql-server-5.7 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                   Processing triggers for systemd (229-4ubuntu4) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

Saya sudah mencoba menghapusnya sepenuhnya, meskipun demikian mencoba menginstal MariaDB karena dependensi (?). Setiap saran tentang apa yang dapat saya lakukan untuk memperbaiki ini akan sangat disambut baik.

EDIT: Sepertinya saya bukan satu-satunya: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279


112
2018-04-22 17:53


asal


Saya punya masalah yang sama sini. - KernelPanic
Harus menghapus phpmyadmin, yang menyebabkan masalah ketergantungan entah bagaimana. Setelah menginstal ulang, semuanya berfungsi dengan baik lagi. - Hinrich
do-release-upgrade dari Ubuntu 14 hingga 16 melakukan upgrade yang tidak didukung dari MySQL 5.5 ke 5.7, sehingga diharapkan MySQL rusak setelahnya, seperti yang dilaporkan di sini: bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/… - Marco Marsala
@MarcoMarsala Saya tidak tahu apakah kita bisa mengatakannya diharapkan untuk MySQL rusak setelah upgrade Ubuntu 14 hingga 16, meskipun saya kira itu tergantung pada perspektif Anda. Untuk pengguna rata-rata, tentu tidak diharapkan untuk memiliki pemutakhiran LTS yang merusak sesuatu seperti MySQL. Sangat mengejutkan bahwa tidak tertangkap selama pengujian. - TheGremlyn


Jawaban:


Instruksi @ andrew-beerman diposting berada di jalur yang benar, meskipun mereka tidak cukup jelas bagi saya dan tampaknya menyarankan lebih dari yang diperlukan. Saya menyatukan jawaban dari atas dan posting yang membantu dalam untaian bug.

Ini adalah langkah-langkah yang saya ambil untuk memperbaiki ini:

  1. Cadangkan Anda my.cnf file di /etc/mysql dan hapus atau ganti namanya

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
    
  2. Hapus folder /etc/mysql/mysql.conf.d/ menggunakan

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. Verifikasi bahwa Anda tidak memiliki my.cnf file disimpan di tempat lain (saya lakukan di dir rumah saya!) atau di /etc/alternatives/my.cnf menggunakan

    sudo find / -name my.cnf
    
  4. Cadangkan dan hapus /etc/mysql/debian.cnf file (tidak yakin jika diperlukan, tetapi berjaga-jaga)

    sudo mv /etc/mysql/debian.cnf /etc/mysql/debian.cnf.bak
    sudo apt purge mysql-server mysql-server-5.7 mysql-server-core-5.7
    sudo apt install mysql-server
    
  5. Jika syslog Anda menampilkan kesalahan seperti "mysqld: Tidak dapat membaca dir dari '/etc/mysql/conf.d/'" buat tautan simbolis:

    sudo ln -s /etc/mysql/mysql.conf.d /etc/mysql/conf.d
    

    Maka layanan harus dapat mulai dengan sudo service mysql start.

Itu membuatnya bekerja!


112
2018-04-25 13:38



setelah semua operasi ini (saya melakukannya sebelumnya) saya masih memiliki masalah kesalahan yang sama ... - Sergii P
Anda harus menghapus setiap my.cnf. * Dari direktori / etc / mysql. Carilah my.cnf.backup, my.cnf.fallback dan my.cnf.migrated - semua file ini harus dihapus juga (backup dulu!) - hitzi
@SergiiP sudo find / -name "my.cnf" mungkin berguna. - starbeamrainbowlabs
mysql-server-core- haruslah mysql-server-core-5.7. Jika tidak bekerja seperti pesona. Terima kasih! - Anonymous
+1. Anda telah membuat hari saya! Juga pagi dan sore! Saya terjebak. - Max Yudin


Hari ini saya mendapat masalah yang sama, setelah mencoba banyak solusi, saya menemukan bahwa masalahnya adalah perintah sudo systemctl disable mysql.service yang saya gunakan untuk menonaktifkan auto start MySQL, sehingga untuk membuatnya bekerja saya kembali diaktifkan lagi MySQL server menggunakan perintah sudo systemctl enable mysql.service dan jalankan lagi proses peningkatan dan diakhiri dengan sempurna.


54
2018-04-25 22:37



Saya mengalami masalah yang sama dan perbaikan yang sama berhasil bagi saya. - Allen
Bekerja untukku. Apakah setiap solusi di sini, mysql bekerja setelah yang satu ini. - Błażej Michalik
Sama di sini - ini harus menjadi posisi teratas. - a1phanumeric
Bekerja untuk saya juga! Terima kasih banyak. Hanya agar eksplisit, jalankan: sudo systemctl enable mysql.service dan setelah lari itu sudo apt install -f. - Fernando Paladini
Ini yang harus saya lakukan. Saya telah menonaktifkan autostart seperti yang dijelaskan oleh @naruto. Saya mengaktifkan autostart dan menjalankan "sudo apt upgrade". Sekarang diperbaiki. Harus menjadi jawaban atas. Ini adalah solusi yang jauh lebih sederhana, lebih standar, dan tidak terlalu bermasalah. - Jack Holt


Instruksi di sini telah diperbaiki di server saya: https://bugs.mysql.com/bug.php?id=72722

Saya dapat memahami rasa sakit karena sistem Anda dalam keadaan tidak konsisten   tetapi jangan khawatir tentang seluruh situasi dan lakukan selangkah demi selangkah   untuk mendapatkan sistem bersih.

Pertama mari kita lihat kondisi saat ini semua paket mysql pada mesin   menggunakan: dpkg-l | grep mysql (Silakan tempelkan keluaran tidak termasuk yang terakhir   kolom)

Kolom pertama menunjukkan status paket saat ini. Di sini adalah   kemungkinan opsi:

ii) Installed rc) Penghapusan file config disimpan (Ini harus menjadi state   dari semua paket yang telah Anda hapus dengan 'apt-get remove'   tidak menghapus file-file konfigurasi di bawah / etc)

Agar ini berfungsi, Anda harus menjalankan 'apt-get purge' hingga   Anda tidak melihat paket apa pun dalam daftar di atas.

Harap diingat bahwa beberapa paket non-mysql-server seperti   python-mysql.connector dan python-mysqldb, jika terpasang, tidak perlu   dihapus karena mereka tidak memiliki pengaruh pada situasi ini tetapi jika   dihapus dapat menyebabkan masalah pada aplikasi yang menggunakannya.

Kami pasti akan mencoba mengunjungi kembali dokumen kami untuk melihat bagaimana kami bisa   melindungi pengguna dari masalah ini. Terima kasih telah berbagi   umpan balik Anda secara detail dengan kami.


17
2018-04-22 22:05



Terima kasih untuk dpkg -l | grep mysql . Ini membantu untuk memahami arah. - Max Yudin


Pesan kesalahan Anda mengandung baris ini:

subprocess installed post-installation script returned error exit status 1

Namun, ini installed post-installation script tidak disebutkan namanya. Setelah banyak mengutak-atik, saya menemukan bahwa namanya adalah (dalam kasus saya) /var/lib/dpkg/info/mysql-server-5.7.postinst.

Buka file ini dengan sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinst, atau editor pilihan Anda.

Di bagian atas, ubah baris 3 (atau lebih): set -e untuk set -x, simpan file. (pilihan -e adalah "exit on errors", -x berarti "secara eksplisit menunjukkan perintah dieksekusi", mungkin)

Menjalankan sudo dpkg --configure -a --log /tmp/dpkg.log (opsi --log adalah opsional). Anda juga bisa langsung berlari apt upgrade jika Anda tahu itu akan menjadi satu-satunya paket yang akan ditingkatkan.

Sekarang Anda mendapatkan output verbose dari mysql-server-5.7.postinst skrip bash, dan Anda bisa mencari tahu apa yang salah.

Dalam hal ini itu tidak berhasil mencoba (kembali) dijalankan mysql_upgrade, tapi itu tidak diperlukan untuk instalasi mysql saya yang disesuaikan. Saya yakin Saya telah menjalankannya secara manual sebelumnya, berhasil, dan semuanya baik-baik saja.

Jadi saya berkomentar baris 321 (untuk rilis mysqld yang lebih lama, coba baris 281),

#mysql_upgrade --defaults-file=/etc/mysql/debian.cnf || result=$?

dan perintah yang gagal sebelumnya, sudo apt upgrade (jalankan lagi), selesaikan dengan sukses, dan dpkg menghapus status kesalahan untuk paket ini.

Sekarang Anda dapat mengatur kembali set -x untuk set -e (disebutkan di atas). Dan secara opsional hapus tanda komentar pada baris upgrade mysql.

Pekerjaan ekstra mungkin diperlukan jika Anda telah memindahkan partisi data mysql Anda ke lokasi yang tidak standar. Saya pindah dari /var/lib/mysql/data ke drive yang berbeda melalui symlink. Maka Anda mungkin harus menghapus tautan simbolis sementara, sebelum postinst manipulasi skrip. Kemudian buat kembali setelah menjalankan upgrade paket.

Setelah upgrade versi minor berikutnya dari paket debian mysqld, masalah ini dengan /var/lib/dpkg/info/mysql-server-5.7.postinst skrip dapat muncul lagi.


17
2017-07-01 12:03



Saya akhirnya membersihkan semuanya dan kemudian mengunduh versi mysql-server komunitas dan menginstal secara manual dari sini: dev.mysql.com/downloads/mysql - RyanNerd
Persis hal yang sama terjadi pada saya, dan langkah Anda memecahkannya. Untuk saya, panggilan mysql_upgrade saya ada di saluran 320. Dapatkah Anda menjelaskan mengapa ia mengembalikan nilai non-nol ketika dipanggil dari skrip postinst? - emiliopedrollo
@emiliopedrollo Tidak, saya tidak bisa menjelaskan di sini. Tapi saya pikir nomor baris sekarang 320 karena baru-baru ini pengelola paket telah menambah skrip post-install, saya telah mengamati hal yang sama pada hari yang lain, selama putaran terakhir dari perangkat lunak-pembaru (yang termasuk mysql-deb-paket baru) . - knb
Terima kasih! Dengan set -e Saya dapat memecahkan masalah yang sebenarnya - MySQL tidak memiliki akses untuk pengguna sistem ubuntu yang ditentukan /etc/mysql/debian.cnf  . Jadi saya menambahkan pengguna ini ke MySQL dan memberikan hak istimewa, jalankan dpkg lagi dan itu berhasil! - Allen Hamilton


Dalam kasus saya, dengan strace, saya melihat bahwa / var / run / mysqld / tidak ada dan mysqld tidak dapat membuat file mysqld.sock.

Perintah-perintah ini memecahkan masalah saya:

mkdir /var/run/mysqld
chown mysql.mysql /var/run/mysqld
chmod 700 /var/run/mysqld

Sekarang:

systemctl start mysql

Dan mysql berfungsi lagi :)


3
2018-04-27 08:14



Saya sarankan Anda menambahkan baris-baris ini ke / usr / share / mysql / mysql-systemd-start mulai dari baris 25, maka Anda tidak perlu membuat ulang direktori ini setelah setiap reboot (maaf, pengembalian baris tidak berfungsi dalam komentar ini) : jika [! -d / run / msyqld]; lalu mkdir -p -m0755 / run / mysqld || {echo "Tidak dapat membuat / menjalankan / mysqld"; keluar 1; } chown mysql: mysql / run / mysqld || {echo "Tidak dapat chown / run / mysqld"; keluar 1; } fi - scoobydoo


Dalam kasus saya, saya bisa menyelesaikan masalah dengan menambahkan

# Allow log file access
/home/system/var/log/mysql.err rw,
/home/system/var/log/mysql.log rw,
/home/system/var/log/mysql/ r,
/home/system/var/log/mysql/** rw,

untuk /etc/apparmor.d/local/usr.sbin.mysqld

Untuk lebih jelasnya lihatlah saya menjawab (oleh ChristophS) di stackoverflow.


3
2018-04-29 12:30





Tak satu pun dari jawaban di halaman ini bekerja untuk saya.

Saya akhirnya pergi ke Halaman unduhan Oracle, mengunduh mysql-apt-config_0.8.8-1_all.deb, dan menginstal MySQL dari Oracle repo:

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server

1
2017-09-25 17:19



isntall-> install salah ketik. Bodoh SO tidak memungkinkan saya untuk memperbaiki satu karakter. - Csaba Toth
@CsabaToth dikoreksi, terima kasih! - ostrokach


Saya memiliki masalah yang sama. Saya mencoba menginstal ulang mysql beberapa kali, tetapi tidak berhasil.

Saya tahu bahwa masalah bagi saya adalah, bahwa proses mysql lain sudah berjalan.

Secara detail:

Setelah saya membaca dengan hati-hati masuk /var/log/mysql/error.log, dan menemukan:

[ERROR] Tidak dapat memulai server: Ikat pada port TCP / IP: Alamat sudah ada di   menggunakan

[ERROR] Apakah Anda sudah memiliki server mysqld lain yang berjalan di port:   3306?

Sepertinya aplikasi lain sudah menggunakan port.

Saya memeriksanya menggunakan ps -aux | grep 3306:

$ ps -aux | grep 3306
milkovs+  6802  0.0  0.0  16336  1084 pts/19   S+   21:39   0:00 grep --color=auto 3306
mysql    14706  0.0  0.3 1270192 13916 pts/2   Sl   Aug19   0:29 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 --log-syslog=1 --log-syslog-facility=daemon --log-syslog-tag=

Dan saya membunuh proses yang sedang berjalan sudo kill -15 14706

Lalu saya memulai mysql: /etc/init.d/mysql start

Akhirnya mysql bekerja untuk saya! Saya harap itu membantu seseorang.


0
2017-08-20 20:02