मैंने कई समान प्रश्नों को देखा है और इसलिए मैं यह प्रदर्शित कर रहा हूं कि मैंने मूल बातें जांच ली हैं। हालांकि, इसका मतलब यह नहीं है कि मैंने कुछ पूरी तरह से स्पष्ट नहीं किया है। :-)
मेरा सवाल यह है: मुझे क्या करना है और क्या मैं पहले से ही पासवर्ड टाइप कर दिया है और मुझे एक्सेस की अनुमति है, ऐसा करने के लिए मुझे विशेषाधिकारों के साथ एक उपयोगकर्ता पर पहुंच से वंचित क्यों किया गया है? (पूर्णता की खातिर, मैंने सिर्फ यह सुनिश्चित करने के लिए गलत पासवर्ड टाइप करने की कोशिश की कि MySQL क्लाइंट मुझे शुरू में एक्सेस करने से वंचित कर दे।)
पृष्ठभूमि:
Ssh के माध्यम से MySQL सर्वर चलाने वाली मशीन के खोल में लॉग इन करें, मैं रूट के रूप में लॉग इन करता हूं:
[myname@host ~]$ mysql -u root -p -hlocalhost
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 62396
Server version: 5.5.18-log MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
बहुत बढ़िया। इसी तरह के सवालों के जवाबों के बारे में मेरे पढ़ने से पता चलता है कि मुझे यह सुनिश्चित करना चाहिए कि अनुदान तालिका में विशेषाधिकार क्या हैं
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
अगला सुनिश्चित करें कि मैं वह हूं जो मुझे लगता है कि मैं हूं:
mysql> SELECT user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
... और वास्तव में वास्तव में सुनिश्चित करें:
mysql> SELECT current_user();
+----------------+
| current_user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
mysql>
अब तक सब ठीक है। अब मेरे पास क्या विशेषाधिकार हैं?
mysql> SHOW GRANTS FOR 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '[OBSCURED]' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
अब यह पढ़ना थोड़ा कठिन है, इसलिए इस तरह से प्रयास करें (आपको यह भी देखने को मिलेगा कि एक गैर-लोकलहोस्ट 'रूट' उपयोगकर्ता है):
mysql> SELECT * FROM mysql.user WHERE User='root'\G
*************************** 1. row ***************************
Host: localhost
User: root
Password: *[OBSCURED]
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
*************************** 2. row ***************************
Host: [HOSTNAME].com
User: root
Password: *[OBSCURED]
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
2 rows in set (0.00 sec)
बहुत बढ़िया! MySQL सोचता है कि मैं रूट @ स्थानीयहोस्ट हूं और रूट @ स्थानीयहोस्ट के पास उन सभी विशेषाधिकार हैं। इसका मतलब है कि मुझे वह करने में सक्षम होना चाहिए जो मैं चाहता हूं, ठीक है?
mysql> GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
मैं कैसे इस बुनियादी कुछ खराब हो सकता है?
साइड नोट: जो कोई भी यह सुझाव देना चाहता है कि मेरे पास सभी विशेषाधिकारों के साथ रूट नाम का कोई उपयोगकर्ता नहीं है, यह बहुत अच्छा है और एक बार जब मैं किसी अन्य उपयोगकर्ता को कुछ विशेषाधिकार दे सकता हूं तो मैं कुछ करने पर विचार करूंगा।
धन्यवाद!
-p
और पासवर्ड के बीच एक जगह थी । मुझे पता है कि यह मूर्खतापूर्ण है लेकिन किसी की मदद कर सकता है।