16.04 yükseltme mysql-server kırdı


127

Genel güncellemem iyi geçti, ancak mysql-server'ın kendisini yükleyememesi konusunda ciddi bir şekilde kalıcı bir sorun kaldı ve çalıştığım hiçbir şey işe yaramayacak.

Yüklemeye / yeniden yüklemeye çalışırken gördüğüm hatadır:

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)

MariaDB'yi bağımlılıklar nedeniyle (?) Kurmak için girişimlerde bulunsa da, tamamen kaldırmayı denedim. Bunu düzeltmek için neler yapabileceğime dair önerileriniz memnuniyetle karşılanacaktır.

EDIT: Sadece ben değilim gibi görünüyor: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1573279


Burada da aynı problemim var .
KernelPanic

1
Bağımlılık sorunlarına neden olan phpmyadmin'i kaldırmak zorunda kaldım. Yeniden yükledikten sonra her şey tekrar iyi çalışıyor.
Hinrich,

1
do-salım yükseltme Ubuntu 14 ila 16 5,7 ila MySQL 5.5 desteklenmeyen bir yükseltme gerçekleştirir, bu nedenle burada rapor edildiği gibi bu, MySQL sonra bozuk beklenir: bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/ + bug /…
Marco Marsala

1
@MarcoMarsala MySQL'in Ubuntu 14 ila 16 güncellemesinden sonra kırılmasının beklendiğini söyleyip söylemediğimizi bilmiyorum, sanırım bakış açınıza göre değişiyor . Ortalama bir kullanıcı için, kesinlikle bir LTS yükseltmesinin MySQL gibi bir şeyi kırması beklenmez. Yine de test sırasında yakalanmadığı şaşırtıcı.
TheGremlyn

apt yüklemek phpmyadmin - yeniden yükleme sonra mysql dokunmak gerek kalmadan yukarıdaki sabit ... go şekil
Andy

Yanıtlar:


119

Andrew Beerman'ın gönderdiği talimatlar doğru yolda, bana oldukça açık olmasa da, gereğinden fazla tavsiye ediyor gibi görünüyorlar. Yukarıdan gelen cevabı ve böcek başlığında yardımcı bir yazıyı bir araya getirdim.

Bunu düzeltmek için attığım adımlar:

  1. Senin yedekle my.cnf filein /etc/mysqlve kaldırmak veya yeniden adlandırmak

    sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
    
  2. /etc/mysql/mysql.conf.d/Kullanarak klasörü kaldırın

    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. my.cnfBaşka bir yerde saklanmış bir dosyanızın olmadığını (ev dizininde yaptım!) Veya /etc/alternatives/my.cnfkullanımda olmadığınızı doğrulayın.

    sudo find / -name my.cnf
    
  4. /etc/mysql/debian.cnfDosyaları yedekleme ve kaldırma (gerektiğinde emin değil, yalnızca durumda)

    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. Sisteminizin "mysqld: '/etc/mysql/conf.d/'" dizinini okuyamıyor "gibi bir hata göstermesi durumunda, sembolik bir bağlantı oluşturun:

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

    O zaman servis ile başlayabilmelisiniz sudo service mysql start.

İşe yaradı!


17
tüm bu operasyonlardan sonra (daha önce yaptım) hala aynı hata sorunlarım var ...
Serge

5
Her my.cnf. * Dosyasını / etc / mysql dizininden kaldırmalısınız. My.cnf.backup, my.cnf.fallback ve my.cnf.migrated öğelerini arayın - tüm bu dosyaların da kaldırılması gerekir (önce yedekleme!)
hitzi

8
@ SergiiP sudo find / -name "my.cnf"kullanışlı olabilir.
starbeamrainbowlabs

1
mysql-server-core-, mysql-server-core-5.7 olmalıdır. Aksi takdirde bir cazibe gibi çalıştı. Teşekkür ederim!
David Tay

1
+1. Günümü sen yaptın! Ayrıca sabah ve akşam! Sıkışmıştım.
Max Yudin

56

Bugün ben sorun komut olduğunu tespit birçok çözümleri denedikten sonra, aynı problem var sudo systemctl disable mysql.servicebu yüzden komutunu kullanarak i MySQL sunucusu tekrar yeniden etkinleştirilmesi çalışma almak için, i MySQL oto başlangıç devre dışı bırakmak için kullanılan sudo systemctl enable mysql.serviceve yine yükseltme işlemini çalıştırın ve mükemmel sonlandı.


5
Aynı soruna rastladım ve aynı düzeltme benim için işe yaradı.
Allen

5
Benim için çalıştı. Burada her çözümü yaptım, bundan sonra mysql çalıştı.
Błażej Michalik

6
Burada aynı - bu en iyi yazı olmalıdır.
a1fanumeric

