वास्तव में, वे तीन उपयोगकर्ता खाते वास्तव में काफी खतरनाक हैं। वे डेटाबेस का परीक्षण करने के लिए एक बहुत बड़ा खतरा पैदा करते हैं।
दुर्भाग्य से, mysql डेटाबेस का परीक्षण करने के लिए पूर्ण पहुँच के साथ आता है। आप उन्हें कैसे पा सकते हैं?
यह क्वेरी चलाएँ:
SELECT user,host,db from mysql.db;
Mysql की स्थापना होने पर, आपको दो पंक्तियाँ दिखाई देंगी जो किसी भी डेटाबेस को 'परीक्षण' नाम से पूर्ण अभिगम देती हैं या जिनके पहले 5 अक्षर 'test_' हैं।
यह समस्या क्यों है ???
इस आदेश को चलाने का प्रयास करें:
$ mysql -u'' -Dtest
आपने परीक्षण डेटाबेस को बिना पासवर्ड के जोड़ा होगा।
अब, एक तालिका बनाएं और इसे एक पंक्ति के साथ लोड करें:
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
ठीक है, बड़ी बात है। क्या आप इस तालिका को 30 बार आकार में दोहरा सकते हैं ???
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
आपको क्या मिलेगा ?? 1,073,741,824 पंक्तियों वाली एक तालिका। आसानी से, 4 जीबी +।
किसी भी आकार की कोई भी तालिका बनाने की कल्पना करें। कैसे परीक्षण डेटाबेस में तालिकाओं का एक गुच्छा बनाने के बारे में और स्वतंत्र रूप से उन तक पहुँचने के लिए?
इन परिस्थितियों में आप जो सबसे अच्छी चीज कर सकते हैं, वह है इस क्वेरी को चलाना:
DELETE FROM mysql.db;
और mysql को पुनरारंभ करें। फिर, उन तीन खातों को ठीक से निष्क्रिय किया जाएगा।
कोशिश करो !!!
UPDATE 2011-09-12 10:00 EDT
यह हटाएं:
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
एक प्रारंभिक स्थापना के लिए आपको बस यही चाहिए। हालाँकि, यदि आपके पास पहले से ही उपयोगकर्ता हैं, तो आप इसके बजाय इसे चला सकते हैं:
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
यह विशिष्ट दो DB अनुमतियों को हटा देगा।
जैसा कि मैंने अपने उत्तर में उल्लेख किया है, तीन अनुमतियाँ परीक्षण डेटाबेस के लिए बहुत खतरनाक हैं। इस DELETE को चलाने से डेटाबेस का परीक्षण करने का पूर्ण अधिकार रखने के लिए उन खातों को निष्प्रभावी कर दिया जाएगा।