एंड्रॉयड

कैसे mysql डेटाबेस सर्वर के लिए दूरस्थ कनेक्शन की अनुमति दें

AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka

AWS Tutorial For Beginners | AWS Full Course - Learn AWS In 10 Hours | AWS Training | Edureka

विषयसूची:

Anonim

डिफ़ॉल्ट रूप से, MySQL सर्वर केवल लोकलहोस्ट से कनेक्शन के लिए सुनता है, जिसका अर्थ है कि इसे केवल उसी होस्ट पर चल रहे एप्लिकेशन तक पहुँचा जा सकता है।

हालाँकि, कुछ स्थितियों में, दूरस्थ स्थान से MySQL सर्वर तक पहुँच आवश्यक है। उदाहरण के लिए, जब आप अपने स्थानीय सिस्टम से दूरस्थ MySQL सर्वर से कनेक्ट करना चाहते हैं, या एक बहु-सर्वर परिनियोजन का उपयोग करते समय जहां एप्लिकेशन डेटाबेस सर्वर से एक अलग मशीन पर चल रहा है। एक विकल्प SSH टनल के माध्यम से MySQL सर्वर को एक्सेस करना होगा और दूसरा रिमोट कनेक्शन स्वीकार करने के लिए MySQL सर्वर को कॉन्फ़िगर करना है।

इस गाइड में, हम एक MySQL सर्वर को रिमोट कनेक्शन की अनुमति देने के लिए आवश्यक चरणों से गुजरेंगे। मारियाडीबी के लिए वही निर्देश लागू होते हैं।

MySQL सर्वर को कॉन्फ़िगर करना

पहला कदम एक विशिष्ट आईपी पते या मशीन पर सभी आईपी पते को सुनने के लिए MySQL सर्वर सेट करना है।

यदि MySQL सर्वर और क्लाइंट निजी नेटवर्क पर एक दूसरे के साथ संवाद कर सकते हैं, तो सबसे अच्छा विकल्प MySQL सर्वर को केवल निजी आईपी पर सुनने के लिए सेट करना है। अन्यथा, यदि आप किसी सार्वजनिक नेटवर्क पर सर्वर से कनेक्ट करना चाहते हैं तो मशीन पर सभी आईपी पते पर सुनने के लिए MySQL सर्वर सेट करें।

ऐसा करने के लिए, आपको MySQL कॉन्फ़िगरेशन फ़ाइल को संपादित करने और bind-address विकल्प के मूल्य को जोड़ने या बदलने की आवश्यकता है। आप एक एकल आईपी पता और आईपी रेंज सेट कर सकते हैं। यदि पता 0.0.0.0 , तो MySQL सर्वर सभी होस्ट IPv4 इंटरफेस पर कनेक्शन स्वीकार करता है। यदि आपके पास आपके सिस्टम पर IPv6 कॉन्फ़िगर है, तो 0.0.0.0 बजाय, :: उपयोग करें।

वितरण के आधार पर MySQL कॉन्फ़िगरेशन फ़ाइल का स्थान भिन्न होता है। उबंटू और डेबियन में फ़ाइल /etc/mysql/mysql.conf.d/mysqld.cnf पर स्थित है, जबकि Red Hat आधारित वितरण जैसे CentOS में, फ़ाइल /etc/my.cnf पर स्थित है।

अपने पाठ संपादक के साथ फ़ाइल खोलें:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

एक पंक्ति के लिए खोजें जो bind-address शुरू होती है और इसके मूल्य को आईपी पते पर सेट करती है जिस पर एक MySQL सर्वर को सुनना चाहिए।

डिफ़ॉल्ट रूप से, मान 127.0.0.1 सेट होता है (केवल स्थानीयहोस्ट में सुनता है)।

इस उदाहरण में, हम मान को 0.0.0.0 बदलकर सभी IPv4 इंटरफेस पर सुनने के लिए MySQL सर्वर सेट करेंगे

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

यदि कोई लाइन है जिसमें skip-networking , तो उसे हटा दें या लाइन की शुरुआत में # जोड़कर टिप्पणी करें।

MySQL 8.0 और उच्चतर में, bind-address निर्देश मौजूद नहीं हो सकता है। इस मामले में, इसे के तहत जोड़ें अनुभाग।

एक बार हो जाने के बाद, परिवर्तनों को प्रभावी करने के लिए MySQL सेवा को पुनरारंभ करें। केवल रूट या sudo विशेषाधिकार वाले उपयोगकर्ता सेवाओं को पुनः आरंभ कर सकते हैं।

डेबियन या उबंटू पर MySQL सेवा को पुनरारंभ करने के लिए, टाइप करें:

