Tuesday, July 15, 2014

MySQL, Ubuntu :: mysqld पहुँच अधिकार नहीं है

Original post: http://anothermysqldba.blogspot.com/2014/07/mysql-ubuntu-mysqld-does-not-have.html

तो आज मैं मैं कुछ तालिकाओं ठीक हो सकता है तो बैकअप से एक डाटाबेस बहाल करने की जरूरत के लिए होता है. मैं पोर्ट 3306 के माध्यम से चल रहा है वह उत्पादन डेटाबेस छोड़ दिया है, जबकि मैं बंदरगाह 3307 के माध्यम से बैकअप की स्थापना की. 

मैं एक mysql_restore निर्देशिका में 3307 पोर्ट के माध्यम से एक और संस्करण शुरू करने का प्रयास किया, लेकिन फिर भी, जब मैं कुछ त्रुटियों में भाग गया .... 


/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf 

[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test 
[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test 
Can't find file: './mysql/plugin.frm' (errno: 13) 

InnoDB: Completed initialization of buffer pool 
InnoDB: Operating system error number 13 in a file operation. 
InnoDB: The error means mysqld does not have the access rights to 
InnoDB: the directory. 
InnoDB: File name ./ibdata1 
InnoDB: File operation call: 'open'. 
InnoDB: Cannot continue operation. 

# perror 13 
OS error code 13: Permission denied 


तो मैं पहले, निर्देशिका पर जाँच की अनुमति यह 700 पर सेट किया और MySQL के स्वामित्व में था कि यह सुनिश्चित किया. मैं भी डेटा निर्देशिका के अंदर निर्देशिकाओं 700 करने के लिए सेट और MySQL के स्वामित्व में था कि यह सुनिश्चित किया. फाइल के बाकी सभी 600 (आरडब्ल्यू आरडब्ल्यू ----) के लिए निर्धारित किया है. बस मैं भी डिस्क पूर्ण नहीं था कि यह सुनिश्चित किया सुरक्षित करने के लिए. 

तो त्रुटि प्रवेश की अनुमति मुद्दों से पता चलता है लेकिन पहली नज़र में सभी अनुमतियाँ सही हैं. तो यह क्या है? 

मैं RHEL, या संबंधित शाखाओं पर था तो, मैं SELinux के बारे में सोचना होगा. यह किसी भी तरह यह अवरुद्ध हो गया था. 
Ubuntu निकल रहा है इस मामले में समीक्षा करने की जरूरत है. 


# cat /etc/apparmor.d/usr.sbin.mysqld 
... 
/var/lib/mysql/ r, 
/var/lib/mysql/** rwk, 
... 


डिफ़ॉल्ट "var / lib / MySQL" संबोधित किया जा रहा है कि नोटिस. मैं बनाया बहाल निर्देशिका हालांकि नहीं था. इसलिए कि और AppArmor का पुनरारंभ जोड़कर मैं तो सफलतापूर्वक MySQL शुरू करने में सक्षम था. 


# vi /etc/apparmor.d/usr.sbin.mysqld 
... 
/var/lib/mysql/ r, 
/var/lib/mysql/** rwk, 
/var/lib/mysql_restore/ r, 
/var/lib/mysql_restore/** rwk, 
... 
/etc/init.d/apparmor {start|stop|restart|reload|force-reload|status|recache} 
/var/lib/mysql_restore# /etc/init.d/apparmor restart 
... 
/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf 
... 
# mysql -P 3307 --socket=/var/lib/mysql_restore/mysqld_3307.sock 



समीक्षा के लिए अतिरिक्त यूआरएल अगर जरूरत: 

No comments:

Post a Comment