3
Benim için de çalıştım! Çok teşekkür ederim. Sadece açık olması için, koş: sudo systemctl enable mysql.serviceve bu koşunun ardından sudo apt install -f.
Fernando Paladini,

Tek yapmam gereken buydu. @Naruto tarafından açıklandığı gibi otomatik başlatmayı devre dışı bıraktım. Otomatik başlatmayı etkinleştirdim ve "sudo apt upgrade" komutunu çalıştırdım. Şimdi düzeltildi. En iyi cevap olmalı. Bu daha basit, daha standart ve daha az sorun çıkaran bir çözümdür.
Jack Holt

20

Hata mesajınız şu satırı içeriyor:

subprocess installed post-installation script returned error exit status 1

Ancak, bu installed post-installation scriptisimle belirtilmez. Çok uğraştıktan sonra isminin (benim durumumda) olduğunu öğrendim /var/lib/dpkg/info/mysql-server-5.7.postinst.

Bu dosyayı sudo vi /var/lib/dpkg/info/mysql-server-5.7.postinstveya tercih ettiğiniz editörle açın.

Üst, değişim hattı 3 (veya çok) At: set -eiçin set -x, dosyayı kaydedin. (seçenek -e"hatalardan çıkış" -xanlamına gelir), "muhtemelen çalıştırılan komutu açıkça göster" anlamına gelir)

Çalıştır sudo dpkg --configure -a --log /tmp/dpkg.log (--log seçeneği isteğe bağlıdır). Ayrıca apt upgrade, yükseltilecek olan tek paket olacağını bilmeniz durumunda da çalıştırabilirsiniz .

Şimdi mysql-server-5.7.postinstbash betiğinin ayrıntılı çıktısını alıyorsunuz ve neyin yanlış olduğunu çözebiliyorsunuz.

Benim durumumda başarısızlıkla (yeniden) çalışmayı denedi mysql_upgrade, ancak bu benim kişiselleştirilmiş mysql kurulumum için gerekli değildi. Daha önce başarılı bir şekilde elle çalıştırdığımdan emindim ve her şey yolundaydı.

Bu yüzden 321 satırını tamamladım (eski mysqld sürümleri için satır 281'i deneyin),

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

ve daha önce başarısız olan komut sudo apt upgrade(tekrar çalıştır), başarıyla tamamlandı ve dpkg bu paketin hata durumunu kaldırdı.

Şimdi geri ayarlayabilirsiniz set -xiçin set -e(yukarıda bahsedilen). Ve isteğe bağlı olarak, mysql-yükseltme satırını engelleyin.

MySQL veri bölümünüzü standart olmayan bir konuma taşıdıysanız, ek iş gerekebilir. Benimkini /var/lib/mysql/datasembolik bağlantıdan farklı bir sürücüye taşıdım . Ardından, postinstkomut dosyası işleminden önce sembolik bağlantıyı geçici olarak kaldırmanız gerekebilir . Ardından, paket yükseltmesini çalıştırdıktan sonra yeniden oluşturun.

MySQL Debian paketinin bir sonraki küçük sürüm yükseltmesinden sonra, /var/lib/dpkg/info/mysql-server-5.7.postinstkomut dosyasıyla bu sorun yeniden ortaya çıkabilir.


Herşeyi temizlemeye başladım ve ardından topluluk mysql-server sürümünü indirip buradan manuel olarak kurdum
RyanNerd

Aynen bana da aynısı oldu ve adımların bunu çözdü. Bur benim için mysql_upgrade çağrım 320 satırdaydı. Postinst betiğinden çağrıldığında neden sıfır olmayan bir değer döndürdüğünü açıklayabilir misiniz?
emiliopedrollo

@emiliopedrollo Hayır Burada açıklayamam. Ancak satır numarasının şimdi 320 olduğunu düşünüyorum çünkü son zamanlarda paket bakımcıları postinstall komut dosyasını güçlendirdi, geçen gün yazılım güncelleyicisinin (yeni bir mysql-deb-paketi dahil) son çalıştırması sırasında aynı şeyi gözlemledim. .
knb

Teşekkürler! İle set -eben tam sorunu çözmek başardı - MySQL belirtilen ubuntu sistem kullanıcının erişimini yoktu /etc/mysql/debian.cnf . Ben de bu kullanıcıyı MySQL'e ekledim ve ayrıcalıklar verdim, dpkgtekrar koştum ve işe yaradı!
Allen Hamilton

17

Buradaki talimatlar sunucumda düzeltildi: https://bugs.mysql.com/bug.php?id=72722

Sisteminizi tutarsız bir duruma getirmenin acısını anlayabiliyorum, ancak tüm durum için endişelenmenize izin vermiyor ve sistemi temizlemek için adım adım atmanıza izin vermiyor.

İlk önce makinedeki tüm mysql paketlerinin şu anki durumunu görelim: dpkg -l | grep mysql (Lütfen son sütun hariç çıktıyı yapıştırın)

İlk sütun, paketin mevcut durumunu gösterir. İşte olası seçenekler:

ii) Yüklü rc) Kaldırılan config dosyaları tutuldu (Bu, / etc altındaki config dosyalarını kaldırmayan 'apt-get remove' ile kaldırdığınız tüm paketlerin durumu olmalıdır)

