फ़ाइल /var/lib/mysql/user.lower-test नहीं बना सकते


12

MySQL डेटाबेस कुछ महीनों के लिए समस्या मुक्त रहा है। आज जब मैंने Synaptic Package Manager का उपयोग करके अपग्रेड करने योग्य पैकेजों के लिए जाँच की तो यह विभिन्न MySQL घटकों (असामान्य, -client, -server, आदि) के साथ आया। इसलिए मैंने अपग्रेड करने का फैसला किया (मैं इंस्टॉल किए गए संस्करण को नोट करना भूल गया लेकिन लगता है कि यह 5.6.21 था) से 5.6.25-1-ubuntu2.0 तक। इसके बाद जब मैं डेटाबेस को क्वेरी करने गया तो मुझे संदेश मिला: -

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

मैंने पाया कि सर्वर नहीं चल रहा था। लॉग फ़ाइल में मुझे संदेश मिलता है कि: -

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

मैंने एक-एक घंटे बिताए हैं और लाइन पर खोज कर रहा है, हालाँकि यह समस्या पहले भी बताई जा चुकी है क्योंकि मैंने इसे 'पोस्ट-अपडेट' मुद्दे के संदर्भ में अपने अगले चरण के बारे में अनिश्चित नहीं देखा है।

जवाबों:


6

यह समस्या समस्याओं को अनुमति देने या mysql डेटा को अन्य स्थान पर / var / lib / mysql में बदलने के लिए लगती है।

सूडो के साथ चलने की कोशिश करें

ऐसा लगता है जैसे / var / lib / mysql mysql उपयोगकर्ता के स्वामित्व में है और समूह mysql पर भी सेट है।

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

क्या आपने जाँच की है कि निर्देशिका / var / lib / mysql वास्तव में मौजूद है और आपकी डेटा निर्देशिका से मेल खाती है? यदि ऐसा नहीं होता है, तो आपको संभवतः mysqld सेक्शन के तहत डेटादिर पैरामीटर को निर्दिष्ट करना होगा

[mysqld]
datadir=/var/lib/mysql

फिर आप MySQL को नई डेटा निर्देशिका और उप निर्देशिकाओं को पढ़ने या संशोधित करने की अनुमति देने के लिए अप्पर्मिंग को कॉन्फ़िगर करने के बीच चुना जा सकता है या, अपने स्वयं के जोखिम पर, आप apparmor को हटा सकते हैं। आपको निम्नलिखित करने के लिए रूट होने की आवश्यकता हो सकती है:

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

मैं इस सब से गुज़रा लेकिन कोई फायदा नहीं हुआ। बैकअप लेने के बाद मैंने पुनः स्थापित करने का फैसला किया और सब कुछ काम करता है एक मुद्दा जो मैंने जारी किया है। लेकिन क्या समस्या लिनक्स है या यह MySQL है ...
माइकल जॉन

@MichaelJohn कुछ नहीं कह सकता। यह अप्परमोर या माईस्कल पैकेज भ्रष्टाचार हो सकता है
हितेश मुंद्रा

Ubuntu Xenial पर: apparmorस्वचालित रूप से स्थापित और सक्षम है जब आप स्थापित करते हैं mysql-server-5.6। भले ही आपने पहले इसे निष्क्रिय कर दिया हो। आप apparmorपैकेज को हटा नहीं सकते क्योंकि यह निर्भरता है mysql-server-5.6। आप "फ़ाइल /var/lib/mysql/user.lower-test नहीं बना सकते हैं" त्रुटि को हल करकेservice apparmor stop; service apparmor teardown; update-rc.d -f apparmor remove
Jeroen Vermeulen - MageHost

6

जब मैं MySQL के कई उदाहरणों को चलाने की कोशिश कर रहा था, तो मैं इस समस्या में भाग गया, लेकिन apparmor को हटाने के बजाय, मैंने usr.sbin.mysqld फ़ाइल को अपडेट किया:

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

उदाहरण के लिए, यह वही है जो मेरी फ़ाइल की तरह दिखता है, और एक बार मैंने उन फ़ोल्डरों को जोड़ा, जिन्हें लिखने की अनुमति की आवश्यकता है, सभी को यह काम करना चाहिए।

/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
इसने मेरे लिए भी काम किया। मुझे यह काम करने के लिए सर्वर को पुनरारंभ करना पड़ा - बस रोकना और पुनः आरंभ करना AppArmour ने काम नहीं किया।
18

3

यह समस्या मेरे साथ तब हुई जब मैंने / डिस्क / lib / mysql को किसी अन्य डिस्क पर ले जाने और मूल निर्देशिका को सिमलिंक से बदलने का प्रयास किया।

अपर्चर इस कॉन्फ़िगरेशन देखें में पहुंच से इनकार करेगा

क्यों यह Apparmor डेवलपर्स द्वारा एक बग नहीं माना जाता है। चारों ओर का काम एक बाँध माउंट का उपयोग करना है। देख

स्पष्टीकरण के लिए।

इसलिए

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

मेरे लिए मुद्दा तय किया।


1

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। मैंने अपनी मशीन पर उबंटू सर्वर को फिर से इंस्टॉल किया, हार्ड ड्राइव पर / etc / का पूरा बैकअप बनाया, फिर से इंस्टॉल करने के बाद मैंने अपने सिस्टम / etc से / ड्राइव / etc / सभी महत्वपूर्ण फाइलों की एक कॉपी बनाई।

ऐसा करते समय, हमने usr.sbin.mysqld फ़ाइल के लिए एक बेक बनाया, जिसे usr.sbin.mysqld.bak कहा जाता है और इसे उसी /etc/apparmor.d/ निर्देशिका में रखा है।

और खोज करने पर मुझे यह ब्लॉग पोस्ट मिला: https://blogs.oracle.com/jsmyth/apparmor-and-mysql

Apparmor- बर्तनों को स्थापित किया और / usr / sbin / mysqld पर शिकायत करने की कोशिश की और यह कहा कि मेरे पास 2 apparmor configs परिभाषित है (मेरी दोनों फाइलें)।

मैं जानता हूं कि यह वह समस्या नहीं हो सकती है जिसका आप सामना कर रहे हैं, लेकिन सिर्फ स्पष्टता के लिए, मैं जैसा था वैसा गूंगा मत बनो, एक ही फाइल को एपर्मर एसबिन डायरेक्टरी की निर्देशिका में बनाना।


0

यह भी जांचें कि क्या आपका विभाजन पूर्ण नहीं है, जो मेरा मामला था।

किसी अज्ञात कारण से, डेटा को दूसरे विभाजन में ले जाने से भी काम नहीं चला।

तो एक त्वरित तय करने के लिए, llvm या gparted के साथ खिलवाड़ करने के बजाय, मैंने अपना /swapfileआकार कम कर दिया ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.