Bu hata iletisi, bir Docker görüntüsünde ubuntu 16.04 ve en son mysql 5.7.19-0ubuntu0.16.04.1 kullandığımda ortaya çıkıyor.
Bunu düzeltmek için ne yapılabilir?
Hatayı yeniden oluşturmak için
Alın
Dockerfile
:FROM ubuntu:16.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive apt install -y mysql-server
( burada da bulunabilir )
Oluşturun ve çalıştırın:
docker build -t mysqlfail . docker run -it mysqlfail tail -1 /var/log/mysql/error.log
aşağıdaki hata günlüğüne gösterilirdi:
2017-08-26T11: 48: 45.398445Z 1 [Uyarı] root @ localhost boş bir parola ile oluşturuldu! Lütfen --initialize-güvensizlik seçeneğini kapatmayı düşünün.
Tam olarak istediğimiz buydu: henüz root şifresi ayarlanmamış bir mysql.
Geçmişte (ubuntu 14.04 / mysql 5.5) a
service mysql start
mümkün olmuştur. Şimdi bunu denerseniz başarısız olurdocker run -it mysqlfail service mysql start * Starting MySQL database server mysqld No directory, logging in with HOME=/ [fail]
ve
/var/log/mysql/error.log
bir satır içeriyor:2017-08-26T11: 59: 57.680618Z 0 [HATA] Önemli hata: Ayrıcalık tabloları açılamıyor ve kilitlenemiyor: 'Kullanıcı' için tablo depolama motoru bu seçeneğe sahip değil
derleme günlüğü (tamamı için Dockerfile
)
Sending build context to Docker daemon 2.56kB
Step 1/4 : FROM ubuntu:16.04
---> ebcd9d4fca80
...
Step 4/4 : RUN service mysql start
---> Running in 5b899739d90d
* Starting MySQL database server mysqld
...fail!
The command '/bin/sh -c service mysql start' returned a non-zero code: 1
tuhaf devam
Yanıt girişimimde özetlendiği gibi deneylerden sonra ,
select count(*)
mysql alanındaki her bir tabloyu üst üste üç kez sorgulayın (deneyler bazı tablolarda sorgunun tam olarak iki kez başarısız olacağını göstermektedir :-().
Sonra bir
mysql_upgrade
ve
service mysql restart
denendi. Gelen Dockerfile
komut yoluyla ulaşılabilir yapılır
COPY mysqltest.sh .
Bu senaryo ile yapılan denemeler tuhaf / çılgın sonuçlar veriyor.
İçin
Docker environment
başlangıç hala başarısız[ERROR] Önemli hata: Ayrıcalık tabloları açılamıyor ve kilitlenemiyor: 'Kullanıcı' için tablo depolama motoru bu seçeneğe sahip değil
Komut dosyasını çalıştırma
sh mysqltest.sh root
içinde
docker environment
potansiyel satışları2017-08-27T09: 12: 47.021528Z 12 [HATA] / usr / sbin / mysqld: Tablo './mysql/db' çöktü olarak işaretlendi ve onarılması
gerekiyor 2017-08-27T09: 12: 47.050141Z 12 [HATA ] Tablo onarılamadı: mysql.db
2017-08-27T09: 12: 47.055925Z 13 [HATA] / usr / sbin / mysqld: Tablo './mysql/db' çöktü olarak işaretlendi ve onarılması
gerekiyor 2017-08 -27T09: 12: 47.407700Z 54 [HATA] / usr / sbin / mysqld: Tablo './mysql/proc' çöktü olarak işaretlenmiş ve onarılması
gerekiyor 2017-08-27T09: 12: 47.433516Z 54 [HATA] Düzeltilemedi ' t onarım tablosu: mysql.proc
2017-08-27T09: 12: 47.440695Z 55 [HATA] / usr / sbin / mysqld: Tablo './mysql/proc' çöktü olarak işaretlendi ve onarılması
gerekiyor 2017-08-27T09: 12: 47.769485Z 81 [HATA] / usr / sbin / mysqld: Tablo './mysql/tables_priv'kilitlendi olarak işaretlendi ve onarılması gerekiyor
2017-08-27T09: 12: 47.792061Z 81 [HATA] Tablo onarılamadı: mysql.tables_priv
2017-08-27T09: 12: 47.798472Z 82 [HATA] / usr / sbin / mysqld: Tablo './mysql/ tables_priv 'çöktü olarak işaretlendi ve onarılmalı
2017-08-27T09: 12: 47.893741Z 99 [HATA] / usr / sbin / mysqld: Tablo' ./mysql/user 'çöktü olarak işaretlendi ve onarılmalı
2017-08 -27T09: 12: 47.914288Z 99 [HATA] Tablo onarılamadı: mysql.user
2017-08-27T09: 12: 47.920459Z 100 [HATA] / usr / sbin / mysqld: Tablo './mysql/user' çöktü olarak işaretlendi ve onarılması gerekiyor
Bu tuhaf davranışa neden olmak için neler oluyor?