मैं यहां बिल से असहमत हूं और एटमिक्स की सोच अधिक उपयुक्त है। जब तक इसे अन्यथा प्रदर्शित नहीं किया जा सकता है, बिल का उत्तर डेटाबेस से समझौता किए जाने के जोखिम को अत्यधिक बढ़ा देता है।
शायद बहुत अनुभवी डेवलपर्स के लिए जगह में अन्य सुरक्षा है, लेकिन अन्य डेवलपर्स के लिए एक स्क्रिप्ट को पूर्ण, डेटाबेस में ~ कुछ भी करने के लिए निरंकुश पहुंच देना परेशानी की मांग कर रहा है, जब इसकी कोई आवश्यकता नहीं है।
कम से कम विशेषाधिकार का सिद्धांत यहाँ प्रयोग में होना चाहिए। MySQL के लिए, सभी विशेषाधिकारों के साथ एक सुपर उपयोगकर्ता है जिसका उपयोग टेबल बनाने, डेटाबेस ड्रॉप करने आदि के लिए किया जाता है। आदर्श रूप से यह उपयोगकर्ता नाम और पासवर्ड किसी भी PHP फ़ाइल या वेब सर्वर पर किसी फ़ाइल में कभी नहीं देखा जाता है। (मैं एक उदाहरण के रूप में PHP का उपयोग कर रहा हूं लेकिन यह अन्य वेब अनुप्रयोगों पर लागू होता है)। आप इस उपयोगकर्ता नाम और पासवर्ड का उपयोग केवल PHPMyAdmin या MySQL वर्कबेंच जैसी किसी चीज़ के साथ करेंगे।
फिर, PHP स्क्रिप्ट के लिए, न्यूनतम आवश्यक के साथ एक है, जैसे कि केवल INSERT, SELECT, UPDATE, शायद DELETE भी नहीं, आपकी PHP स्क्रिप्ट पर निर्भर करता है। यह PHP फाइलों में होगा, जो वास्तव में दस्तावेज़ रूट के बाहर केवल एक फ़ाइल है, जैसा कि अधिकांश द्वारा अनुशंसित है।
इसका कारण यह है:हाँ, आपको प्रत्येक वेब एप्लिकेशन उपयोगकर्ता के लिए एक MySQL उपयोगकर्ता की आवश्यकता नहीं है। लेकिन कम से कम विशेषाधिकार का सिद्धांत ( ) लागू होना चाहिए। यदि किसी तरह आपके MySQL सुपर उपयोगकर्ता से समझौता किया जाता है क्योंकि आपने गलती से अपनी MySQL कनेक्ट स्क्रिप्ट को .php के बजाय .txt नाम दिया है, या किसी ने वेब सर्वर फ़ाइलों तक पहुंच प्राप्त की है, तो कम से कम "सबसे खराब" जो वे कर सकते हैं, वह है SELECT, UPDATE और INSERT। .. जो वैसे भी बड़ी समस्या पैदा कर सकता है, उतना बुरा नहीं है जितना कि उन्हें DROP DATABASE, DROP TABLES और बहुत कुछ देना।
इसके अतिरिक्त, फुर्तीली विकास प्रथाओं के कारण मेरे वर्तमान प्रोजेक्ट में (मैं इसके लिए काम नहीं करता लेकिन http://www.agilealliance की अनुशंसा करता हूं। .org/ ), एक या दो "गैर-तकनीकी" टीम के सदस्य सीधे PHPMyAdmin का उपयोग MySQL डेटाबेस में सीधे परिवर्तन करने के लिए कर रहे हैं। ऐसा इसलिए है क्योंकि सरल प्रत्यक्ष डेटा प्रविष्टि के लिए सीएमएस बनाने की आवश्यकता नहीं है। इस मामले में, एक तीसरा MySQL उपयोगकर्ता उचित लेकिन फिर से, "बस पर्याप्त" विशेषाधिकार उनके लिए उपयुक्त है। हम बहुत कम विशेषाधिकारों के साथ टीम के सदस्य को पंगु नहीं बनाना चाहते हैं, लेकिन निश्चित रूप से उन्हें गलती से चीजों को हटाने या बदलने में सक्षम नहीं होना चाहिए।
चूंकि MySQL में ROLES नहीं हैं (जब तक मूल प्रश्न पूछा गया था, और बिल के अनुसार) तो किसी भी वेब स्क्रिप्ट को केवल एक सुपर उपयोगकर्ता के साथ MySQL तक पहुँचने की अनुमति देना बहुत जोखिम भरा है।