Bunun çalışması için, yukarıdaki listede herhangi bir paket görene kadar 'apt-get purge <pkg-name>' komutunu çalıştırmanız gerekir.

Lütfen, python-mysql.connector ve python-mysqldb gibi bazı mysql-server paketlerinin, eğer kurulursa, bu durum üzerinde herhangi bir etkisi olmadığından çıkarılmaları gerekmeyeceklerini, fakat eğer kaldırılırsa bunları kullanan uygulamalarda sorunlara neden olabileceğini unutmayın.

Kullanıcıları bu sıkıntıya girmekten nasıl koruyabileceğimizi görmek için kesinlikle dokümanlarımızı tekrar ziyaret etmeye çalışacağız. Görüşlerinizi bizimle paylaştığınız için teşekkür ederiz.


2
İçin teşekkürler dpkg -l | grep mysql . Yönü anlamada yardımcı oldu.
Max Yudin,

temizleme işlemi için komut yanlıştı. sudo apt-get purge <pkg-name>Düzenlemeli olmalıyım , ancak: unicode karakterleri kullandım <çünkü aksi halde göstermezdi. Bu komutu yapıştırarak kopyalayın uyarılırsınız
Toskan

3

Benim durumumda, strace ile / var / run / mysqld / 'ın olmadığını ve mysqld' in mysqld.sock dosyasını oluşturamayacağını gördüm.

Bu komutlar sorunumu çözdü:

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

Şimdi:

systemctl start mysql

Ve mysql tekrar çalışıyor :)


Bu satırları / usr / share / mysql / mysql-systemd-start dizinine 25. Satırdan başlayarak eklemenizi öneririm, daha sonra her yeniden başlatmadan sonra bu dizini yeniden oluşturmak zorunda kalmayacaksınız (üzgünümce satır dönüşleri bu yorumda çalışmaz) : Eğer [ ! -d / run / msyqld]; sonra mkdir -p -m0755 / run / mysqld || {echo "/ run / mysqld oluşturulamıyor"; çıkış 1; } chown mysql: mysql / run / mysqld || {echo "Yutulamıyor / çalıştırılamıyor / mysqld"; çıkış 1; } fi
scoobydoo

3

Benim durumumda sorunu ekleyerek çözebilirim

# 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,

için /etc/apparmor.d/local/usr.sbin.mysqld

Daha fazla ayrıntı için stackoverflow'taki cevaba (ChristophS tarafından) bakın.


0

Ben de aynı sorunu yaşadım. MySQL'i birkaç kez yeniden yüklemeyi denedim, ancak başarılı olamadım.

Benim için problemin başka bir mysql işleminin zaten yürüyor olduğunu anladım.

Detaylarda:

Dikkatlice okuduktan sonra giriş yapıp şunu /var/log/mysql/error.logbuldum:

[ERROR] Sunucu başlatılamıyor: TCP / IP portuna bağla: Kullanımda olan adres

[ERROR] 3306 numaralı bağlantı noktasında çalışan başka bir mysqld sunucunuz var mı?

Başka bir uygulamanın zaten bağlantı noktasını kullandığı anlaşılıyor.

Kullanarak kontrol ettim 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=

Ve koşma sürecini ben öldürdüm sudo kill -15 14706

Sonra mysql başlattım: /etc/init.d/mysql start

Sonunda mysql benim için çalışıyor! Umarım birine yardım eder.


0

Bu sayfadaki cevapların hiçbiri benim için çalıştı.

Ben gidiş sona erdi Oracle indirme sayfasında , indirme mysql-apt-config_0.8.8-1_all.debve Oracle repo MySQL kurulumu:

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

2
isntall-> installyazım hatası. Aptal SO bir karakteri düzeltmeme izin vermiyor.
Csaba Toth

Neden mysql indirmek için kehanete
gittin

@Sinscary Bu cevap birazdan geri döndü, ancak muhtemelen sistem paket yöneticisinden daha yeni bir sürümleri olduğu içindi?
ostrokach

0

Ben şimdi birkaç sunucuda sorun oldu Düzeltme apt install phpmyadmin --reinstall çalıştırmak oldu

Bu, yukarıdakileri çözdü (daha sonra MySQL'e dokunmaya gerek kalmadan)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.