मंगलवार, 23 सितंबर 2014

MySQL उपयोगकर्ता कनेक्शन

Original post: http://anothermysqldba.blogspot.com/2014/09/mysql-user-connections.html

तो मैं MySQL उपयोगकर्ताओं और कैसे वे प्रमाणित के साथ मतभेदों को समझा खुद को पाया. यह सब जानकारी के प्रथम नया नहीं है लेकिन यहां पाया जा सकता है:
मैं सिर्फ यह समझाने के लिए कुछ वास्तविक दुनिया उदाहरण दिखा देंगे.

यह एक उपयोगकर्ता की अनुमतियों का मूल्यांकन करता है जब MySQL उपयोगकर्ता नाम के रूप में अच्छी तरह से लॉगिन का उपयोग करता है. एक सबसे अच्छा अभ्यास अनाम उपयोगकर्ताओं को हटाना है, यही कारण है.

इस उदाहरण के लिए मैं निम्नलिखित उपयोगकर्ताओं के साथ शुरू होगा



MariaDB [(none)]> select user , host from mysql.user;
+---------+-----------+
| user | host |
+---------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| | centos64 |
| root | centos64 |
| | localhost |
| root | localhost |
+---------+-----------+

मैं भी मैं एक उपयोगकर्ता नाम नहीं है सोचा सर्वर में प्रवेश कर सकते हैं नीचे बेनामी @ लोकलहोस्ट करने के लिए यह चूक है.


# mysql -u nobody
MariaDB [(कोई भी)]> का चयन current_user ();
+ ---------------- +
| Current_user () |
+ ---------------- +
|localhost |
+ ---------------- +
MariaDB [(कोई भी)]> शो अनुदान;
+ -------------------------------------- +
|localhost के लिए अनुदान |
+ -------------------------------------- +
| अनुदान के उपयोग पर * '@' के लिए 'लोकलहोस्ट. |
+ -------------------------------------- +

मैं कुछ नहीं कर सकता जबकि मैं अभी भी डेटाबेस में मिला है.

अब मैं एक ज्ञात उपयोगकर्ता पारित जब:


# mysql -u root -p
MariaDB [(कोई भी)]> का चयन current_user;
+ ---------------- +
| Current_user |
+ ---------------- +
| जड़ @ लोकलहोस्ट |
+ ---------------- +
MariaDB [(कोई भी)]> शो अनुदान;
+----------------------------------------------------------------------------------------------------------------------------------------+
| जड़ @ लोकलहोस्ट के लिए अनुदान |
+----------------------------------------------------------------------------------------------------------------------------------------+
| पर सभी विशेषाधिकार प्रदान * 'जड़' @ करने के लिए पासवर्ड से पहचान 'लोकलहोस्ट' '* 8CD56861FDADF7A264741F27D502D1A8DAE0A8F7' अनुदान विकल्प के साथ. |
| | अनुदान प्रॉक्सी पर '@' '' जड़ 'के लिए @ अनुदान विकल्प के साथ' लोकलहोस्ट '
+----------------------------------------------------------------------------------------------------------------------------------------+


वर्तमान में जड़ उपयोगकर्ता 4 अलग खाते हैं.

MariaDB [(none)]> select user , host from mysql.user where user = 'root';
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| root | centos64 |
| root | localhost |
+------+-----------+

ये सभी अलग अलग खातों हैं. मैं केवल हालांकि उनमें से एक की जरूरत है. मैं केवल स्थानीय मेजबान कनेक्शन के माध्यम से रूट खाते का उपयोग करें.

MariaDB [(none)]> DROP USER 'root'@'127.0.0.1';
Query OK, 0 rows affected (0.33 sec)

MariaDB [(none)]> DROP USER 'root'@'centos64';
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> DROP USER 'root'@'::1';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user , host from mysql.user where user = 'root';
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+

इसलिए मैं 4 अलग अलग खातों से क्या मतलब था? वे सब जड़ उपयोगकर्ता खाते. नहीं .. वे जड़ और जो कुछ भी होस्ट कर रहे हैं. इसलिए प्रत्येक खाता (उपयोगकर्ता + मेजबान) विभिन्न अनुमतियों हो सकता था.

