16.04 yükseltme mysql-server kırdı

111

Genel yükseltmem iyi geçti, ancak mysql-server'ın kendini yükleyemediği kritik bir şekilde devam eden bir sorunu bıraktım ve denediğim hiçbir şey işe yaramıyor.

Bunu yüklemeye / yeniden yüklemeye çalışırken gördüğüm hata:

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)

Bağımlılıklar nedeniyle MariaDB'yi yüklemeyi denedim, ancak tamamen kaldırmayı denedim. Bunu düzeltmek için neler yapabileceğime dair herhangi bir öneri en hoş geldiniz.

DÜZENLEME: Tek ben değilim: İşte

    
sordu TheGremlyn 22.04.2016 19:53

8 cevap

111

Bana bildirilen @ andrew-beerman'ın talimatları doğru yoldalar, ancak bana göre çok açık değiller ve gerekli olandan fazlasını tavsiye ediyorlar. Yukarıdaki cevabı bir araya getirdim ve hata iş parçacığında yardımcı bir gönderi oluşturdum.

Bunlar, bunu düzeltmek için attığım adımlar:

  1. my.cnf file 'nizi /etc/mysql olarak yedekleyin ve kaldırın veya yeniden adlandırın

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

    kullanarak kaldır
    sudo rm -r /etc/mysql/mysql.conf.d/
    
  3. Başka bir yere yerleştirilmiş my.cnf dosyanız olmadığını (evimde direk yaptım) veya /etc/alternatives/my.cnf kullanımında

    olduğunu doğrulayın.
    sudo find / -name my.cnf
    
  4. /etc/mysql/debian.cnf dosyalarını yedekleyin ve kaldırın (gerekip gerekmediğinden emin olun, ancak tam tersi 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. Syslog'unuzun "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
    

    Ardından servis sudo service mysql start ile başlayabilmelidir.

Çalıştırdı!

    
verilen cevap TheGremlyn 25.04.2016 15:38
54

Bugün aynı sorunla karşılaştım, birçok çözümü denedikten sonra problemin% co_de komutunun MySQL otomatik başlatmayı devre dışı bıraktığını belirlediğimi anladım, bu yüzden çalışmam için yeniden MySQL sunucusunu kullanarak tekrar çalıştırdım komutu% % co_de ve yükseltme işlemini tekrar çalıştırın ve mükemmel şekilde sonlandırıldı.

    
verilen cevap Naruto Biju Mode 26.04.2016 00:37
17

Buradaki talimatlar sunucumda düzeltildi: İşte

  

Sisteminizin tutarsız halde olmasının acılarını anlayabilirim   ama tüm durum için endişelenmeyin ve adım adım atalım   sistemi temizlemek için.

     

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

     

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

     

ii) Yüklü rc) Kaldırılmış config dosyaları tutuluyor (Bu durum devlet olmalı   'apt-get remove' ile kaldırdığınız tüm paketlerin   / etc altındaki config dosyalarını kaldırmaz.

     

Bunun işe yaraması için, 'apt-get purge' uygulamasını çalıştırmanız gerekecek.   Yukarıdaki listede hiç paket görmüyorsunuz.

     

Lütfen bazı mysql-olmayan paketlerin   python-mysql.connector ve python-mysqldb, eğer kuruluysa,   bu durum üzerinde herhangi bir etkisi olmadığından kaldırıldıysa   kaldırılmış, bunları kullanan uygulamalarda sorun olabilir.

     

Nasıl yapılabileceğini görmek için dokümanlarımızı tekrar ziyaret etmeye çalışacağız   Kullanıcıların bu belaya girmesini engelleyebilir. Paylaşım için teşekkürler   Görüşlerinizi bizimle birlikte.

    
verilen cevap Andrew Beeman 23.04.2016 00:05
17

Hata iletiniz şu satırı içerir:

subprocess installed post-installation script returned error exit status 1

Ancak, bu installed post-installation script ad tarafından belirtilmemiş. Daha fazla tinkering sonra, onun adını (benim durumumda) /var/lib/dpkg/info/mysql-server-5.7.postinst olduğunu öğrendim.

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

Üstte, satır 3'ü değiştirin (ya da öylesine): set -e - set -x , dosyayı kaydedin. ( -e değeri "hatalardan çıkış", -x "açıkça komutun yürütülmesini gösterir" anlamına gelir)

sudo dpkg --configure -a --log /tmp/dpkg.log çalıştır (--log seçeneği isteğe bağlıdır). Ayrıca, yükseltilecek tek paketin olacağını biliyorsanız apt upgrade 'yi de çalıştırabilirsiniz.

Artık mysql-server-5.7.postinst bash betiğinin ayrıntılı çıktısını alıyorsunuz ve neyin yanlış olduğunu anlayabilirsiniz.

Benim durumumda başarısız oldu, mysql_upgrade çalışmasına (re-) çalıştı, ancak özelleştirilmiş mysql yüklemem için bu gerekli değildi. Emindim Önce, başarılı bir şekilde el ile çalıştırdım ve her şey yolunda gitti.

Bu yüzden 321 satırını bitirdim (eski mysqld sürümleri için 281 numaralı satırı 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ın), başarıyla tamamlandı ve dpkg bu paketin hata durumunu kaldırdı.

Artık set -x 'yi set -e ' ye (yukarıda belirtilen) getirebilirsiniz. Ve isteğe bağlı olarak mysql-yükseltme hattını uncomment.

Eğer mysql veri bölümünüzü standart olmayan bir yere taşıdıysanız ekstra çalışma gerekebilir. Benimkini /var/lib/mysql/data 'den sembolik link üzerinden farklı bir sürücüye taşıdım. Ardından, postinst script manipülasyonundan önce sembolik bağı geçici olarak kaldırmanız gerekebilir. Ardından paket yükseltmesini çalıştırdıktan sonra yeniden oluşturun.

Mysqld debian paketinin sonraki küçük sürüm yükseltmesinden sonra, /var/lib/dpkg/info/mysql-server-5.7.postinst betiğindeki bu sorun yine görünebilir.

    
verilen cevap knb 01.07.2016 14:03
3

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

Bu komutlar benim 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ışır:)

    
verilen cevap Leonardo Catalinas 27.04.2016 10:14
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,

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

