यदि यह MySQL है, तो डेटाबेस सर्वर की नेटवर्किंग डिफ़ॉल्ट रूप से सक्षम नहीं है। MySQL में नेटवर्किंग को सक्षम करने के लिए आपको my.cnf
. नाम की सक्रिय MySQL कॉन्फ़िगरेशन फ़ाइल ढूंढनी होगी . और इसे संपादित करें।
मैं यह समझाने जा रहा हूं कि यह उबंटू 12.04 पर कैसे किया जाता है, लेकिन निर्देश किसी भी लिनक्स इंस्टाल के लिए समान हैं।
MySQL नेटवर्किंग सक्षम करें
सबसे पहले, nano
. जैसे संपादक का उपयोग करके फ़ाइल खोलें . आपको sudo
. के माध्यम से कमांड चलाने की आवश्यकता हो सकती है :
sudo nano /etc/mysql/my.cnf
फिर अपनी कॉन्फ़िगरेशन फ़ाइल में bind-address
. के साथ क्षेत्र देखें विकल्प:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
अब उस bind-address
को बदलें निम्नलिखित के लिए सेटिंग:
bind-address = 0.0.0.0
इसके साथ ही फाइल को सेव करें और MySQL को इस तरह से रीस्टार्ट करें:
sudo service mysql restart
और अब आपका MySQL डेटाबेस दूरस्थ मशीनों से गैर-लोकलहोस्ट कनेक्शन लेने में सक्षम होगा।
सुनिश्चित करें कि MySQL पोर्ट 3306
खुला है
उस ने कहा, नेटवर्किंग सक्षम होने के बावजूद, आपको अभी भी जांच करनी चाहिए कि क्या आप nmap
जैसे नेटवर्किंग टूल का उपयोग करके कमांड लाइन से रिमोट मशीन से कनेक्ट करने में सक्षम हैं। . आपके पास 192.168.1.10
. पर फ़ायरवॉल हो सकता है MySQL पोर्ट को ब्लॉक करना 3306
इसलिए आपको यह जांचना होगा कि यह इस तरह खुला है या बंद है:
nmap 192.168.1.10 -p3306
और अगर पोर्ट 3306
खुला है, यह प्रतिक्रिया होगी; नोट करें open
STATE
के अंतर्गत :
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
लेकिन अगर पोर्ट 3306
बंद है, आपको यह मिलेगा; नोट closed
STATE
के अंतर्गत :
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
अपने MySQL उपयोगकर्ता अनुदान की जांच करें
अब यह सब हो जाने के बाद, आपका MySQL डेटाबेस सर्वर नेटवर्क पर पहुंच योग्य होना चाहिए। लेकिन उस ने कहा, आपको यह सुनिश्चित करने की ज़रूरत है कि आप जिस डेटाबेस उपयोगकर्ता का उपयोग कर रहे हैं उसे आपके लैन पर रिमोट मशीन से कनेक्ट करने की अनुमति है। तो MySQL में लॉग इन करें और यह देखने के लिए कमांड चलाएँ कि उपयोगकर्ता के पास क्या अनुदान हो सकता है:
SELECT user, host FROM `mysql`.`user`;
यह आपको MySQL में उन उपयोगकर्ताओं से जुड़े उपयोगकर्ताओं और होस्ट की सूची दिखाएगा। बात यह है कि अधिकांश उपयोगकर्ताओं को केवल localhost
. तक पहुंच की अनुमति दी जाती है या 127.0.0.1
. कुछ को %
. का वाइल्डकार्ड होस्ट दिया जाता है . आपको उस सूची को देखना होगा और देखना होगा कि जिस उपयोगकर्ता का आप उपयोग करना चाहते हैं उसके पास वाइल्डकार्ड होस्ट (%
) है या नहीं ) या उनसे जुड़ा एक विशिष्ट आईपी पता। आप किसी उपयोगकर्ता के GRANT
की जांच कर सकते हैं s इस तरह एक लाइन चलाकर; बेशक बदलें [your_database_user]
और [hostname]
अपनी सेटिंग से मेल खाने के लिए:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
यह आपको उपलब्ध GRANT
. की एक सूची दिखाएगा किसी विशिष्ट होस्ट पर उपयोगकर्ता के लिए s. अगर उनके पास GRANT
है s जो रिमोट एक्सेस की अनुमति देता है—जैसे वाइल्डकार्ड का उपयोग करना %
होस्ट- तो आप पूरी तरह तैयार हैं। अगर उनके पास कोई GRANT
नहीं है आप निम्न MySQL कमांड चला सकते हैं; बेशक बदलें [your_database]
और [your_database_user]
अपनी सेटिंग से मेल खाने के लिए:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
दोनों GRANT
लाइनें डेटाबेस तक पहुंच अधिकारों का एक काफी मानक सेट लागू करती हैं। पहली पंक्ति उन्हें 192.168.x.x
के LAN नेटवर्क श्रेणी में किसी भी कनेक्शन पर लागू करती है . दूसरी पंक्ति उन्हें 10.x.x.x
के LAN नेटवर्क श्रेणी में किसी भी कनेक्शन पर लागू करती है . मैं आंतरिक नेटवर्क पर सभी ठिकानों को कवर करने के लिए ऐसा करना पसंद करता हूं। अंतिम FLUSH PRIVILEGES;
लाइन मूल रूप से MySQL को उपयोगकर्ता विशेषाधिकार तालिका को फिर से लोड करने के लिए कहती है जो उन अनुदानों को प्रभावी होने देती है।