2013-10-08 10 views
12

पर विशेषाधिकार प्रदान नहीं कर सकता है मेरे पास MySQL सर्वर संस्करण है: 5.5.32-0ubuntu0.12.04.1 (उबंटू) ने लिनक्स उबंटू 12.04 एलटीएस स्थापित किया है।mysql डेटाबेस

मुझे लगता है कि रूट के रूप में सभी अनुमतियां हैं। मैं एक उपयोगकर्ता और एक डीबी बना सकते हैं। हालांकि, मैं उपयोगकर्ता को डीबी को सभी अनुमतियां नहीं दे सकता।

मेरे .my.cnf:

[client] 
user=root 
password=test 

मैं mysql -u root -h localhost -p के माध्यम से प्रवेश करते हैं, लेकिन मैं -p विकल्प के बिना प्रवेश नहीं कर सकते हालांकि मैं .my.cnf है (नहीं एक मुद्दा है, लेकिन अजीब)।

जड़ उपयोगकर्ताओं का एक समूह थे, तो मैं उनमें से छुटकारा पा लिया है और मैं इन उपयोगकर्ताओं है:

mysql> SELECT host,user,password FROM mysql.user; 
+-----------+------------------+-------------------------------------------+ 
| host  | user    | password         | 
+-----------+------------------+-------------------------------------------+ 
| localhost | root    | ***************************************** | 
| localhost | debian-sys-maint | ***************************************** | 
+-----------+------------------+-------------------------------------------+ 

mysql> SHOW GRANTS FOR 'root'@'localhost'; 
+----------------------------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]                       | 
+----------------------------------------------------------------------------------------------------------------------+ 
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*****************************************' | 
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION               | 
+----------------------------------------------------------------------------------------------------------------------+ 

अब, मैं एक डाटाबेस, एक उपयोगकर्ता बना। जब मैं अनुमति देता हूं तो अंतिम पंक्ति एक त्रुटि दिखाती है। क्या आप कृपया मुझे बता सकते हैं कि मुझे यह त्रुटि क्यों मिल रही है और मैं यह काम करने के लिए क्या कर सकता हूं?

mysql> create database staging; 
Query OK, 1 row affected (0.00 sec) 

mysql> CREATE USER 'staging'@'localhost' IDENTIFIED BY 'test'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> GRANT ALL PRIVILEGES ON staging.* TO 'staging'@'localhost'; 
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'staging' 

उत्तर

30

सबसे पहले, उपयोगकर्ता के रूप में लॉग इन किया पहचानें:

select user(); select current_user(); 

पहले आदेश के लिए परिणाम क्या आप के लिए लॉग इन करने का प्रयास किया है जैसा कि, दूसरा वही है जो आप वास्तव में जुड़े हुए हैं। पुष्टि करें कि आप mysql में [email protected] के रूप में लॉग इन हैं।

मुद्दा यह था कि जिस इंस्टॉलेशन के साथ मैं आया था, Grant_priv[email protected] प्रदान नहीं किया गया था। यहां बताया गया है कि आप कैसे जांच सकते हैं।

mysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user; 
+-----------+------------------+-------------------------------------------+------------+------------+ 
| host  | user    | password         | Grant_priv | Super_priv | 
+-----------+------------------+-------------------------------------------+------------+------------+ 
| localhost | root    | ***************************************** | N   | Y   | 
| localhost | debian-sys-maint | ***************************************** | Y   | Y   | 
| localhost | staging   | ***************************************** | N   | N   | 
+-----------+------------------+-------------------------------------------+------------+------------+ 

आप देख सकते हैं कि Grant_priv रूट @ localhost के लिए एन पर सेट है। यह वाई होना चाहिए। यहां बताया गया है कि मैंने इसे कैसे तय किया:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root'; 
FLUSH PRIVILEGES; 
GRANT ALL ON *.* TO 'root'@'localhost'; 

मुझे कुछ अनुमति त्रुटि मिली, लेकिन जब मैंने वापस लॉग इन किया, तो यह ठीक था।

+0

हाँ। निश्चित रूप से लॉग आउट करना होगा और वापस आना होगा। मदद के लिए धन्यवाद! – Slayer6

9

देने अनुमतियों के बाद फ्लशिंग विशेषाधिकार कोशिश

GRANT ALL PRIVILEGES ON staging.* TO 'staging'@'localhost' IDENTIFIED BY 'test'; 
FLUSH PRIVILEGES; 
+0

जब मैं अनुमति देता हूं तो मुझे त्रुटि मिल रही है। 'फ्लश प्राइवेट्स;' कोई फर्क नहीं पड़ेगा क्योंकि अनुदान अनुमति आदेश स्वीकार नहीं किया गया है। – Trewq

+0

मेरा जवाब देखें, मैंने इसे अपडेट किया। – xiriusly

+0

देने के बाद 'परीक्षण' द्वारा पहचानें मुझे एक ही समस्या मिल रही है। यह उपयोगकर्ता की 'रूट' @ 'लोकलहोस्ट' के बारे में शिकायत नहीं कर रहा है ... क्या कोई चीज है जो रूट को सत्यापित करने के लिए मैं कर सकता हूं? – Trewq

3

जो लोग अभी भी तरह मैंने किया था इस पर आते हैं के लिए, यह सुनिश्चित करें कि कोशिश की GRANT पहले से ही नहीं है बनाने के लिए जाँच के लायक है मौजूद हैं:

SHOW GRANTS FOR username; 

मेरे मामले में, त्रुटि वास्तव में, क्योंकि वहाँ कोई अनुमति नहीं थे त्रुटि, लेकिन क्योंकि GRANT पहले से मौजूद है।