Daha fazla ayrıntı için cevabını (ChristophS'e göre) stackoverflow'ta.

    
verilen cevap ChristophS 29.04.2016 14:30
1

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

Oracle indirme sayfasına gidip mysql-apt-config_0.8.8-1_all.deb dosyasını indirip Oracle Repo’dan MySQL’i yükledim:

sudo dpkg -i mysql-apt-config_0.8.8-1_all.deb
sudo apt update
sudo apt install mysql-server
    
verilen cevap ostrokach 25.09.2017 19:19
0

Aynı sorunu yaşadım. Birkaç kez mysql'i yeniden yüklemeyi denedim, ancak hiçbir başarı elde edemedim.

Problemin benim için bir başka mysql işleminin zaten çalışıyor olduğunu anladım.

Ayrıntılarda:

Dikkatlice okuduktan sonra /var/log/mysql/error.log 'da giriş yapın ve bulundu:

  

[ERROR] Sunucu başlatılamıyor: TCP / IP bağlantı noktasına bağlanın: Adres zaten   kullanmak

     

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

Başka bir uygulamanın zaten bağlantı noktasını kullanıyormuş gibi görünüyor.

ps -aux | grep 3306 kullanarak kontrol ettim:

$ 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 çalışan işlemi sudo kill -15 14706

öldürdüm

Sonra mysql: /etc/init.d/mysql start

başlattım

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

    
verilen cevap milkovsky 20.08.2016 22:02

Etiketlerdeki diğer soruları oku