मैंने अपने स्थानीय मशीन पर MySQL सामुदायिक संस्करण 5.5 स्थापित किया है और मैं दूरस्थ कनेक्शन की अनुमति देना चाहता हूं ताकि मैं बाहरी स्रोत से जुड़ सकूं।
मैं उसे कैसे कर सकता हूँ?
sudo mysql_secure_installation
। FYI करें।
मैंने अपने स्थानीय मशीन पर MySQL सामुदायिक संस्करण 5.5 स्थापित किया है और मैं दूरस्थ कनेक्शन की अनुमति देना चाहता हूं ताकि मैं बाहरी स्रोत से जुड़ सकूं।
मैं उसे कैसे कर सकता हूँ?
sudo mysql_secure_installation
। FYI करें।
जवाबों:
MySQL पर डिफ़ॉल्ट रूप से इसकी अनुमति है।
डिफ़ॉल्ट रूप से जो अक्षम है वह रिमोट root
एक्सेस है। यदि आप इसे सक्षम करना चाहते हैं, तो स्थानीय रूप से इस SQL कमांड को चलाएं:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
और फिर निम्न पंक्ति ढूंढें और इसे अपनी my.cnf
फ़ाइल में टिप्पणी करें , जो आमतौर /etc/mysql/my.cnf
पर यूनिक्स / ओएसएक्स सिस्टम पर रहता है । कुछ मामलों में फ़ाइल का स्थान /etc/mysql/mysql.conf.d/mysqld.cnf) है।
यदि यह एक विंडोज सिस्टम है, तो आप इसे MySQL इंस्टॉलेशन डायरेक्टरी में पा सकते हैं, आमतौर पर कुछ ऐसा होता है C:\Program Files\MySQL\MySQL Server 5.5\
और फ़ाइल नाम होगा my.ini
।
लाइन बदलें
bind-address = 127.0.0.1
सेवा
#bind-address = 127.0.0.1
और परिवर्तनों को प्रभावी करने के लिए MySQL सर्वर ( Unix / OSX , और Windows ) को पुनरारंभ करें ।
my.cnf
फ़ाइल की तलाश करने वालों और इसमें कोई bind-address
निर्देश नहीं मिलने पर , ध्यान दें कि मेरे मामले में (MySQL संस्करण 14.14 Ubuntu 16.04.2 पर) फ़ाइल का स्थान था/etc/mysql/mysql.conf.d/mysqld.cnf
उपरोक्त सभी करने के बाद भी मैं root
दूरस्थ रूप से लॉगिन नहीं कर सका , लेकिन पोर्ट को टेलनेटिंग 3306
ने पुष्टि की कि MySQL
कनेक्शन स्वीकार कर रहा था।
मैंने MySQL में उपयोगकर्ताओं को देखना शुरू किया और देखा कि वहाँ थे अलग-अलग पासवर्ड वाले कई रूट उपयोगकर्ता ।
select user, host, password from mysql.user;
इसलिए MySQL
मैंने रूट के लिए सभी पासवर्ड को फिर से सेट किया और मैं अंत में दूरस्थ रूप से लॉग इन कर सकता था root
।
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
मेरे अनुभव से बस एक नोट, आप इस पथ के तहत कॉन्फ़िगरेशन फ़ाइल पा सकते हैं /etc/mysql/mysql.conf.d/mysqld.cnf
।
(मैं इस पथ को खोजने के लिए कुछ समय तक संघर्ष करता रहा)
sudo find /etc -iname 'mysql*.cnf'
मेरे मामले में मैं सेंट ओएस पर एक दूरस्थ mysql सर्वर से कनेक्ट करने का प्रयास कर रहा था। बहुत सारे समाधानों से गुजरने के बाद (सभी विशेषाधिकारों को प्रदान करते हुए, आईपी बाइंडिंग को हटाने, नेटवर्किंग को सक्षम करना) समस्या अभी भी हल नहीं हो रही थी।
जैसा कि यह निकला, विभिन्न समाधानों को देखते हुए, मैं iptables में आया, जिससे मुझे पता चला कि mysql पोर्ट 3306 कनेक्शन स्वीकार नहीं कर रहा है।
यहाँ एक छोटा सा नोट है कि कैसे मैंने इस मुद्दे की जाँच की और हल किया।
टेलनेट (mysql सर्वर आईपी) [portNo]
iptables-INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
सेवा iptables बंद करो
उम्मीद है की यह मदद करेगा।
MySQL यूजर के लिए वाइल्डकार्ड रिमोट एक्सेस सेट करने के लिए कृपया नीचे बताए गए स्टेप इन्वर्टर का पालन करें।
(1) ओपन cmd।
(2) C: \ Program Files \ MySQL \ MySQL Server 5.X \ bin को पथ करने के लिए नेविगेट करें और इस कमांड को चलाएं।
mysql -u रूट -p
(3) रूट पासवर्ड डालें।
(4) अनुमति प्रदान करने के लिए निम्न आदेश निष्पादित करें।
* * 'USERNAME' @ 'IP' को 'PASSWORD' द्वारा IDENTIFIED करने के लिए * सभी सिद्धांतों को प्राप्त करें;
USERNAME: उपयोगकर्ता नाम जिसे आप MySQL सर्वर से कनेक्ट करना चाहते हैं।
IP: सार्वजनिक IP पता जहाँ से आप MySQL सर्वर तक पहुँच की अनुमति देना चाहते हैं।
पासवर्ड: उपयोग किए गए उपयोगकर्ता नाम का पासवर्ड।
उपयोगकर्ता को किसी भी आईपी पते से कनेक्ट करने की अनुमति देने के लिए आईपी को% से बदला जा सकता है।
(५) कमांड और एग्जिट का पालन करके प्रिलिम्स को फ्लश करें।
फ्लश PRIVILEGES;
बाहर जाएं; या \ q
यदि आपकी MySQL सर्वर प्रक्रिया 127.0.0.1 या :: 1 पर ही सुन रही है, तो आप दूरस्थ रूप से कनेक्ट नहीं कर पाएंगे। यदि आपके पास इसमें bind-address
सेटिंग /etc/my.cnf
है तो समस्या का स्रोत हो सकता है।
आपको गैर- localhost
उपयोगकर्ता के लिए भी विशेषाधिकार जोड़ना होगा ।
127.0.0.1
?
यदि आपने इससे MySQL स्थापित किया है तो brew
यह केवल स्थानीय इंटरफ़ेस पर डिफ़ॉल्ट रूप से सुनता है। है कि आप संपादित करने की जरूरत है ठीक करने के लिए /usr/local/etc/my.cnf
और परिवर्तन bind-address
से 127.0.0.1
करने के लिए *
।
फिर चला brew services restart mysql
।
रिमोट लॉगिन के लिए सभी प्रक्रिया। रिमोट लॉगिन डिफ़ॉल्ट रूप से बंद है। आपको इसे सभी आईपी के लिए मैन्युअल रूप से खोलने की आवश्यकता है
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
विशिष्ट आई.पी.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
फिर
flush privileges;
आप अपने उपयोगकर्ता होस्ट और पासवर्ड की जांच कर सकते हैं
SELECT host,user,authentication_string FROM mysql.user;
अब आपका कर्तव्य यह बदलना है
bind-address = 127.0.0.1
आप इस पर पा सकते हैं
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
अगर आपको वहां पर यह नहीं मिला है, तो यह प्रयास करें
sudo nano /etc/mysql/my.cnf
इसमें टिप्पणी करें
#bind-address = 127.0.0.1
फिर मैसूर को पुनः आरंभ करें
sudo service mysql restart
अब रिमोट लॉगिन का आनंद लें
सिर्फ FYI करें मैंने अपने बालों को घंटों तक इस समस्या से बाहर निकाला। आखिरकार मैंने अपने होस्टिंग प्रदाता को कॉल किया और पाया कि मेरे मामले में क्लाउड सर्वर का उपयोग करते हुए कि 1and1 के लिए कंट्रोल पैनल में उनके पास एक द्वितीयक फ़ायरवॉल है जिसे आपको क्लोन करना है और पोर्ट जोड़ना है 3306. एक बार जोड़ा मैं सीधे में मिला ..
यह ब्लॉग कैसे स्थानीय क्षेत्र नेटवर्क पर एक MySQL सर्वर सेटअप करने के लिए एक MySQL
खरोंच से स्थापित करने में उपयोगी होगा
और ओएस एक्स के लिए लोगों को पता है कि बाइंड-एड्रेस पैरामीटर आमतौर पर लॉन्च प्लिस्ट में सेट किया गया है न कि my.info फ़ाइल में। तो मेरे मामले में, मैं हटा दिया <string>--bind-address=127.0.0.1</string>
से /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
।
~/Library/LaunchAgents
यदि किसी लूपबैक / स्थानीय पते (जैसे ) के लिए mysqld
एक बाइंड पता निर्धारित है 127.0.0.1
, तो सर्वर दूरस्थ होस्ट से उपलब्ध नहीं होगा, क्योंकि किसी भी दूरस्थ होस्ट से लूपबैक इंटरफ़ेस तक नहीं पहुँचा जा सकता है।
यदि आप किसी इंटरफ़ेस पर केवल कनेक्शन की अनुमति देना चाहते हैं, तो किसी भी होस्ट से या किसी अन्य बाहरी पते पर कनेक्शन स्वीकार करने के लिए 0.0.0.0
( ::
IPv4 + 6 के लिए) इस विकल्प को सेट करें ।
कुछ बार विंडोज़ पर पीसी के नाम का उपयोग करने की आवश्यकता होती है
पहला चरण) mysql की कॉन्फिग फाइल में डालें:
mysqld.cnf SET बाइंड-एड्रेस = 0.0.0.0
(tcp / ip पर पुन: कनेक्शन देने के लिए)
दूसरा चरण) mysql में उपयोगकर्ता बनायें, तालिका उपयोक्ता पर पीसी के नाम के साथ तालिका उपयोगकर्ता , न कि आईपी
रिमोट रूट एक्सेस को सक्षम करना खतरनाक हो सकता है। यदि आप अधिक प्रतिबंधात्मक अनुमतियों के साथ उपयोगकर्ता खाते सेट करना चाहते हैं, तो यह बेहतर होगा। निम्नलिखित तीन चरणों को करना चाहिए।
सुनिश्चित करें कि आपके साथ शुरू होने वाली लाइन bind-address ...
आपके my.ini या my.cnf फ़ाइल में कम से कम टिप्पणी की गई है। यदि यह मौजूद नहीं है, तो आगे बढ़ें। आप इस फाइल C:\ProgramData\MySQL\MySQL Server 8.0
को विंडोज पर पा सकते हैं ।
बाद में, जांचें कि आप जिस उपयोगकर्ता खाते के साथ कनेक्शन स्थापित कर रहे हैं localhost
, वह सीमा में होस्ट्स मैचिंग फ़ील्ड में नहीं है। हालांकि यह अनुशंसित नहीं है, आप इसके बजाय %
परीक्षण उद्देश्यों के लिए उस क्षेत्र में रख सकते हैं। आप MySQL वर्कबेंच के साथ सर्वर से एक स्थानीय कनेक्शन खोलकर ऐसा कर सकते हैं, फिर मेनू बार से सर्वर> उपयोगकर्ताओं और विशेषाधिकार पर जा सकते हैं और उस उपयोगकर्ता खाते को खोज सकते हैं जिसे आप कनेक्ट करना चाहते हैं।
"होस्ट्स टू होस्ट्स मैचिंग" फ़ील्ड वह है जो आपको गैर-स्थानीय रूप से कनेक्ट करने के लिए नापसंद है। यानी यह स्वीकृत पतों को IP पतों के पैटर्न में सीमित करता है। आदर्श रूप से, आपको स्थैतिक आईपी पते या सबनेट से MySQL सर्वर तक पहुंच प्राप्त करनी चाहिए, ताकि आप यथासंभव प्रतिबंधात्मक हो सकें।