यदि मौजूद नहीं है तो mysql उपयोगकर्ता बनाएं


94

नए उपयोगकर्ता बनाने के लिए mysql उपयोगकर्ताओं की सूची की जाँच करने के लिए मेरे पास एक क्वेरी है।

IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = '{{ title }}')) = 0 THEN
    CREATE USER '{{ title }}'@'localhost' IDENTIFIED BY '{{ password }}'
END IF;

लेकिन मुझे यह त्रुटि मिली:

ERROR 1064 (42000) at line 3: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (SELECT EXISTS(SELECT 1 FROM `mysql`.`user` WHERE `user` = 'cms_localhost')) = 0 ' at line 1

जवाबों:


275

5.7.6 और इसके बाद के संस्करण में, आपको उपयोग करने में सक्षम होना चाहिए CREATE USER

CREATE USER IF NOT EXISTS 'user'@'localhost' IDENTIFIED BY 'password';

ध्यान दें कि 5.7.6 विधि वास्तव में कोई अनुमति नहीं देती है।


यदि आप ऐसे संस्करण का उपयोग नहीं कर रहे हैं जिसमें यह क्षमता है (5.7.6 से नीचे कुछ), तो आप निम्न कार्य कर सकते हैं:

GRANT ALL ON `database`.* TO 'user'@'localhost' IDENTIFIED BY 'password';

यदि यह मौजूद नहीं है तो यह उपयोगकर्ता का निर्माण करेगा


ध्यान दें, यदि आप MySQL 8 पर हैं, तो GRANT ALLविधि एक उपयोगकर्ता नहीं बनाएगी।


3
क्या यह पासवर्ड बदलता है यदि उपयोगकर्ता मौजूद था और एक अलग पासवर्ड था?
m3z

5
नेवरमाइंड - मेरे अपने प्रश्न का उत्तर दिया - हाँ यह करता है - लेकिन यह उपयोगकर्ता को प्रतिस्थापित नहीं करता है यदि होस्ट अलग है
m3z

1
@ m3z तकनीकी रूप से, यदि आपके पास उपयोगकर्ता हैं जो दो अलग-अलग मेजबानों पर लॉग इन कर सकते हैं, तो वे एक ही उपयोगकर्ता नहीं हैं। उनके पास अलग-अलग अनुमतियां, अलग-अलग पासवर्ड और सब कुछ हो सकता है।
Ascherer

1
हां @ सराउंडर, हालांकि वह सुरक्षा छेद छोड़ देता है। जागरूक रहें।
21

1
इसका एकमात्र असुरक्षित यदि आप एक पासवर्ड @ B166ER निर्दिष्ट नहीं करते हैं, जो .... duh।
Ascherer

-3

मैं उपयोग करता हूं

चयन करें ( चयनित सूची userसे चयन करें mysqluserकहां user= "उपयोगकर्ता नाम") is_user है

1 मौजूद है या नहीं तो 0 वापस आना चाहिए


2
सवाल यह नहीं है कि कैसे जांच की जाए, बल्कि कैसे बनाई जाए
व्लाद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.