Mysql / tmp नहीं लिख सकता था, फिर से शुरू करने में विफल रहा


11

मैं orthomclप्रोग्राम चला रहा था जो उपयोग करता है mysql। यह प्रोग्राम ठीक उसी कंप्यूटर पर पहले संचालित किया गया है। इस बार मेरे पास एक त्रुटि संदेश था।

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.

मैंने mysqlसर्वर को पुनरारंभ करने का प्रयास किया , सर्वर बंद हो गया लेकिन शुरू करने में विफल रहा।

sudo service mysql start
start: Job failed to start

/var/log/mysql/error.logऔर /var/log/mysql.errखाली हैं। मैंने कुछ चीज़ें आज़माई हैं, जो मुझे यहाँ मिल रही हैं जिसमें शुद्ध करना और पुन: स्थापित करना mysql-serverऔर हटाना शामिल ib_logfile*है /var/lib/mysql

दूसरी चीज जो मैंने आजमाई है

sudo dpkg-reconfigure mysql-server-5.5

त्रुटि संदेश हैं:

/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

यहाँ से कुछ जानकारी हैं 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

इस तरह कई लाइनें थीं।

क्या कोई मुझे यह बताने में मदद कर सकता है कि मेरे MySQL सर्वर में क्या गड़बड़ है?

बहुत धन्यवाद।

जवाबों:


15

इसका कारण यह है कि आपके /tmpकिसी अन्य स्थान पर सहानुभूति है /home/tmp। लेकिन MySQL AppArmor द्वारा बख़्तरबंद है, जो स्वतंत्र रूप से लिखने की अनुमति नहीं देता है /home/tmp। स्थिति को मापने के लिए, आप इसे संपादित कर सकते /etc/apparmor.d/abstractions/user-tmpहैं और /home/tmpवहां उचित रूप से जोड़ सकते हैं ; मेरे लिए अतिरिक्त लाइनें

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

चाल चली।


1
उत्तम! मुद्दे को तुरंत हल किया। मुझे यकीन था कि सिम्बल के साथ इसका कुछ करना था!
योनोआरएन

1
मुझे प्रभावी होने के लिए बदलाव के लिए प्रशिक्षक को फिर से शुरू करना था:sudo /etc/init.d/apparmor restart
नदजीब मामी

6

ऐसा लगता है कि आपके पास सही अनुमति नहीं है /tmp, जिस पर विश्व की योग्यता होनी चाहिए। आपको इसे इस आदेश के साथ ठीक करने में सक्षम होना चाहिए:

sudo chmod 1777 /tmp

यह अनुमतियों को 777(सभी के लिए rwx) सेट करेगा और डिकी के लिए अनुशंसित चिपचिपा बिट भी सेट करेगा /tmp। जैसा कि समझाया गया है man chmod:

संक्षिप्त विवरण फ्लैग या स्टिकी बीआईटी

प्रतिबंधित विलोपन ध्वज या चिपचिपा बिट एक एकल बिट है, जिसकी व्याख्या फ़ाइल प्रकार पर निर्भर करती है। निर्देशिकाओं के लिए, यह अप्रकाशित उपयोगकर्ताओं को निर्देशिका में किसी फ़ाइल को हटाने या उसका नाम बदलने से रोकता है, जब तक कि वे फ़ाइल या निर्देशिका के स्वामी न हों; इसे निर्देशिका के लिए प्रतिबंधित विलोपन ध्वज कहा जाता है, और सामान्यतः विश्व-योग्य निर्देशिकाओं जैसे / tmp पर पाया जाता है। कुछ पुराने सिस्टम पर नियमित फ़ाइलों के लिए, बिट स्वैप प्रोग्राम पर प्रोग्राम की टेक्स्ट इमेज को बचाता है, इसलिए इसे चलाने पर अधिक तेज़ी से लोड होगा; इसे चिपचिपा सा कहा जाता है।


@ScottSeverance कृपया कोड को केवल परिवर्तन के लिए उद्धरण में न बदलें। हां मुझे पता है कि मैं उद्धृत कर रहा था, लेकिन कोड ब्लॉक बेहतर स्वरूपण देता है और हेडर और इंडेंट का सम्मान करता है। जिस तरह से आपने इसे संपादित किया, सब कुछ उसी लाइन पर है।
टेराडॉन

1
मैंने इसे बदल दिया क्योंकि जब इसे कोड के रूप में स्वरूपित किया जाता है तो मैं इसे लगातार क्षैतिज स्क्रॉलिंग के बिना अपने फोन पर नहीं पढ़ सकता। वास्तव में कोड के रूप में एक उद्धरण स्वरूपित करने का कोई लाभ नहीं है। यदि आपको एक ही पंक्ति में शीर्षक होना पसंद नहीं है, तो फोन पर उपयोगकर्ताओं के प्रदर्शन को तोड़े बिना इसे ठीक करने के तरीके हैं।
स्कॉट सेवेरेंस

@ScottSeverance आह, काफी निष्पक्ष, मुझे एहसास नहीं था कि यह फोन पर समस्याओं का कारण बना। ठीक है, मैं इसे एक उद्धरण ब्लॉक में डाल दूँगा। मैं सिर्फ इसलिए नाराज था क्योंकि आपका संपादन (बिना किसी स्पष्टीकरण के) सामान्य ब्राउज़रों पर बुरा लगता है और आपने यह नहीं जांचा कि यह सही तरीके से प्रस्तुत होता है। और आपने अभी फिर से संपादित किया है और यह एकदम सही है, धन्यवाद!
टेराडॉन

1
मेरा सही समाधान है। माईसर्कल की नियुक्ति की जाती है और एप्पर को /tmpबिना बदले हुए दूसरे स्थान पर ले जाया जाना पसंद नहीं है । ऑडिट बताते हैं कि यह फाइल सिस्टम पर अस्वीकृत अनुमति का मामला नहीं है, बल्कि अपीयर गार्ड्स का है।
अंती हापाला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.