शुक्रवार, 18 जुलाई 2014

MySQL secure_auth त्रुटि

Original post: http://anothermysqldba.blogspot.com/2014/07/mysql-secureauth-error.html

मैं पहले secure_auth त्रुटियों को संबोधित जब इस में यह ब्लॉक प्रतिकृति ब्लॉग पोस्ट . 

हालांकि, मैं MySQL ग्राहकों के माध्यम से जोड़ने जब मैं इस ब्लॉग में एक अधिक सामान्य तय पोस्ट बनाने लगा. इस MySQL 5.6 से पहले सर्वर के लिए है. 

तो MySQL निम्नलिखित कदम को कनेक्शन इस त्रुटि स्पष्ट करना चाहिए जब आप एक secure_auth त्रुटि मिलती है. 

+---------------+-------------------------------------------+ 
| User | Password | 
+---------------+-------------------------------------------+ 
| authdtestuser | 34d22ac342c35af2
 +---------------+-------------------------------------------+ 
| User | Password | 
+---------------+-------------------------------------------+ 
| authdtestuser | 34d22ac342c35af2 | |+---------------+-------------------------------------------+ 

SELECT @@session.old_passwords, @@global.old_passwords; +-------------------------+------------------------+ 
| @@session.old_passwords | @@global.old_passwords | 
+-------------------------+------------------------+ 
| 1 | 1 | 
+-------------------------+------------------------+ 

mysql> SET @@session.old_passwords = 0; SET @@global.old_passwords=0; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT @@session.old_passwords, @@global.old_passwords; 
+-------------------------+------------------------+ 
| @@session.old_passwords | @@global.old_passwords | 
+-------------------------+------------------------+ 
| 0 | 0 | 
+-------------------------+------------------------+ 
1 row in set (0.00 sec) 

mysql> SET PASSWORD FOR 'authdtestuser'@'localhost' = PASSWORD('sshthisisasecret'); 
Query OK, 0 rows affected (0.00 sec) 

mysql> select User , Password from mysql.user where User = 'authdtestuser'; 
+---------------+-------------------------------------------+ 
| User | Password | 
+---------------+-------------------------------------------+ 
| authdtestuser | *E48BD8BF1B9F29459E5284AD158443B5B33B70E4 | 
+---------------+-------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> SET @@session.old_passwords = 1; SET @@global.old_passwords=1; 

mysql> SELECT @@session.old_passwords, @@global.old_passwords; 
+-------------------------+------------------------+ 
| @@session.old_passwords | @@global.old_passwords | 
+-------------------------+------------------------+ 
| 1 | 1 | 
+-------------------------+------------------------+ 
1 row in set (0.00 sec) 
| |+---------------+-------------------------------------------+ 

SELECT @@session.old_passwords, @@global.old_passwords; +-------------------------+------------------------+ 
| @@session.old_passwords | @@global.old_passwords | 
+-------------------------+------------------------+ 
| 1 | 1 | 
+-------------------------+------------------------+ 

mysql> SET @@session.old_passwords = 0; SET @@global.old_passwords=0; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT @@session.old_passwords, @@global.old_passwords; 
+-------------------------+------------------------+ 
| @@session.old_passwords | @@global.old_passwords | 
+-------------------------+------------------------+ 
| 0 | 0 | 
+-------------------------+------------------------+ 
1 row in set (0.00 sec) 

mysql> SET PASSWORD FOR 'authdtestuser'@'localhost' = PASSWORD('sshthisisasecret'); 
Query OK, 0 rows affected (0.00 sec) 

mysql> select User , Password from mysql.user where User = 'authdtestuser'; 
+---------------+-------------------------------------------+ 
| User | Password | 
+---------------+-------------------------------------------+ 
| authdtestuser | *E48BD8BF1B9F29459E5284AD158443B5B33B70E4 | 
+---------------+-------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> SET @@session.old_passwords = 1; SET @@global.old_passwords=1; 

mysql> SELECT @@session.old_passwords, @@global.old_passwords; 
+-------------------------+------------------------+ 
| @@session.old_passwords | @@global.old_passwords | 
+-------------------------+------------------------+ 
| 1 | 1 | 
+-------------------------+------------------------+ 
1 row in set (0.00 sec) 

मंगलवार, 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 



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