यदि आप एक MySQL डेटाबेस के साथ काम कर रहे हैं, तो आप पहले से ही अपने डेटाबेस को सुरक्षित रखने में आने वाली चुनौतियों से अवगत हैं। SQL इंजेक्शन के उपयोग से डेटाबेस हैकिंग के प्रयासों से लेकर क्रूर बल के हमलों तक, आपके डेटा को सुरक्षित रखना मुश्किल है, खासकर यदि आप किसी डेटाबेस के साथ दूरस्थ रूप से काम कर रहे हैं।
दूरस्थ कनेक्शन की अनुमति देने के लिए SQL सर्वर को कॉन्फ़िगर करने के तरीके हैं, लेकिन आपको सावधान रहने की आवश्यकता है, क्योंकि MySQL सर्वर पर दूरस्थ कनेक्शन की अनुमति आपके डेटाबेस को हैकर्स के लिए एक आसान लक्ष्य बना सकती है। यदि आप किसी MySQL डेटाबेस से सुरक्षित, दूरस्थ कनेक्शन की अनुमति देना चाहते हैं, तो आपको यह जानने की आवश्यकता होगी।
शुरू करने से पहले
अपने MySQL डेटाबेस में कोई भी परिवर्तन करने से पहले, यह महत्वपूर्ण है कि आप अपने डेटाबेस का बैकअप लें , खासकर यदि आप एक उत्पादन सर्वर (सक्रिय उपयोग में एक सर्वर) पर काम कर रहे हैं। आप अपने डेटाबेस में या इसे होस्ट करने वाले सर्वर में कोई भी परिवर्तन करते हैं, तो कुछ गलत होने पर गंभीर डेटा हानि हो सकती है।
आप यह भी पा सकते हैं कि आपके सर्वर के कनेक्शन में परिवर्तन आपको बाद में इसे एक्सेस करने से रोक सकता है। यदि ऐसा होता है, तो आपको आगे की सहायता के लिए सर्वर व्यवस्थापक से परामर्श करने की आवश्यकता हो सकती है। एक अच्छा विचार स्थानीय रूप से चलने वाले MySQL सर्वर पर किसी भी बदलाव का परीक्षण करना है ताकि यह जांचा जा सके कि आपके परिवर्तन उन्हें दूरस्थ रूप से आज़माने से पहले काम करते हैं या नहीं।
यह भी संभावना है कि यदि आप किसी दूरस्थ सर्वर में परिवर्तन कर रहे हैं, तो आपको कनेक्ट करने और परिवर्तन करने के लिए एक सुरक्षित तरीके की आवश्यकता होगी। SSH (सिक्योर शेल) अक्सर ऐसा करने का सबसे अच्छा तरीका है, क्योंकि यह आपको अपने रिमोट सर्वर से कनेक्ट करने की अनुमति देता है। आप अपने स्थानीय नेटवर्क पर सर्वर से कनेक्ट करने के लिए भी SSH का उपयोग कर सकते हैं, जैसे कि रास्पबेरी पाई पर होस्ट किए गए सर्वर।
यह मार्गदर्शिका आपको दूरस्थ कनेक्शन की अनुमति देने के लिए MySQL को कॉन्फ़िगर करने के चरणों के माध्यम से ले जाएगी, लेकिन आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपके पास पहले अपने MySQL सर्वर को होस्ट करने वाले सर्वर तक सीधी या दूरस्थ पहुंच है।
मान लीजिए कि आपके पास SSH (उदाहरण के लिए) के माध्यम से अपने सर्वर तक दूरस्थ पहुँच नहीं है। उस स्थिति में, आप अपने MySQL डेटाबेस को सीधे दूरस्थ कनेक्शन की अनुमति देने के लिए तब तक कॉन्फ़िगर नहीं कर पाएंगे जब तक कि आपका रूट mySQL खाता पहले से ही दूरस्थ कनेक्शन की अनुमति नहीं देता। इसलिए, आगे बढ़ने से पहले आपको पहले यह कनेक्शन स्थापित करना होगा।
अपनी MySQL कॉन्फ़िगरेशन फ़ाइल का संपादन
दूरस्थ कनेक्शन की अनुमति देने के लिए MySQL को कॉन्फ़िगर करने का पहला चरण आपकी MySQL कॉन्फ़िगरेशन फ़ाइल को संपादित करना है। इस स्तर तक, यह मार्गदर्शिका मान लेगी कि आप सर्वर, पीसी या मैक से पहले ही कनेक्ट हो चुके हैं और अपने mySQL डेटाबेस को दूरस्थ रूप से होस्ट कर रहे हैं और आपके पास कंसोल एक्सेस है।
वैकल्पिक रूप से, आप मैक या लिनक्स पर खुले टर्मिनल या विंडोज़ पर टेक्स्ट एडिटर का उपयोग करके स्थानीय MySQL सर्वर को कॉन्फ़िगर कर सकते हैं।
- शुरू करने के लिए, अपनी MySQL डेटाबेस फ़ाइल को संपादित करने के लिए अपने पसंदीदा कंसोल टेक्स्ट एडिटर का उपयोग करें। Linux पर, sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf टाइप करें नैनो . का उपयोग करके इस फ़ाइल को संपादित करने के लिए किसी टर्मिनल या SSH विंडो में संपादक (यह मानते हुए कि आपका MySQL डेटाबेस डिफ़ॉल्ट स्थान पर है)।
- यदि आप विंडोज चला रहे हैं, तो फाइल एक्सप्लोरर खोलें और अपने MySQL इंस्टॉलेशन वाले फोल्डर को एक्सेस करें (जैसे। C:/Program Files/MySQL/MySQL Server 8.0 ) my.ini खोलें प्रविष्टि को डबल-क्लिक करके अपने डिफ़ॉल्ट टेक्स्ट एडिटर (जैसे नोटपैड) का उपयोग करके फ़ाइल करें। अगर यह वहां नहीं है, तो पहले फ़ाइल बनाएं।
- Mac पर, एक टर्मिनल विंडो खोलें और sudo nano /usr/local/etc/my.cnf टाइप करें . यदि आपने होमब्रे का उपयोग करके MySQL स्थापित किया है तो यह MySQL के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल है।
ऊपर संदर्भित स्थान MySQL कॉन्फ़िगरेशन फ़ाइलों के लिए डिफ़ॉल्ट स्थान हैं। यदि ये आदेश काम नहीं करते हैं, तो आपको संबंधित फाइलों (my.cnf) को खोजना होगा। , mysqld.cnf , या my.ini ) मैन्युअल रूप से प्रासंगिक फ़ाइल पथ का पता लगाने के लिए।
सुरक्षित बाइंड-एड्रेस IP रेंज सेट करना
- एक बार जब आप अपने सर्वर के लिए MySQL कॉन्फ़िगरेशन फ़ाइल खोल लेते हैं, तो बाइंड-एड्रेस तक पहुंचने के लिए अपने कीबोर्ड की तीर कुंजी का उपयोग करें फ़ाइल का खंड। यह IP श्रेणी आपके डेटाबेस से कनेक्शन को सीमित करती है, जो आमतौर पर 127.0.0.1 का उपयोग करके केवल स्थानीय मशीन या सर्वर से कनेक्शन की अनुमति देने के लिए सेट की जाती है। ।
- यदि आप अपने वर्तमान इंटरनेट कनेक्शन का उपयोग करने वाले उपकरणों से कनेक्शन की अनुमति देने के लिए अपने MySQL डेटाबेस को कॉन्फ़िगर करना चाहते हैं, तो पहले अपना सार्वजनिक आईपी पता खोजें, फिर 127.0.0.1 को बदलें। उस आईपी पते के साथ। वैकल्पिक रूप से, इसे उस डिवाइस या सर्वर के आईपी पते से बदलें जिससे आप कनेक्शन की अनुमति देना चाहते हैं।
- कुछ परिस्थितियों में, आप सभी . को अनुमति देना चाह सकते हैं एक MySQL डेटाबेस के लिए दूरस्थ कनेक्शन। इसमें अत्यधिक जोखिम . होता है और उत्पादन सर्वर पर उपयोग नहीं किया जाना चाहिए। हालांकि, अगर आप इसकी अनुमति देना चाहते हैं, तो 127.0.0.1 . को बदलें 0.0.0.0 . के साथ ।
- पोर्ट पर ध्यान दें बुनियादी सेटिंग . में मान अनुभाग। अगले भाग में इसकी आवश्यकता होगी। यदि यह दिखाई नहीं दे रहा है, तो डिफ़ॉल्ट मान का उपयोग किया जाएगा, जो कि पोर्ट है 3306 . आप port =xxxx . लिखकर अपना पोर्ट जोड़ सकते हैं xxxx . के स्थान पर एक नई लाइन पर उपयुक्त पोर्ट मान के साथ।
- एक बार जब आप बाइंड-एड्रेस . को कॉन्फ़िगर कर लेते हैं अपनी MySQL कॉन्फ़िगरेशन फ़ाइल में, फ़ाइल को सहेजें। यदि आप Linux पर हैं, तो Ctrl + O . चुनें और Ctrl + X यह करने के लिए। Mac पर, कमांड + O . चुनें और कमांड + X . Windows उपयोगकर्ता फ़ाइल . का चयन करके सहेज सकते हैं> सहेजें ।
- अगला, Linux और Mac उपयोगकर्ता mysql.server stop &&mysql.server start लिखकर MySQL को पुनरारंभ कर सकते हैं या mysql.server पुनरारंभ करें . आपको sudo (उदा. sudo mysql.server पुनरारंभ . का उपयोग करके कमांड को ऊपर उठाने की आवश्यकता हो सकती है ) और mysql.server फ़ाइल के लिए उपयुक्त पथ का उपयोग करें (उदा. /usr/local/bin/mysql.server )।
- यदि उपरोक्त आदेश काम नहीं करता है, तो सुडो सेवा mysql पुनरारंभ करने का प्रयास करें इसके बजाय।
- Windows पर MySQL को पुनरारंभ करने के लिए, प्रारंभ मेनू पर राइट-क्लिक करके और Windows PowerShell (व्यवस्थापन) का चयन करके एक नई PowerShell विंडो खोलें। . पावरशेल विंडो में, टाइप करें नेट स्टॉप mysql80 इसके बाद नेट स्टार्ट mysql80 , mysql80 . की जगह अपने पीसी पर सेवा के सही नाम के साथ।
यदि आप Windows पर सही सेवा नाम के बारे में सुनिश्चित नहीं हैं, तो नेट प्रारंभ type टाइप करें इसे खोजने के लिए। यदि आप अपने कॉन्फ़िगरेशन को पुनः लोड नहीं कर सकते हैं, तो अपने सर्वर को पुनरारंभ करें और इसके बजाय मैन्युअल रूप से (यदि आवश्यक हो) MySQL को पुनः लोड करें।
अपने फ़ायरवॉल को कॉन्फ़िगर करना
इस स्तर पर, आपके MySQL डेटाबेस को आपके द्वारा बाइंड-एड्रेस के रूप में सेट किए गए IP पते का उपयोग करके डिवाइस से दूरस्थ कनेक्शन की अनुमति देनी चाहिए आपकी MySQL कॉन्फ़िगरेशन फ़ाइल में मान (या यदि आप इस मान को 0.0.0.0 . पर सेट करते हैं तो सभी डिवाइस से) बजाय)। हालांकि, कनेक्शन अभी भी आपके डिवाइस या नेटवर्क फ़ायरवॉल . द्वारा अवरुद्ध किए जाएंगे ।
अधिकांश सर्वर और पीसी कनेक्शन को ब्लॉक करने के लिए फ़ायरवॉल का उपयोग करते हैं जब तक कि किसी विशिष्ट पोर्ट तक पहुंच प्रदान नहीं की जाती है। इसे कॉन्फ़िगर करने के चरण अलग-अलग होंगे, यह इस बात पर निर्भर करता है कि आप Windows या Linux पर MySQL चला रहे हैं या नहीं। मैक फ़ायरवॉल डिफ़ॉल्ट रूप से अक्षम हैं, इसलिए आपको यहां कोई अतिरिक्त चरण पूरा करने की आवश्यकता नहीं है।
Linux फ़ायरवॉल कॉन्फ़िगर करें
कई Linux सर्वर iptables . का उपयोग करते हैं डिफ़ॉल्ट फ़ायरवॉल उपयोगिता के रूप में। आप नीचे दिए गए चरणों का पालन करके इसे कॉन्फ़िगर कर सकते हैं।
- टर्मिनल या SSH कनेक्शन खोलें और sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT टाइप करें . बदलें X.X.X.X उस डिवाइस के आईपी पते के साथ जिसे आप से MySQL MySQL कनेक्शन की अनुमति देना चाहते हैं , और YYYY . को बदलें आपकी MySQL कॉन्फ़िगरेशन फ़ाइल से मेल खाने वाले पोर्ट मान के साथ (उदा. 3306 )।
- यह अस्थायी रूप से फ़ायरवॉल को कॉन्फ़िगर करेगा। यदि आप डेबियन या उबंटू-आधारित लिनक्स सर्वर का उपयोग कर रहे हैं, तो sudo netfilter-persistent save लिखकर इस परिवर्तन को स्थायी बनाएं। और सुडो नेटफिल्टर-पर्सिस्टेंट रीलोड टर्मिनल या SSH विंडो में।
यदि iptables आपके Linux वितरण के लिए डिफ़ॉल्ट फ़ायरवॉल उपकरण नहीं है, तो आपको अधिक जानकारी के लिए अपने वितरण के उपयोगकर्ता पुस्तिका से परामर्श करने की आवश्यकता होगी। यदि कुछ पैकेज (जैसे कि नेटफिल्टर-परसिस्टेंट ) अनुपलब्ध हैं, इसे स्थापित करने के लिए अपने वितरण के सॉफ़्टवेयर रिपॉजिटरी टूल का उपयोग करें (उदा. sudo apt install netfilter-persistent )।
Windows फ़ायरवॉल कॉन्फ़िगर करें
यदि आप अपने डेटाबेस को होस्ट करने के लिए Windows PC या सर्वर का उपयोग कर रहे हैं, तो आप इन चरणों का उपयोग करके अपने फ़ायरवॉल को कॉन्फ़िगर कर सकते हैं:
- प्रारंभ मेनू पर राइट-क्लिक करें और चलाएं . चुनें ।
- दौड़ में बॉक्स, टाइप करें wf.msc और ठीक . चुनें ।
- विंडोज डिफेंडर में विंडो में, इनबाउंड नियम select चुनें> नया नियम ।
- नए इनबाउंड नियम विज़ार्ड में विंडो में, पोर्ट . चुनें> अगला ।
- अगले मेनू में, टीसीपी . चुनें विकल्पों में से, टाइप करें 3306 (या जो भी पोर्ट मान आपकी MySQL कॉन्फ़िगरेशन फ़ाइल में सूचीबद्ध है), फिर अगला . चुनें ।
- कार्रवाई . पर मेनू, डिफ़ॉल्ट विकल्प को कनेक्शन की अनुमति दें . पर छोड़ दें सक्षम किया गया है, फिर अगला select चुनें ।
- पुष्टि करें कि आप चाहते हैं कि नियम सभी नेटवर्क प्रकारों पर लागू हो, फिर अगला . चुनें .
- नियम के लिए एक विवरणात्मक नाम लिखें (उदा. MySQL ) दिए गए पोर्ट में, फिर समाप्त करें . चुनें इसे अपने फ़ायरवॉल नियमों की सूची में जोड़ने के लिए।
यदि आपको कनेक्ट करने में समस्या हो रही है, तो एक नया आउटबाउंड नियम . बनाना सुनिश्चित करते हुए, ऊपर दिए गए इन चरणों को दोहराएं समान विवरण (पोर्ट 3306, आदि) का उपयोग करके अपनी फ़ायरवॉल सेटिंग्स में। आपको अपने डेटाबेस में इनबाउंड और आउटबाउंड कनेक्शन की अनुमति देने के लिए आवश्यक अवरुद्ध पोर्ट खोलने के लिए अपने स्थानीय नेटवर्क राउटर को कॉन्फ़िगर करने की भी आवश्यकता हो सकती है।
MySQL का उपयोग करके किसी दूरस्थ सर्वर से कनेक्ट करना
दूरस्थ कनेक्शन की अनुमति देने के लिए अपने MySQL डेटाबेस को कॉन्फ़िगर करने के बाद, आपको वास्तव में इससे एक कनेक्शन स्थापित करना होगा। आप mysql . का उपयोग करके ऐसा कर सकते हैं कमांड (mysql.exe विंडोज़ पर) किसी टर्मिनल या पावरशेल विंडो से।
यदि आप विंडोज चला रहे हैं, तो आपको शुरू करने से पहले यह सुनिश्चित करना होगा कि MySQL स्थानीय रूप से स्थापित है। मैक उपयोगकर्ता टर्मिनल से होमब्रे का उपयोग करके MySQL स्थापित कर सकते हैं (ब्रू इंस्टाल mysql ), जबकि लिनक्स उपयोगकर्ता अपने स्थानीय ऐप रिपॉजिटरी का उपयोग कर सकते हैं (जैसे। sudo apt install mysql ) आवश्यक पैकेज स्थापित करने के लिए।
लिनक्स या मैक पर MySQL से कनेक्ट करना
- Mac या Linux पर अपने दूरस्थ MySQL सर्वर से कनेक्ट करने के लिए, एक नई टर्मिनल विंडो खोलें और टाइप करें mysql -u username -h X.X.X.X:XXXX -p . X.X.X.X:XXXX . को बदलें अपने रिमोट सर्वर आईपी पते और पोर्ट नंबर के साथ (उदा. 100.200.100.200:3306 ) और उपयोगकर्ता नाम अपने MySQL उपयोगकर्ता नाम के साथ।
- संकेत दिए जाने पर, अपने पासवर्ड की पुष्टि करें। यदि कनेक्शन सफल होता है, तो टर्मिनल में एक सफल संदेश दिखाई देगा।
Windows पर MySQL से कनेक्ट करना
- Windows पर दूरस्थ MySQL सर्वर से कनेक्ट करने के लिए, प्रारंभ मेनू पर राइट-क्लिक करके और Windows PowerShell (व्यवस्थापन) का चयन करके एक नई PowerShell विंडो खोलें। ।
- नई पावरशेल विंडो में, टाइप करें cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ सही फ़ोल्डर में प्रवेश करने के लिए, इस निर्देशिका को अपने पीसी पर सही स्थापना निर्देशिका के साथ बदलें। उदाहरण के लिए, यदि आपका MySQL का संस्करण 8.0.1 है, तो MySQL कार्यक्षेत्र 8.0.1 का उपयोग करें। इसके बजाय फ़ोल्डर।
- वहां से, टाइप करें .\mysql.exe -u उपयोगकर्ता नाम -h X.X.X.X:XXXX -p . X.X.X.X:XXXX . को बदलें अपने रिमोट सर्वर आईपी पते और पोर्ट नंबर के साथ (उदा. 100.200.100.200:3306 ) और उपयोगकर्ता नाम एक MySQL उपयोगकर्ता नाम के साथ जो रिमोट एक्सेस की अनुमति देता है (जैसे रूट ) किसी भी अतिरिक्त ऑन-स्क्रीन निर्देशों का पालन करें।
- साइन-इन प्रक्रिया को पूरा करने और दूरस्थ रूप से अपने MySQL डेटाबेस तक पहुंचने के लिए संकेत मिलने पर अपना पासवर्ड प्रदान करें।
यदि यह काम नहीं करता है, तो इन चरणों का उपयोग करके और -h localhost का उपयोग करके SSH (या इसे सीधे एक्सेस करें) का उपयोग करके अपने MySQL सर्वर को होस्ट करने वाले सर्वर या पीसी से कनेक्ट करें। तर्क। फिर आप नीचे दिए गए चरणों का पालन करके एक उपयुक्त उपयोगकर्ता खाता बना सकते हैं।
दूरस्थ उपयोगकर्ता को किसी MySQL डेटाबेस तक पहुंच की अनुमति देना
इस बिंदु तक, आप अपने सर्वर के रूट उपयोगकर्ता खाते या उन्नत विशेषाधिकार वाले किसी अन्य उपयोगकर्ता खाते का उपयोग करके दूरस्थ रूप से अपने MySQL सर्वर से कनेक्ट करने में सक्षम होना चाहिए। चूंकि पहुंच का यह स्तर असुरक्षित है, आप अपने MySQL डेटाबेस तक पहुंचने के लिए अधिक प्रतिबंधित खाता बनाना पसंद कर सकते हैं।
इस खाते की आपके MySQL सर्वर तक सीमित पहुंच होगी, जो इसे केवल चयनित डेटाबेस के साथ सहभागिता करने की अनुमति देगा। यह अधिक गंभीर परिवर्तन करने में सक्षम नहीं होगा, जैसे अन्य डेटाबेस डेटा तक पहुंच बनाना, नए उपयोगकर्ता खाते बनाना आदि।
आपके पास दूरस्थ रूप से अपने MySQL सर्वर में साइन इन करने की क्षमता होनी चाहिए। यदि आप दूरस्थ रूप से अपने रूट खाते का उपयोग नहीं कर सकते हैं, तो आपको mysql का उपयोग करके अपने सर्वर के शेल तक पहुंचने की आवश्यकता होगी। रिमोट एसएसएच कनेक्शन के माध्यम से या सर्वर को होस्ट करने वाले पीसी या सर्वर तक सीधे पहुंचकर आदेश दें।
- आपके दूरस्थ MySQL शेल में (mysql . का उपयोग करके) टूल), टाइप करें उपयोगकर्ता "उपयोगकर्ता नाम"@"x.x.x.x" बनाएं "पासवर्ड" द्वारा पहचाना गया; और दर्ज करें . चुनें . उपयोगकर्ता नाम बदलें उस उपयोगकर्ता नाम से जिसे आप बनाना चाहते हैं, x.x.x.x जिस आईपी पते से आप कनेक्ट करना चाहते हैं, और पासवर्ड उपयुक्त पासवर्ड के साथ।
- आपको अपना नया खाता आवश्यक अनुमतियों के साथ देना होगा। ऐसा करने के लिए, डेटाबेसनाम पर सभी को अनुदान दें।* उपयोगकर्ता नाम@"x.x.x.x" पर टाइप करें; और डेटाबेसनाम, उपयोगकर्ता नाम, . को बदलें और x.x.x.x सही विवरण के साथ। यदि आप चाहें, तो डेटाबेसनाम . को बदलें * . के साथ इसे सभी डेटाबेस तक पहुंच प्रदान करने के लिए।
पहुँच प्रदान होने पर, अपने नए खाते का उपयोग करके दूरस्थ रूप से अपने सर्वर से कनेक्ट करने के लिए उपरोक्त अनुभाग में दिए गए चरणों का उपयोग करें (उदा. mysql -u उपयोगकर्ता नाम -h X.X.X.X:XXXX -p )।
अपना डेटाबेस डेटा सुरक्षित करना
चाहे आप MySQL या किसी अन्य प्रकार के SQL डेटाबेस के साथ काम कर रहे हों, अपनी डेटा सुरक्षा बनाए रखने के लिए अपने कनेक्शन को सुरक्षित रखना महत्वपूर्ण है। ऐसा करने का एक अच्छा तरीका यह है कि पुराने (और आसानी से अनुमान लगाने योग्य) पासवर्ड पर निर्भर रहने के बजाय अपने सर्वर तक दूरस्थ पहुंच के लिए SSH कुंजियाँ उत्पन्न करें।
यदि आप डेटा हानि के बारे में चिंतित हैं, तो आप आसानी से अपने डेटाबेस का ऑनलाइन बैकअप ले सकते हैं। अधिकांश डेटाबेस Linux सर्वर का उपयोग करके चलाए जाते हैं—आप आसानी से Linux फ़ाइल बैकअप को स्वचालित कर सकते हैं। यदि आप Windows पर MySQL चला रहे हैं, तो आप Windows के लिए एक समान स्वचालित बैकअप सिस्टम सेट कर सकते हैं, जिससे आप किसी आपात स्थिति में अपना डेटा पुनर्स्थापित कर सकते हैं।