sudo systemctl restart mysql

RedHat पर आधारित सेवा को फिर से शुरू करने के लिए CentOS जैसे वितरण:

sudo systemctl restart mysqld

रिमोट मशीन से उपयोगकर्ता तक पहुँच प्रदान करना

अगला कदम दूरस्थ उपयोगकर्ता के लिए डेटाबेस तक पहुंच की अनुमति देना है।

टाइप करके मूल उपयोगकर्ता के रूप में MySQL सर्वर में लॉग इन करें:

sudo mysql

mysql -uroot -p

MySQL शेल के अंदर से, रिमोट यूजर के लिए एक्सेस देने के लिए GRANT स्टेटमेंट का उपयोग करें।

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

कहाँ पे:

  • database_name उस database_name का नाम है जिसे उपयोगकर्ता कनेक्ट करेगा। user_name नाम MySQL उपयोगकर्ता od है। ip_address आईपी ​​एड्रेस है जिससे उपयोगकर्ता कनेक्ट होगा। उपयोगकर्ता को किसी भी आईपी पते से कनेक्ट करने की अनुमति देने के लिए % का उपयोग करें। user_password उपयोगकर्ता पासवर्ड है।

उदाहरण के लिए, आईपी 10.8.0.5 साथ एक क्लाइंट मशीन से पासवर्ड my_passwd साथ foo नामक एक उपयोगकर्ता को डेटाबेस dbname तक पहुंच प्रदान करने के लिए, आप दौड़ेंगे:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

फ़ायरवॉल को कॉन्फ़िगर करना

अंतिम चरण दूरस्थ मशीनों से पोर्ट 3306 (MySQL डिफ़ॉल्ट पोर्ट) पर ट्रैफ़िक की अनुमति देने के लिए अपने फ़ायरवॉल को कॉन्फ़िगर करना है।

iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

किसी विशिष्ट IP पते से पहुंच की अनुमति दें:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

यूएफडब्ल्यू उबंटू में डिफ़ॉल्ट फ़ायरवॉल टूल है। इंटरनेट पर किसी भी आईपी पते से प्रवेश की अनुमति देने के लिए (बहुत असुरक्षित) रन:

sudo ufw allow 3306/tcp

किसी विशिष्ट IP पते से पहुंच की अनुमति दें:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD CentOS में डिफ़ॉल्ट फ़ायरवॉल प्रबंधन उपकरण है। इंटरनेट पर किसी भी आईपी पते से पहुंच की अनुमति देने के लिए (बहुत असुरक्षित) प्रकार:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

एक विशिष्ट पोर्ट पर एक विशिष्ट आईपी पते से पहुंच की अनुमति देने के लिए, आप या तो एक नया फ़ायरवॉलडी ज़ोन बना सकते हैं या एक समृद्ध नियम का उपयोग कर सकते हैं। खैर mysqlzone नाम से एक नया क्षेत्र mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

बदलावों का सत्यापन

यह सत्यापित करने के लिए कि दूरस्थ उपयोगकर्ता MySQL सर्वर से जुड़ सकता है, निम्नलिखित कमांड चलाएगा:

mysql -u user_name -h mysql_server_ip -p

जहाँ user_name उस उपयोगकर्ता का नाम है जिसे आपने एक्सेस किया था और mysql_server_ip होस्ट का IP पता है जहाँ MySQL सर्वर चलता है।

यदि सब कुछ सही ढंग से सेटअप किया गया है, तो आप दूरस्थ MySQL सर्वर पर लॉगिन कर पाएंगे।

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

नीचे दी गई त्रुटि इंगित कर रही है कि आप जिस उपयोगकर्ता को लॉग इन करने का प्रयास कर रहे हैं, उसके पास दूरस्थ MySQL सर्वर तक पहुँचने की अनुमति नहीं है।

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

निष्कर्ष

MySQL, डिफ़ॉल्ट रूप से सबसे लोकप्रिय ओपन-सोर्स डेटाबेस सर्वर, केवल लोकलहोस्ट पर आने वाले कनेक्शन के लिए सुनता है।

माईएसक्यूएल सर्वर से दूरस्थ कनेक्शन की अनुमति देने के लिए, आपको निम्न चरणों का पालन करना होगा:

  1. सभी या किसी विशिष्ट इंटरफ़ेस पर सुनने के लिए MySQL सर्वर को कॉन्फ़िगर करें। दूरस्थ उपयोगकर्ता तक पहुँच प्राप्त करें। अपने फ़ायरवॉल में MySQL पोर्ट को खोलें।
mysql मारीदब