MySQL किस पोर्ट पर परीक्षण कर रहा है और क्या इसे कनेक्ट किया जा सकता है?


143

मैंने MySQL स्थापित किया है और यहां तक ​​कि एक उपयोगकर्ता के रूप में भी लॉग इन किया है।

लेकिन जब मैं इस तरह से जुड़ने की कोशिश करता हूं:

http://localhost:3306
mysql://localhost:3306

न काम करता है। यकीन नहीं होता कि दोनों काम करने वाले हैं, लेकिन उनमें से कम से कम एक चाहिए :)

मैं यह कैसे सुनिश्चित कर सकता हूं कि पोर्ट वास्तव में 3306 है? क्या किसी तरह इसे देखने के लिए एक लिनक्स कमांड है? इसके अलावा, क्या एक यूआरएल के माध्यम से इसे आज़माने का एक और सही तरीका है?

जवाबों:


207

किसी पोर्ट पर श्रोता को खोजने के लिए, यह करें:

netstat -tln

आपको एक लाइन दिखनी चाहिए जो इस तरह दिखती है अगर mysql वास्तव में उस पोर्ट पर सुन रहा है।

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

पोर्ट 3306 MySql का डिफ़ॉल्ट पोर्ट है।

कनेक्ट करने के लिए, आपको बस जो भी क्लाइंट की आवश्यकता होगी, जैसे कि मूल mysql क्लाइंट का उपयोग करना होगा।

mysql -h localhost -u उपयोगकर्ता डेटाबेस

या एक यूआरएल जो आपके पुस्तकालय कोड द्वारा व्याख्या की जाती है।


2
127.0.0.1:3306 के बजाय 0.0.0.0:3306 कहने पर इसका क्या अर्थ है?
mbmast

1
@mbmast 127 ... का मतलब केवल स्थानीय मेजबान पर सुनना (बाहरी रूप से सुलभ नहीं)। 0.0.0.0 का अर्थ है "सभी इंटरफेस", और इसलिए (आमतौर पर) बाहरी रूप से दिखाई देता है।
कीथ

मैंने बाहरी रूप से दिखाई देने के लिए सोचा था, यह मशीन का अपना आईपी पता होना चाहिए था और 0.0.0.0 का मतलब है कि सेवा कहीं से भी उपलब्ध नहीं है। क्या मेरे पास वह गलत है? मेरे पास MySQL चलाने वाला एक बॉक्स है, फ़ायरवॉल में किसी भी IP पते से 3306 खुले हैं, लेकिन MySQL कनेक्शन को मना कर रहा है, मैंने सोचा क्योंकि वर्तमान में MySQL 0.0.0.0 पर सुन रहा है।
mbmast

यह @ bortunac के उत्तर के साथ विलय करना चाहिए, जो -pपैरामीटर को संदर्भित करता है। प्रक्रिया जोड़ना (तों) वास्तव में इस जानकारी को और अधिक उपयोगी बनाने में मदद करता है।
राग

1
@JBeck तीन झंडे, लिनक्स के लिए। टीसीपी, श्रोताओं, कोई नाम देखने की नहीं। देखते हैं man netstat
कीथ


65

grep port /etc/mysql/my.cnf (कम से कम डेबियन / ubuntu काम करता है)

या

netstat -tlpn | grep mysql

सत्यापित करें

बाइंड-पता 127.0.0.1

in /cc/mysql/my.cnf संभव प्रतिबंध देखने के लिए


32
netstat -tlpn

यह सूची को कुछ इस तरह दिखाएगा:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1393/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1859/master
tcp        0      0 123.189.192.64:7654     0.0.0.0:*               LISTEN      2463/monit
tcp        0      0 127.0.0.1:24135         0.0.0.0:*               LISTEN      21450/memcached
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      16781/mysqld

सभी विवरणों के लिए रूट के रूप में उपयोग करें। -tविकल्प, TCP कनेक्शन करने के लिए उत्पादन को सीमित करता है -lसुनने के बंदरगाह, के लिए -pसूचियों प्रोग्राम का नाम और -nपता चलता है की बजाय बंदरगाह के संख्यात्मक संस्करण एक नामित संस्करण।

इस तरह आप प्रक्रिया का नाम और पोर्ट देख सकते हैं।


1
मेरे लिए काम नहीं किया - मुझे "tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -"
ब्रायन

7

केवल -e( --execute) विकल्प का उपयोग करके देखें :

$ mysql -u root -proot -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"                                                                                                       (8s 26ms)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

rootअपने "उपयोगकर्ता नाम" और "पासवर्ड" से बदलें


6

दोनों URL गलत हैं - होना चाहिए

jdbc:mysql://host:port/database

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

