Mysql / tmp dosyasına yazılamadı sonra yeniden başlatılamadı


11

orthomclKullanan bir program çalıştırıyordum mysql. Bu program daha önce aynı bilgisayarda gayet iyi çalışıyor. Bu sefer bir hata mesajı aldım.

DBD::mysql::st execute failed: Can't create/write to file '/tmp/#sql_700_1.MYI' (Errcode: 13) at /usr/local/bioinf/orthomclSoftware-v2.0.9/bin/orthomclPairs line 709, <F> line 14.

mysqlSunucuyu yeniden başlatmayı denedim , sunucu kapatıldı ancak başlatılamadı.

sudo service mysql start
start: Job failed to start

/var/log/mysql/error.logve /var/log/mysql.errboş. Ben temizlemeyi içeren ve yeniden burada bulduğu bir kaç şey denedim mysql-serverve kaldırma ib_logfile*içinde /var/lib/mysql.

Denediğim diğer şey

sudo dpkg-reconfigure mysql-server-5.5

Hata mesajları:

/usr/sbin/mysqld: Can't create/write to file '/tmp/ibNzqwO0' (Errcode: 13)
InnoDB: Error: unable to create temporary file; errno: 13
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

İşte bazı bilgiler dmesg | grep mysql:

[3115187.338273] init: mysql main process (44255) terminated with status 1
[3115187.338417] init: mysql main process ended, respawning
[3115187.356361] init: mysql post-start process (44256) terminated with status 1
[3116827.473256] type=1400 audit(1396394069.224:132): apparmor="DENIED" operation="open" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/" pid=45396 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
[3116827.582489] type=1400 audit(1396394069.332:133): apparmor="DENIED" operation="mknod" parent=45387 profile="/usr/sbin/mysqld" name="/home/tmp/#sql_b154_0.MYI" pid=45402 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=0 ouid=0
[3116827.908448] type=1400 audit(1396394069.660:134): apparmor="DENIED" operation="mknod" parent=45317 profile="/usr/sbin/mysqld" name="/home/tmp/ibbPfaqP" pid=45415 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=118 ouid=118
[3116841.623608] type=1400 audit(1396394083.372:139): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=45443 comm="apparmor_parser"
[3116841.771621] init: mysql pre-start process (45474) terminated with status 1

Bunun gibi birçok çizgi vardı.

MySQL sunucumdaki sorunun ne olduğunu anlayabilen biri olabilir mi lütfen?

Çok teşekkürler.

Yanıtlar:


15

Bunun nedeni /tmp, başka bir yere bağlanmış olmanızdır /home/tmp. Ancak MySQL, özgürce yazılmasına izin vermeyen AppArmor tarafından zırhlanmıştır /home/tmp. Durumu düzeltmek için, onu uygun şekilde düzenleyebilir /etc/apparmor.d/abstractions/user-tmpve ekleyebilirsiniz /home/tmp; benim için ekstra çizgiler

  owner /home/tmp/**    rwkl,
  /home/tmp/            rw,

hile yaptı.


1
Mükemmel! Sorunu hemen çözdü. Symlink ile ilgisi olduğundan emindim!
YonoRan

1
Değişikliklerin yürürlüğe girmesi için apparmor'u yeniden başlatmak zorunda kaldım:sudo /etc/init.d/apparmor restart
Nadjib Mami

6

/tmpDünyada yazılabilir olması gereken doğru izinlere sahip olmadığınız anlaşılıyor. Bu komutla düzeltebilirsiniz:

sudo chmod 1777 /tmp

Bu izinleri 777(herkes için rwx) ve /tmpdir için önerilen yapışkan biti ayarlayacaktır . Açıklandığı gibi man chmod:

SINIRLI SİLME BAYRAKLIĞI VEYA STICKY BIT

Kısıtlanmış silme bayrağı veya yapışkan bit, yorumu dosya türüne bağlı olan tek bir bittir. Dizinler için, ayrıcalıksız kullanıcıların dosyaya veya dizine sahip olmadıkları sürece dizindeki bir dosyayı kaldırmasını veya yeniden adlandırmasını engeller; buna dizin için kısıtlı silme bayrağı denir ve / tmp gibi dünya çapında yazılabilir dizinlerde bulunur. Bazı eski sistemlerde normal dosyalar için, bit programın metin görüntüsünü takas cihazına kaydeder, böylece çalıştırıldığında daha hızlı yüklenir; buna yapışkan bit denir.


@ScottSeverance lütfen kodu sadece değişiklik uğruna tırnak işareti ile değiştirmeyin. Evet ben alıntı olduğunu biliyorum ama kod bloğu daha iyi biçimlendirme verir ve üstbilgi ve girintiye saygı. Düzenleme şekliniz her şey aynı çizgide.
terdon

1
Değiştirdim çünkü kod olarak biçimlendirildiğinde sürekli yatay kaydırma yapmadan telefonumda okuyamıyorum. Bir alıntıyı kod olarak biçimlendirmenin hiçbir yararı yoktur. Başlığın aynı satırda olmasını sevmiyorsanız, telefondaki kullanıcıların ekranlarını bozmadan bunu düzeltmenin yolları vardır.
Scott Severance

@ScottSeverance ah, yeterince adil, bunun telefonlarda sorunlara neden olduğunu fark etmemiştim. Tamam, bir alıntı bloğuna koyacağım. Düzenlemeniz (hiçbir açıklama olmadan) normal tarayıcılarda daha kötü görünüyor ve düzgün bir şekilde görüntülenip görüntülenmediğini kontrol etmediğiniz için rahatsız oldum. Ve tekrar düzenlediniz ve mükemmel, teşekkürler!
terdon

1
Benimki doğru çözüm. Mysql bariz ve apparmor /tmp, confs değiştirmeden başka bir yere taşınmasını sevmez. Denetimler, bunun dosya sisteminde reddedilen izin meselesi olmadığını, ancak bariz korumaları olduğunu söylüyor.
Antti Haapala
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.