/Var/lib/mysql/user.lower-test dosyası oluşturulamıyor


12

MySQL veritabanı birkaç aydır sorunsuzdur. Bugün Synaptic Paket Yöneticisi'ni kullanarak yükseltilebilir paketleri kontrol ettiğimde çeşitli MySQL bileşenleri (-common, -client, -server, vb.) İle geldi. Bu nedenle yükseltmeye karar verdim (yüklü sürümü not etmeyi unuttum, ancak 5.6.21 olduğunu düşünüyorum).

Error occured: Can't connect to MySQL server on '127.0.0.1' (111)

Daha sonra sunucunun çalışmadığını gördüm. Günlük dosyasında bu mesajı çok sevdim: -

Can't create file /var/lib/mysql/user.lower-test

Bir saat kadar hatta arama yaptım ve sorun daha önce bildirilmiş olmasına rağmen bir sonraki adımımdan emin olamadığım bir 'güncelleme sonrası' sorunu bağlamında görmedim.

Yanıtlar:


6

Bu sorunlar izin sorunları veya mysql veri direcory sonra / var / lib / mysql başka bir konuma değiştirmek gibi görünüyor.

Sudo ile koşmaya çalışın

/ Var / lib / mysql, mysql kullanıcısına aittir ve grup da mysql olarak ayarlanmıştır.

$ sudo chown -R mysql /var/lib/mysql
$ sudo chgrp -R mysql /var/lib/mysql
$ sudo chmod 755 /var/lib/mysql

/ Var / lib / mysql dizininin gerçekten var olduğunu ve veri dizininize uygun olduğunu kontrol ettiniz mi? Değilse, muhtemelen mysqld bölümünün altında datadir parametresini belirtmeniz gerekir.

[mysqld]
datadir=/var/lib/mysql

Daha sonra, MySQL'in yeni veri dizinini ve alt dizinlerini okumasına \ execute \ değiştirmesine izin vermek için apparmor'u yapılandırmayı seçebilir veya kendi sorumluluğunuzda apparmor'u kaldırabilirsiniz. Aşağıdakileri yapmak için root olmanız gerekebilir:

/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get purge apparmor
reboot

Bütün bunlardan geçtim ama boşuna. Yedeklemeleri yeniden yüklemeye karar verdim ve her şey sorun yaşadığım bir sorunu bar. Ama sorun Linux mu yoksa MySQL mi ...
MichaelJohn

@MichaelJohn hiçbir şey söyleyemez. bariz veya mysql paket bozulması olabilir
Mundra

Ubuntu Xenial'da: apparmoryüklediğinizde otomatik olarak kurulur ve etkinleştirilir mysql-server-5.6. Daha önce devre dışı bırakmış olsanız bile. apparmorBir bağımlılık olduğu için paketi kaldıramazsınız mysql-server-5.6. " service apparmor stop; service apparmor teardown; update-rc.d -f apparmor remove
/En/lib/mysql/user.lower-test

6

MySQL'in birden çok örneğini çalıştırmaya çalışırken bu soruna rastladım, ancak apparmor kaldırmak yerine usr.sbin.mysqld dosyasını güncelledim:

vim /etc/apparmor.d/usr.sbin.mysqld

Örneğin, dosyam bu şekilde görünüyor ve yazma izinlerine ihtiyaç duyan klasörleri eklediğimde hepsi gerektiği gibi çalıştı.

/usr/sbin/mysqld {

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/lib/mysql1/ r,
  /var/lib/mysql1/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /var/run/mysqld/mysqld1.pid rw,
  /var/run/mysqld/mysqld1.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

}

1
Bu benim için de işe yaradı. Bu işe almak için sunucuyu yeniden başlatmak zorunda kaldı - sadece durdurma ve AppArmour yeniden başlatmak işe yaramadı.
MikeHoss

3

/ Var / lib / mysql dosyasını başka bir diske taşımaya çalıştığımda ve orijinal dizini bir symlink ile değiştirmeye çalıştığımda sorun bana oldu.

Apparmor bu yapılandırmadaki erişimi reddedecek bkz.

bunun Apparmor geliştiricileri tarafından bir hata olmadığı düşünülüyor. Etrafında bir bağlama bağlama kullanmaktır. Görmek

bir açıklama için.

Yani

mount --bind /newmysqldatadir /var/lib/mysql
service mysql start

sorunu benim için düzeltti.


1

Benzer bir sorun yaşadım. Ubuntu Sunucusunu makineme yeniden yükledim, / etc / komutunun tam yedeklemesini yaptım, yeniden yükledikten sonra / drive / etc / dizininden sistemlerime / etc tüm önemli dosyaların bir kopyasını yaptım.

Bunu yaparken usr.sbin.mysqld.bak adlı usr.sbin.mysqld dosyası için bir bak oluşturdum ve aynı /etc/apparmor.d/ dizininde tuttum.

Daha fazla arama yapıldığında bu blog gönderisini buldum: https://blogs.oracle.com/jsmyth/apparmor-and-mysql

Apparmor-utils yüklendi ve / usr / sbin / mysqld üzerinde aa-şikayet etmeye çalıştı ve tanımlanmış 2 apparmor yapılandırmaya (her iki dosyama da) sahip olduğumu söyledi.

Karşılaştığınız sorun olmayabilir, ancak sadece netlik uğruna, apparmor sbin dizininin aynı dizininde bir yedekleme dosyası yaptığım kadar aptal olmayın.


0

Ayrıca bölümünüzün dolu olup olmadığını kontrol edin, bu benim durumumdu.

Bilinmeyen bir nedenden dolayı, verileri başka bir bölüme taşımak da işe yaramadı.

Hızlı bir düzeltme için, llvm veya gparted ile uğraşmak yerine, boyutumu küçülttüm /swapfile.

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.