फिर से शुरू किया गया समाधान:
मैंने उस mysqld को मार दिया जिसमें 3306 पोर्ट था और इसे फिर से शुरू किया।
मुझे लगता है कि यह एक बग या कुछ संबंधित जांच है जो मैंने चरण-दर-चरण की है:
1- 3306 को कनेक्ट करने के लिए एक प्रोग्राम बनाया
सबसे पहले मैं यह सुनिश्चित करने के लिए जावा में एक साधारण प्रोग्राम बनाता हूं कि मेरे फ़ायरवॉल में कोई समस्या नहीं है। कार्यक्रम सिर्फ परीक्षण के लिए केवल 2 मिनट में टीसीपी कनेक्शन के साथ 3306 पर एक बंदरगाह खोलता है, कार्यक्रम:
import java.io.IOException;
import java.net.ServerSocket;
public class PortMysqlTest {
public static void main(String[] args) {
int port = 3306;
ServerSocket ss = null;
try
{
ss = new ServerSocket(port);
ss.setReuseAddress(true);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
long futureTime = System.currentTimeMillis() + 1000 * 60 * 2;
while (System.currentTimeMillis() < futureTime)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (ss != null)
{
try
{
ss.close();
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
2- mysql सेवा बंद कर दी
कार्यक्रम को क्रियान्वित करने से पहले मैंने mysql सेवा बंद कर दी:
sudo service mysql stop
या इसके साथ किया जा सकता है:
/etc/init.d/mysql stop
3- java PortMysqlTest के साथ मेरा प्रोग्राम शुरू किया
मेरा प्रोग्राम (PortMysqlTest) एक अपवाद फेंकता है जिसमें कहा गया है कि पता/पोर्ट जैसा कि पहले से ही mysqld द्वारा उपयोग किया जा रहा है!
आश्चर्य? जहां तक मुझे पता है कि MySQL सेवा बंद कर दी गई है, बंदरगाह मुक्त होना चाहिए। क्या मैं सही हूँ? (मैं इस बारे में निश्चित नहीं हूं कि क्या कोई इसका उत्तर दे सकता है...)
4- मैंने उस एप्लिकेशन पीआईडी की खोज की जो पते/पोर्ट का उपयोग कर रहा था:
sudo netstat -lpn | grep 3306
उत्तर:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6736/mysqld
5- मैंने इस प्रक्रिया को समाप्त कर दिया:
kill -9 6736
ओबीएस, अगर आपको नहीं पता कि किल डू:6736 वह प्रक्रिया है जो पोर्ट को पकड़ रही थी, तो मुझे यह नंबर चरण 4, 6736/mysqld
के साथ मिला।6- अब मैं अपना प्रोग्राम फिर से चलाता हूं:
java PortMysqlTest और टेलनेट (टेलनेट 66.123.173.170 3306) से कनेक्टेड बाहरी और यह काम करता है !
तो समस्या फ़ायरवॉल नहीं थी , क्योंकि मैं मशीन से 66.123.173.170 बाहरी रूप से जुड़ सकता था।
7- mysql सेवा फिर से शुरू की:
(मैंने अपने कार्यक्रम के लिए 2 मिनट इंतजार किया और 3306 पोर्ट को बंद कर दिया) और परीक्षण करने के लिए फिर से mysql सेवा शुरू की:
sudo service mysql start
या
sudo /etc/init.d/mysql start
8- मैं टेलनेट के साथ बाहरी रूप से जुड़ा था:
telnet 66.123.173.170 3306
और काम किया!!!
मेरे द्वारा mysql से कनेक्ट करने का प्रयास करने के बाद:
mysql -h 66.123.173.170 -u root -p
और काम किया!!!
निष्कर्ष: मुझे लगता है कि मेरी MySQL स्थापना के साथ एक बग था; या कुछ, (मुझे नहीं पता कि क्या है), MySQL को पुनरारंभ करते समय MySQL को कॉन्फ़िगरेशन नहीं मिलता है:
bind-address = 0.0.0.0
या
bind-address = *
मुझे आशा है कि यह किसी और की मदद करेगा।