MySQL में ERROR 1396 (HY000): Operation CREATE USER failed आमतौर पर तब होता है जब आप जिस यूज़र को बनाने की कोशिश कर रहे हैं, वह पहले से मौजूद होता है (भले ही अलग होस्ट के साथ), या मेटाडेटा में अवशेष रह गए हों। सही तरीके से यूज़र बनाने और समस्या निवारण के चरण यहां दिए गए हैं।
सही यूज़र निर्माण सिंटैक्स
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
उदाहरण: यूज़र 'Emma' बनाना
mysql> CREATE USER 'Emma'@'localhost' IDENTIFIED BY 'emma_654'; Query OK, 0 rows affected (0.00 sec)
मौजूदा यूज़र सूची देखें
mysql> SELECT user, host FROM mysql.user;
आउटपुट (नया यूज़र 'Emma'@'localhost' सूची में दिखेगा):
+------------------+-----------+ | user | host | +------------------+-----------+ | Bob | % | | Charlie | % | | ... | ... | | Emma | localhost | -- नया यूज़र | ... | ... | +------------------+-----------+
ERROR 1396 के सामान्य कारण और समाधान
1. यूज़र पहले से मौजूद है (अलग होस्ट के साथ)
-- जांचें SELECT user, host FROM mysql.user WHERE user = 'Emma'; -- समाधान: पहले ड्रॉप करें DROP USER 'Emma'@'%'; DROP USER 'Emma'@'localhost'; -- फिर बनाएं CREATE USER 'Emma'@'localhost' IDENTIFIED BY 'password';
2. MySQL 8.0+ में ऑथेंटिकेशन प्लगइन समस्या
-- डिफ़ॉल्ट caching_sha2_password के बजाय mysql_native_password उपयोग करें CREATE USER 'Emma'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
3. FLUSH PRIVILEGES की आवश्यकता (पुराने संस्करण)
FLUSH PRIVILEGES;
4. आंशिक रूप से बने यूज़र को साफ करें
-- mysql.user में अवशेष जांचें DELETE FROM mysql.user WHERE user = 'Emma' AND host = 'localhost'; FLUSH PRIVILEGES;
यूज़र बनाने के बाद अधिकार दें
GRANT ALL PRIVILEGES ON database_name.* TO 'Emma'@'localhost'; FLUSH PRIVILEGES;
बेस्ट प्रैक्टिस
- होस्ट निर्दिष्ट करें:
'user'@'localhost'(स्थानीय),'user'@'%'(कोई भी होस्ट) - मजबूत पासवर्ड उपयोग करें
- न्यूनतम आवश्यक विशेषाधिकार दें (Least Privilege सिद्धांत)
- नियमित रूप से यूज़र ऑडिट करें
यदि एरर बनी रहती है, तो MySQL एरर लॉग जांचें और सुनिश्चित करें कि mysql सिस्टम टेबल क्षतिग्रस्त नहीं हैं।