अंतर दिखाने के लिए अगले इसलिए हम एक उदाहरण बनाना होगा.
इसलिए इस उदाहरण में सर्वर दो नेटवर्क इंटरफेस है. इसलिए मैं विभिन्न अनुमतियों के साथ प्रत्येक मतभेद दिखाने के लिए सभी का उपयोग अंक प्रति एक उपयोगकर्ता पैदा करेगा. मैं एक ही पासवर्ड सेट हो जाएगा, लेकिन उन लोगों के रूप में अच्छी तरह से अलग हो सकता है.

MariaDB [(none)]> GRANT SELECT ON *.* TO 'anothermysqldba'@'10.0.2.15' IDENTIFIED BY '<cleartext password>';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE , DROP, RELOAD, SHUTDOWN, PROCESS, FILE, INDEX, ALTER ON *.* TO 'anothermysqldba'@'192.168.0.%' IDENTIFIED BY '<cleartext password>';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'anothermysqldba'@'localhost' IDENTIFIED BY '<cleartext password>' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(कोई भी)]> का चयन करें उपयोगकर्ता, जहां उपयोगकर्ता = 'anothermysqldba' mysql.user से मेजबान;
+ ----------------- + ------------- +
| उपयोगकर्ता | मेजबान |
+ ----------------- + ------------- +
| Anothermysqldba | 10.0.2.15 |
| Anothermysqldba |. 192.168.0% |
| Anothermysqldba | स्थानीय होस्ट |
+ ----------------- + ------------- +

तो इसका मतलब क्या है? MySQL एक उपयोगकर्ता विभिन्न अनुमतियों के रूप में हर उपयोगकर्ता पहुँच बिंदु को मान्य करने के रूप में अच्छी तरह से मेजबान का उपयोग करता है, क्योंकि उपयोगकर्ता नाम एक ही हैं हालांकि.

आप अपने डेवलपर्स के कुछ भरोसा हो सकता है, इस बार वे दूर से या उनकी स्क्रिप्ट के माध्यम से काम कर रहे हैं अगर उनके उपयोग के कुछ सीमित करने के लिए एक अच्छा विचार है. वे आप को शामिल नहीं करता है कि कुछ करने की जरूरत है और वे सर्वर से ही SSH और अन्य कार्य करने के लिए लॉग इन करने के लिए है. इस कोर्स के लिए अपने व्यापार और / या अनुप्रयोगों के रिश्ते और काम के प्रवाह पर निर्भर है.

10.0.2.15 मेजबान उपयोगकर्ता का उपयोग केवल चुनिंदा उपयोग किया है.

# mysql -h 10.0.2.15 -u anothermysqldba -p
MariaDB [(कोई भी)]> का चयन current_user ();
+ --------------------------- +
| Current_user () |
+ --------------------------- +
| Anothermysqldba@10.0.2.15 |
+ --------------------------- +
MariaDB [(कोई भी)]> शो अनुदान;
+-------------------------------------------------------------------------------------------------------------------------+
| Anothermysqldba@10.0.2.15 के लिए अनुदान |
+-------------------------------------------------------------------------------------------------------------------------+
| अनुदान * पर चयन * करने के लिए 'anothermysqldba'@'10.0.2.15' पासवर्ड से पहचान '* 31360D7EE84BE965C0E759179FC61B6943BCA64F'. |
+-------------------------------------------------------------------------------------------------------------------------+

192.168.0.26 मेजबान का उपयोग कर उपयोगकर्ता अधिक पहुँच गया है. यह खाता भी 192.168.0 / 255 (%) सबनेट के तहत कुछ भी भर में उपयोग करने के लिए निर्धारित है.

# mysql -h 192.168.0.26 -u anothermysqldba -p
MariaDB [(कोई भी)]> का चयन current_user ();
+ ----------------------------- +
| Current_user () |
+ ----------------------------- +
| Anothermysqldba@192.168.0.% |
+ ----------------------------- +
MariaDB [(कोई भी)]> शो अनुदान;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Anothermysqldba@192.168.0.% के लिए अनुदान |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| अनुदान का चयन करें, सम्मिलित करें, अद्यतन, बनाने, हटाने छोड़, पुनः लोड, बंद, प्रक्रिया, फ़ाइल, सूचकांक, * पर बदल * करने के लिए 'anothermysqldba'@'192.168.0.%' पासवर्ड से पहचान '* 31360D7EE84BE965C0E759179FC61B6943BCA64F'. |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

