MySQL में विशेषाधिकारों का संपादन शुरू करने के लिए, आपको पहले अपने सर्वर में लॉग इन करना होगा और फिर mysql
से कनेक्ट करना होगा ग्राहक। आमतौर पर आप root
. से जुड़ना चाहेंगे या जो भी खाता आपका प्राथमिक, प्रारंभिक 'सुपर उपयोगकर्ता' खाता है, जिसकी संपूर्ण MySQL स्थापना में पूर्ण पहुंच है।
आमतौर पर root
जब MySQL स्थापित किया गया था, तब उपयोगकर्ता को एक प्रमाणीकरण पासवर्ड सौंपा गया होगा, लेकिन यदि ऐसा नहीं है, तो आपको root
जोड़कर अपनी सुरक्षा के लिए कदम उठाने चाहिए। पासवर्ड जैसा कि आधिकारिक दस्तावेज़ीकरण में दिखाया गया है।
MySQL कमांड-लाइन टूल से कनेक्ट करना
इस उदाहरण के लिए, हम मान लेंगे root
प्राथमिक MySQL खाता है। MySQL कमांड-लाइन टूल का उपयोग शुरू करने के लिए (mysqlcli
), अपने सर्वर से root
. के रूप में कनेक्ट करें उपयोगकर्ता, फिर mysql
जारी करें आदेश:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
सफल होने पर, आप अपने MySQL कनेक्शन के बारे में कुछ आउटपुट देखेंगे और mysql
. का सामना कर रहे होंगे शीघ्र।
नोट:उस स्थिति में जब आप सीधे सर्वर से root
के रूप में कनेक्ट करने में असमर्थ होते हैं mysql
. से कनेक्ट होने से पहले उपयोगकर्ता , आप उस उपयोगकर्ता को निर्दिष्ट कर सकते हैं जिसे आप के रूप में कनेक्ट करना चाहते हैं --user=
जोड़कर झंडा:
$ mysql --user=username
विशेषाधिकार प्रदान करना
अब जबकि आप mysqlcli
. पर हैं शीघ्र, आपको केवल GRANT
जारी करने की आवश्यकता है उपयुक्त अनुमतियों को लागू करने के लिए आवश्यक विकल्पों के साथ कमांड करें।
विशेषाधिकार प्रकार
GRANT
कमांड विभिन्न प्रकार के विशेषाधिकारों को लागू करने में सक्षम है, CREATE
. की क्षमता से सब कुछ टेबल और डेटाबेस, पढ़ें या लिखें FILES
, और यहां तक कि SHUTDOWN
सर्वर। कमांड के लिए झंडे और विकल्पों की एक विस्तृत श्रृंखला उपलब्ध है, इसलिए आप स्वयं को GRANT
से परिचित कराना चाहेंगे। आधिकारिक दस्तावेज़ीकरण के माध्यम से ब्राउज़ करके वास्तव में कर सकते हैं।
डेटाबेस-विशिष्ट विशेषाधिकार
ज्यादातर मामलों में, आप विशेष database
. के आधार पर MySQL उपयोगकर्ताओं को विशेषाधिकार प्रदान करेंगे उस खाते तक पहुंच होनी चाहिए। यह सामान्य अभ्यास है, उदाहरण के लिए, प्रत्येक अद्वितीय MySQL database
. के लिए सर्वर पर अपना विशिष्ट user
रखने के लिए इसके साथ जुड़ा हुआ है, जैसे कि केवल एक ही user
एक एकल database
. तक प्रमाणीकरण पहुंच है और इसके विपरीत।
GRANT ALL
के लिए एक user
. को विशेषाधिकार , उस उपयोगकर्ता को एक विशिष्ट database
. पर पूर्ण नियंत्रण की अनुमति देता है , निम्नलिखित सिंटैक्स का उपयोग करें:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
उस आदेश के साथ, हमने MySQL को बताया है:
GRANT
PRIVILEGES
प्रकार काALL
(इस प्रकार निश्चित रूप से सब कुछ)। नोट:अधिकांश आधुनिक MySQL इंस्टॉलेशन के लिए वैकल्पिकPRIVILEGES
. की आवश्यकता नहीं होती है कीवर्ड।- ये विशेषाधिकार
database_name
. के लिए हैं और यह सभी . पर लागू होता है उस डेटाबेस की तालिकाएँ, जो.*
. द्वारा इंगित की जाती हैं जो इस प्रकार है। - ये विशेषाधिकार
username
को दिए गए हैं जब वहusername
@'localhost'
. द्वारा निर्दिष्ट अनुसार स्थानीय रूप से जुड़ा हुआ है . किसी भी मान्य होस्ट को निर्दिष्ट करने के लिए,'localhost'
को बदलें'%'
. के साथ ।
संपूर्ण डेटाबेस को सभी विशेषाधिकार प्रदान करने के बजाय, शायद आप tolkien
. देना चाहते हैं उपयोगकर्ता केवल डेटा पढ़ने की क्षमता (SELECT
) authors
. से books
. की तालिका डेटाबेस। इसे इस तरह आसानी से पूरा किया जा सकता है:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
एक और सुपर उपयोगकर्ता बनाना
जबकि विशेष रूप से सुरक्षित नहीं है, कुछ मामलों में आप एक और 'सुपर उपयोगकर्ता' बनाना चाह सकते हैं, जिसमें सर्वर पर सभी डेटाबेस में सभी विशेषाधिकार हों। यह ऊपर की तरह ही किया जा सकता है, लेकिन database_name
. को बदलकर वाइल्डकार्ड तारक के साथ:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
अब tolkien
डिफ़ॉल्ट root
. के समान विशेषाधिकार हैं खाता, सावधान!
अपने परिवर्तन सहेजना
उपयोगकर्ता विशेषाधिकारों के किसी भी अपडेट के बाद अंतिम चरण के रूप में, FLUSH PRIVILEGES
जारी करके परिवर्तनों को सहेजना सुनिश्चित करें। mysql
. से कमांड संकेत:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)