मैक ओएस एक्स में MySQL वर्कबेंच का उपयोग करके दूरस्थ MySQL सर्वर पर 3306 पोर्ट से कनेक्ट नहीं किया जा सकता है


1

मैं MySQL को दूरस्थ रूप से एक्सेस करना चाहता हूं:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

जब कार्यक्षेत्र कनेक्ट करने में विफल रहा, तो मैंने पिंग और टेलनेट के साथ एक नज़र डाली:

Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ ping 192.168.0.21
PING 192.168.0.21 (192.168.0.21): 56 data bytes
64 bytes from 192.168.0.21: icmp_seq=0 ttl=64 time=0.274 ms
64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=0.499 ms
^C
--- 192.168.0.21 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.274/0.387/0.499/0.113 ms
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21 3306
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 

मैं स्थापित कर रहा हूं coreutilsऔर सीखना होगा netstatकि मैक का उपयोग कैसे करना है , और lsof- जाहिर है यह अलग है।

arrakisसर्वर चल रहा है OpenSuSE; यह बंद बंदरगाहों है?

नोट: मैंने मैक पर MySQL स्थापित नहीं किया है, यह मुझे त्रुटियाँ देता है ...

-------------------------------------------------- ----------------------------अपडेट करें

MariaDB [mysql]> 
MariaDB [mysql]> GRANT ALL ON *.* TO `thufir`@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> select host, user, grant_priv from user;
+------------+--------+------------+
| host       | user   | grant_priv |
+------------+--------+------------+
| localhost  | root   | Y          |
| linux-k7qk | root   | Y          |
| 127.0.0.1  | root   | Y          |
| ::1        | root   | Y          |
| localhost  |        | N          |
| linux-k7qk |        | N          |
| %          | cron   | N          |
| localhost  | cron   | N          |
| localhost  | custom | N          |
| %          | custom | N          |
| %          | slave  | N          |
| %          | root   | N          |
| %          | thufir | N          |
+------------+--------+------------+
13 rows in set (0.00 sec)

MariaDB [mysql]> 

3
अगर पिंग काम करता है, लेकिन एक टेलनेट समय से बाहर हो जाता है, तो पोर्ट कहीं से फायरवॉल हो जाता है; शायद आने वाले पर arrakisयह संभव हो सकता है कि मैक पर आउटपोइंग पोर्ट अवरुद्ध हो (लेकिन संभावित नहीं)। यह भी ध्यान दें कि अक्सर mysql 127.0.0.1हमलों को रोकने के लिए बाध्य है , इसलिए आपको mysql सर्वर कॉन्फ़िगरेशन ( bind-address) को संशोधित करना होगा ।
विरतेल

1
एक उत्तर पोस्ट किया है, लेकिन कहा कि, MySQL GRANTकमांड आपके पास IP पते का उपयोग करता है, 192.168.0.16लेकिन आपके सभी pingऔर telnetपरीक्षण के लिए हैं 192.168.0.21। तो यह कौन सा आईपी पता है? जब आप MySQL में अनुदान सेट करते हैं, तो आप क्लाइंट आईपी ​​पते के आधार पर ऐसा करते हैं ; सर्वर आईपी पता नहीं। "पोस्टस्क्रिप्ट" अनुभाग में मेरे पूर्ण उत्तर में अधिक विवरण , लेकिन शायद यह मुद्दा सरल / मूल जैसा कुछ है।
जेकगॉल्ड

जवाबों:


2

MySQL में नेटवर्किंग को सक्षम करने के लिए आपको यह सुनिश्चित करने की आवश्यकता है कि दो चीजों को सही तरीके से संभाला जाए: MySQL अनुदान और MySQL के लिए खुद को सक्षम करने की आवश्यकता है:

MySQL अनुदान सेट करना।

आपकी GRANTआज्ञा मुझे अजीब लगती है:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

'192.168.0.16'सिंगल कोट्स में क्यों है लेकिन उपयोगकर्ता नहीं है? यह '192.168.0.16'मेजबान के लिए एकल उद्धरण के साथ शाब्दिक रूप में देख सकता है । तो इसे इस तरह करने की कोशिश करें:

GRANT ALL ON *.* TO 'thufir@192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

लेकिन जब मैं इस तरह की अनुमति देता हूं, तो दो आदेश होते हैं और वे इस तरह संरचित होते हैं:

GRANT USAGE ON *.* TO 'thufir@192.168.0.16' IDENTIFIED BY 'thufir';
GRANT ALL PRIVILEGES ON *.* TO 'thufir@192.168.0.16';

और फिर अनुदान स्थापित करने के बाद आपको नए विशेषाधिकार प्राप्त करने के लिए विशेषाधिकार तालिका को फ्लश करना होगा:

FLUSH PRIVILEGES;

और आपका जाना अच्छा होना चाहिए।

MySQL नेटवर्किंग सक्षम करें।

लेकिन कहा कि, अपनी जाँच करें my.cnfऔर यदि bind-addressइस तरह की कोई सेटिंग है:

bind-address = 127.0.0.1

यह डिफ़ॉल्ट रूप से MySQL localhost(यानी :) को बाइंड करेगा और MySQL के लिए 127.0.0.1सामान्य "आउट ऑफ बॉक्स" सुरक्षा व्यवहार है क्योंकि डेटाबेस सर्वर को नेटवर्क में उजागर करना एक सुरक्षा जोखिम हो सकता है। इसलिए इस मामले में- चूंकि आपको सक्षम नेटवर्किंग की आवश्यकता है - आपको इसे इस तरह से टिप्पणी करने की आवश्यकता है:

#bind-address = 127.0.0.1

और यह भी सुनिश्चित करें कि skip-networkingइस तरह से टिप्पणी की गई है:

#skip-networking

और फिर नई सेटिंग्स को प्रभावी करने के लिए MySQL सर्वर को पुनरारंभ करें।

परिशिष्ट भाग।

अब उस सभी ने कहा, MySQL GRANTकमांड आपके पास IP पते का उपयोग करता है, 192.168.0.16लेकिन आपके सभी pingऔर telnetपरीक्षण के लिए हैं 192.168.0.21। तो यह कौन सा आईपी पता है? जब आप MySQL में अनुदान सेट करते हैं, तो आप क्लाइंट आईपी ​​पते के आधार पर ऐसा करते हैं ; सर्वर आईपी पता नहीं।

तो अगर सर्वर आईपी पते है 192.168.0.16और ग्राहक आईपी पते है 192.168.0.21, तो MySQL GRANTकमांड का उपयोग करना चाहिए 192.168.0.21और नहीं192.168.0.16 के रूप में अपने उदाहरणों से पता चलता। शायद यह मुद्दा है?


मुझे कल पोस्टस्क्रिप्ट की कोशिश करनी होगी।
थोफिर

1
स्किप-नेटवर्किंग के बारे में आपकी टिप्पणी से मेरी समस्या हल हो गई, अन्य साइटों और उत्तरों में इसका उल्लेख नहीं है। Thx
netadictos
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.