MySQL
GRANTs के माध्यम से सुरक्षा
खोज…
सर्वश्रेष्ठ प्रणालियां
रूट (और किसी भी सुपर-विशेषाधिकारित उपयोगकर्ता) तक सीमित करें
GRANT ... TO root@localhost ...
जो अन्य सर्वर से एक्सेस को रोकता है। आपको बहुत कम लोगों को सुपर को सौंपना चाहिए, और उन्हें अपनी जिम्मेदारी के बारे में पता होना चाहिए। आवेदन में सुपर नहीं होना चाहिए।
अनुप्रयोग लॉगिन को उस एक डेटाबेस तक सीमित करता है जो इसका उपयोग करता है:
GRANT ... ON dbname.* ...
इस तरह, जो कोई व्यक्ति एप्लिकेशन कोड में हैक करता है, वह पिछले dbname प्राप्त नहीं कर सकता है। इसे और भी परिष्कृत किया जा सकता है:
GRANT SELECT ON dname.* ... -- "read only"
GRANT ... ON dname.tblname ... -- "just one table"
आसानी से 'सुरक्षित' चीजों की भी जरूरत पड़ सकती है
GRANT SELECT, CREATE TEMPORARY TABLE ON dname.* ... -- "read only"
जैसा कि आप कहते हैं, कोई पूर्ण सुरक्षा नहीं है। मेरा कहना यह है कि आप हैकर्स को धीमा करने के लिए कुछ चीजें कर सकते हैं। (वही ईमानदार लोगों के लिए चला जाता है।)
दुर्लभ मामलों में, आपको केवल रूट करने के लिए कुछ उपलब्ध करने के लिए एप्लिकेशन की आवश्यकता हो सकती है। यह एक "संग्रहीत प्रक्रिया" के माध्यम से किया जा सकता है जिसमें SECURITY DEFINER
(और रूट इसे परिभाषित करता है)। यह केवल वही खुलासा करेगा जो एसपी करता है, जो, उदाहरण के लिए, एक विशेष तालिका पर एक विशेष कार्रवाई हो सकती है।
होस्ट (उपयोगकर्ता @ होस्ट)
"होस्ट" या तो होस्ट नाम या आईपी एड्रेस हो सकता है। साथ ही, इसमें वाइल्ड कार्ड शामिल हो सकते हैं।
GRANT SELECT ON db.* TO sam@'my.domain.com' IDENTIFIED BY 'foo';
उदाहरण: नोट: इन्हें आमतौर पर उद्धृत करने की आवश्यकता होती है
localhost -- the same machine as mysqld
'my.domain.com' -- a specific domain; this involves a lookup
'11.22.33.44' -- a specific IP address
'192.168.1.%' -- wild card for trailing part of IP address. (192.168.% and 10.% and 11.% are "internal" ip addresses.)
localhost
का उपयोग करना सर्वर की सुरक्षा पर निर्भर करता है। सर्वोत्तम अभ्यास के लिए root
को केवल स्थानीयहोस्ट के माध्यम से अनुमति दी जानी चाहिए। कुछ मामलों में, इनका मतलब एक ही है: 0.0.0.1
और ::1
।