आप मान लेंगे तो जैसा कि स्थानीय होस्ट उपयोगकर्ता पूर्ण पहुँच खाता है.

# mysql -u anothermysqldba -p
MariaDB [(कोई भी)]> का चयन current_user ();
+ --------------------------- +
| Current_user () |
+ --------------------------- +
| Anothermysqldba @ लोकलहोस्ट |
+ --------------------------- +
सेट में 1 पंक्ति (0.00 सेकंड)

MariaDB [(कोई भी)]> शो अनुदान;
+---------------------------------------------------------------------------------------------------------------------------------------------------+
| Anothermysqldba @ लोकलहोस्ट के लिए अनुदान |
+---------------------------------------------------------------------------------------------------------------------------------------------------+
| पर सभी विशेषाधिकार प्रदान * 'anothermysqldba' @ करने के लिए पासवर्ड से पहचान 'लोकलहोस्ट' '* 31360D7EE84BE965C0E759179FC61B6943BCA64F' अनुदान विकल्प के साथ. |
+---------------------------------------------------------------------------------------------------------------------------------------------------+

यह अनाम उपयोगकर्ताओं को दूर करने के लिए सबसे अच्छा अभ्यास है अब इससे पहले कि जैसा कि मैंने कहा. का प्रयोग mysql_secure_installation स्थापना के लिए भी उसके साथ में मदद मिलेगी.

क्यों फर्क पड़ता है?

# mysql -u anothremysqldba -p
MariaDB [(कोई भी)]> का चयन current_user ();
+ ---------------- +
| Current_user () |
+ ---------------- +
|localhost |
+ ---------------- +
सेट में 1 पंक्ति (0.00

सरल उदाहरण ... ऊपर है और सिर्फ साधारण गलतियों से बचें. एक टाइपो डेटाबेस तक पहुँच, यह इस अनुमति नहीं होना चाहिए की अनुमति दी.

तो फिर हटाने और फिर से परीक्षण करें.

MariaDB [(none)]> DROP USER ''@'localhost';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> DROP USER ''@'centos64';
Query OK, 0 rows affected (0.00 sec)

# MySQL -u anothremysqldba -p
पासवर्ड दर्ज करें:
त्रुटि 1045 (28000): प्रवेश @ उपयोगकर्ता anothremysqldba 'के लिए इनकार किया पासवर्ड का उपयोग (' लोकलहोस्ट ': हाँ

अपने डेटाबेस ज्यादातर मेजबाननाम या सख्त आईपी पते और कोई वाइल्डकार्ड के रूप में% के साथ साथ बनाया जाता है तो अगर इसका मतलब क्या है?

यह आपकी ओर से एक सुरक्षा और व्यापार में निर्णय लेने के लिए किया जाएगा. व्यक्तिगत रूप से न तो मेरी राय में एक मान्य विकल्प है. एक वाइल्डकार्ड (%) कुछ नहीं बल्कि एक मजबूत पहुँच बिंदु की अनुमति देता है, लेकिन फ़ायरवॉल एक विफलता है अगर यह भी नेटवर्क उपयोगकर्ताओं के बाहर दूरदराज के लिए उपयोग को खोलता है. उपयोगकर्ता प्रति एक सख्त आईपी पता भी मेरी राय में नहीं बल्कि सख्त है, लेकिन यह उपयोगकर्ता पर निर्भर करता है. . 192.168.0%: यहां तक ​​कि मैं अभी भी एक% यानी साथ आईपी पते का उपयोग करना पसंद करते हैं नकल के लिए बनाया गया है जो किसी खाते के साथ उदाहरण के लिए. आईपी ​​पते (दूरस्थ उपयोगकर्ताओं के लिए भी स्थिर परिवर्तन डीबीए अक्सर नहीं बताया गया है) बदल सकता हूँ और यह अक्सर पहुँच विफलता पर शिकायतों के साथ डीबीए के लिए आने वाले लोगों में यह परिणाम है.

मैं एक बार एक स्थिर IP पता करने के लिए बंद हर उपयोगकर्ता पहुँच सीमित है कि एक व्यक्ति के साथ काम किया. इस व्यक्ति को लगातार अनुदान बयानों को बदलने के लिए किया था. आप अपने अंत पर सुरक्षा सुनिश्चित कर सकते हैं, जबकि लोगों को आसानी से और प्रभावी ढंग से काम करने में सक्षम होना चाहिए.