शायद आप टीसीपी / आईपी पर सॉकेट का उपयोग करके कनेक्ट कर सकते हैं। की जाँच करें MySQL डॉक्स

Http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html देखें

अपडेट करें:

मैंने MySQL में टेलनेट करने की कोशिश की ( telnet ip 3306), लेकिन यह काम नहीं करता है:

http://lists.mysql.com/win32/253

मुझे लगता है कि आपके दिमाग में यही था।


जब मैंने इसे अपने कोड में आज़माया तो काम नहीं लगता था :( इसके अलावा जब मैंने इसे एक ब्राउज़र में चिपकाया, फ़ायरफ़ॉक्स ने कहा कि यह ऐसा नहीं कर सकता है। मैं इसे कैसे / कहाँ से आज़मा सकता हूँ? - धन्यवाद!
GeekedOut

हाँ, आप इसे ब्राउज़र में नहीं खोल सकते। आपको MySQL JDBC ड्राइवर और जावा कोड की आवश्यकता है।
duffymo

3
यदि आप जावा का उपयोग कर रहे हैं तो ही।
कीथ

मैं डेटाबेस के माध्यम से रेल पर रूबी का उपयोग करके इसे स्थापित करने की कोशिश कर रहा हूं। फाइल। लेकिन मुझे सिर्फ पोर्ट नंबर की जरूरत थी।
GeekedOut

यह वास्तव में सवाल का जवाब नहीं देता है।
एस्फोटो

6

कुछ के लिए एक सरल दृष्टिकोण: यदि आप बस यह जांचना चाहते हैं कि MySQL एक निश्चित पोर्ट पर है या नहीं, तो आप टर्मिनल में निम्न कमांड का उपयोग कर सकते हैं। मैक पर परीक्षण किया गया। 3306 डिफ़ॉल्ट पोर्ट है।

mysql --host=127.0.0.1 --port=3306

यदि आप सफलतापूर्वक MySQL शेल टर्मिनल में लॉग इन करते हैं, तो आप अच्छे हैं! यह वह आउटपुट है जो मुझे एक सफल लॉगिन पर मिलता है।

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9559
Server version: 5.6.21 Homebrew

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

5

3306 mysql के लिए डिफ़ॉल्ट पोर्ट है। इसे देखें:

netstat -nl|grep 3306

इसे यह परिणाम देना चाहिए:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN



3

मेरे लिए, @ joseluisq का उत्तर मिला:

ERROR 1045 (28000): उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' (पासवर्ड का उपयोग कर: NO) के लिए प्रवेश निषेध है।

लेकिन इस तरह से काम किया:

$ mysql -u root@localhost  -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

3

एक मैक ओएस एक्स पर, दो विकल्प हैं। netstatयाlsof

प्रयोग netstatमैक ओएस एक्स पर प्रक्रिया नहीं दिखाएगा। इसलिए नेटस्टैट का उपयोग करके आप केवल पोर्ट द्वारा खोज सकते हैं।
उपयोग lsofकरने से प्रक्रिया का नाम दिखाई देगा।

मैंने निम्नलिखित किया क्योंकि मैं पोर्ट संघर्ष (डॉकटर कंटेनर) का सामना कर रहा था:

netstat -aln | grep 3306

आउटपुट: tcp46 0 0 *.3306 *.* LISTEN

sudo lsof -i -P | grep -i "LISTEN" | grep -i 3306

आउटपुट: mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 (LISTEN)


2

यदि आप एक ऐसी प्रणाली पर हैं, जो netstatउपलब्ध नहीं है (उदाहरण के लिए RHEL 7 और अधिक हाल के डेबियन रिलीज़) तो आप ssनीचे दिए अनुसार उपयोग कर सकते हैं :

sudo ss -tlpn | grep mysql

और आपको आउटपुट के लिए निम्न जैसा कुछ मिलेगा:

LISTEN     0      50        *:3306        *:*        users:(("mysqld",pid=5307,fd=14))

चौथा स्तंभ है Local Address:Port। तो इस मामले में मैसूरल पोर्ट 3306, डिफॉल्ट पर सुन रहा है।


1

मैं @ bortunac के समाधान से सहमत हूं। my.conf mysql विशिष्ट है जबकि netstat आपको सभी सुनने वाले पोर्ट प्रदान करेगा।

शायद दोनों का उपयोग करते हैं, एक यह पुष्टि करने के लिए कि mysql के लिए कौन सा पोर्ट सेट है और दूसरा यह जांचने के लिए कि सिस्टम उस पोर्ट के माध्यम से सुन रहा है।

मेरा ग्राहक CentOS 6.6 का उपयोग करता है और मुझे my.conf फ़ाइल / / / के तहत मिली है, इसलिए मैंने इसका उपयोग किया है:

grep port /etc/my.conf (सेंटोस 6.6)

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