Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लैन पर एक MySQL डेटाबेस webservice तक कैसे पहुंचे?

यदि यह 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 को उपयोगकर्ता विशेषाधिकार तालिका को फिर से लोड करने के लिए कहती है जो उन अनुदानों को प्रभावी होने देती है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY CASE में समस्या

  2. पोस्ट करें और उसी समय php . में प्राप्त करें

  3. विंडोज आईआईएस - पीएचपी पीडीओ मैसकल ड्राइवर नहीं ढूंढ सका

  4. Php में MySQL की फॉरेन की एरर को कैसे हैंडल करें?

  5. मॉड्यूल नॉटफाउंड त्रुटि:'mysql' नाम का कोई मॉड्यूल नहीं