আমি একটি দূরবর্তী মাইএসকিএল সার্ভারের সাথে সংযোগ দেওয়ার চেষ্টা করছি। এটি ঘটে 100% সময়।
ক্লায়েন্ট: উইন 32 (এএমডি 64)
সার্ভারের জন্য মাইএসকিএল ভের 14.14 ডিস্ট্রিবিউট 5.7.12: 5.0.95
এই ত্রুটিটি আমি পেয়েছি:
C:\>mysql -h example.com -P 3306 -D prod_rcadb -u username -p
Enter password: **********
ERROR 2027 (HY000): Malformed packet
মাইসক্ল্যাডমিনের সাথে একই ত্রুটি:
C:\>mysqladmin -h example.com -P 3306 -u username -p version
Enter password: **********
mysqladmin: connect to server at '10.106.24.79' failed
error: 'Malformed packet'
সুতরাং আমি একটি পিসিএপ নিয়েছি, কেবল সেই কথোপকথনের চেহারাটি কী তা ধারণা পেতে।
টিসিপি হ্যান্ডশেক:
1 2016-04-14 11:18:48.910690 0.000000 137.69.150.80 10.106.24.79 TCP 66 51157→3306 [SYN] Seq=0 Win=8192 Len=0 MSS=1428 WS=256 SACK_PERM=1 8192
2 2016-04-14 11:18:49.019893 0.109203 10.106.24.79 137.69.150.80 TCP 66 3306→51157 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=256 5840
3 2016-04-14 11:18:49.019893 0.000000 137.69.150.80 10.106.24.79 TCP 54 51157→3306 [ACK] Seq=1 Ack=1 Win=65536 Len=0 256
MySQL সংযোগ আলোচনা:
4 2016-04-14 11:18:49.144696 0.124803 10.106.24.79 137.69.150.80 MySQL 110 Server Greeting proto=10 version=5.0.95 23
5 2016-04-14 11:18:49.144696 0.000000 137.69.150.80 10.106.24.79 MySQL 119 Login Request user=bigdata 256<br>
6 2016-04-14 11:18:49.144696 0.000000 10.106.24.79 137.69.150.80 TCP 60 3306→51157 [ACK] Seq=57 Ack=66 Win=5888 Len=0 23
7 2016-04-14 11:18:49.316301 0.171605 10.106.24.79 137.69.150.80 MySQL 60 Response 23
সুতরাং ক্লায়েন্ট টিসিপি স্তরে সংযোগ স্থাপন করে, সার্ভার সমর্থিত বিকল্প এবং স্থিতি সহ আমাদের স্বাগত জানায়:
Server Capabilities: 0xa22c
.... .... .... ...0 = Long Password: Not set
.... .... .... ..0. = Found Rows: Not set
.... .... .... .1.. = Long Column Flags: Set
.... .... .... 1... = Connect With Database: Set
.... .... ...0 .... = Don't Allow database.table.column: Not set
.... .... ..1. .... = Can use compression protocol: Set
.... .... .0.. .... = ODBC Client: Not set
.... .... 0... .... = Can Use LOAD DATA LOCAL: Not set
.... ...0 .... .... = Ignore Spaces before '(': Not set
.... ..1. .... .... = Speaks 4.1 protocol (new flag): Set
.... .0.. .... .... = Interactive Client: Not set
.... 0... .... .... = Switch to SSL after handshake: Not set
...0 .... .... .... = Ignore sigpipes: Not set
..1. .... .... .... = Knows about transactions: Set
.0.. .... .... .... = Speaks 4.1 protocol (old flag): Not set
1... .... .... .... = Can do 4.1 authentication: Set
Server Language: latin1 COLLATE latin1_swedish_ci (8)
ক্লায়েন্ট একটি লগইন অনুরোধ:
.... .... .... ...1 = Long Password: Set
.... .... .... ..0. = Found Rows: Not set
.... .... .... .1.. = Long Column Flags: Set
.... .... .... 0... = Connect With Database: Not set
.... .... ...0 .... = Don't Allow database.table.column: Not set
.... .... ..0. .... = Can use compression protocol: Not set
.... .... .0.. .... = ODBC Client: Not set
.... .... 1... .... = Can Use LOAD DATA LOCAL: Set
.... ...0 .... .... = Ignore Spaces before '(': Not set
.... ..1. .... .... = Speaks 4.1 protocol (new flag): Set
.... .0.. .... .... = Interactive Client: Not set
.... 0... .... .... = Switch to SSL after handshake: Not set
...0 .... .... .... = Ignore sigpipes: Not set
..1. .... .... .... = Knows about transactions: Set
.0.. .... .... .... = Speaks 4.1 protocol (old flag): Not set
1... .... .... .... = Can do 4.1 authentication: Set
Extended Client Capabilities: 0x81be
.... .... .... ...0 = Multiple statements: Not set
.... .... .... ..1. = Multiple results: Set
.... .... .... .1.. = PS Multiple results: Set
.... .... .... 1... = Plugin Auth: Set
.... .... ...1 .... = Connect attrs: Set
.... .... ..1. .... = Plugin Auth LENENC Client Data: Set
.... .... 1... .... = Session variable tracking: Set
1000 0001 .0.. .... = Unused: 0x0204
সার্ভার স্বীকার করে, তারপরে একটি প্রতিক্রিয়া প্রেরণ করে, যা মূলত খালি…
Packet Length: 1
Packet Number: 2
EOF marker: 254
এবং এটি অবিলম্বে ক্লায়েন্টকে এফআইএন করতে এবং সকেটটি বন্ধ করে দেয়:
8 2016-04-14 11:18:49.316301 0.000000 137.69.150.80 10.106.24.79 TCP 54 51157→3306 [FIN, ACK] Seq=66 Ack=62 Win=65536 Len=0 256
9 2016-04-14 11:18:49.332901 0.016600 10.106.24.79 137.69.150.80 TCP 60 3306→51157 [ACK] Seq=62 Ack=67 Win=5888 Len=0 23
10 2016-04-14 11:18:49.391904 0.059003 10.106.24.79 137.69.150.80 TCP 60 3306→51157 [FIN, ACK] Seq=62 Ack=67 Win=5888 Len=0 23
11 2016-04-14 11:18:49.391904 0.000000 137.69.150.80 10.106.24.79 TCP 54 51157→3306 [ACK] Seq=67 Ack=63 Win=65536 Len=0 256
সুতরাং সংযোগকারী ক্লায়েন্ট সার্ভার প্রেরিত সেই খালি প্যাকেটটি পছন্দ করেনি।
আমি একই ক্লায়েন্টের কাছ থেকে একই সংস্করণের আর একটি মাইএসকিএল সার্ভারের বিরুদ্ধে পাই না। সার্ভার 2 থেকে লগইন অনুরোধের প্রতিক্রিয়া প্যাকেটটি এখানে:
Packet Length: 7
Packet Number: 2
Affected Rows: 0
Server Status: 0x0002
.... .... .... ...0 = In transaction: Not set
.... .... .... ..1. = AUTO_COMMIT: Set
.... .... .... .0.. = More results: Not set
.... .... .... 0... = Multi query - more resultsets: Not set
.... .... ...0 .... = Bad index used: Not set
.... .... ..0. .... = No index used: Not set
.... .... .0.. .... = Cursor exists: Not set
.... .... 0... .... = Last row sent: Not set
.... ...0 .... .... = database dropped: Not set
.... ..0. .... .... = No backslash escapes: Not set
.... .0.. .... .... = Session state changed: Not set
.... 0... .... .... = Query was slow: Not set
...0 .... .... .... = PS Out Params: Not set
আমি নিজে এই ডিবি পরিচালনা করি না, তবে লগগুলিতে সন্ধানের জন্য আপনার কাছে পরামর্শ থাকলে, আমি সেই তথ্যের জন্য অনুরোধ করতে পারি।
আমি সার্ভার থেকে খালি প্যাকেটটি কেন পাব এ সম্পর্কে কোনও চিন্তা?
SELECT PASSWORD('abc');
অথবা কিছু অনলাইন জেনারেটর ব্যবহার করুন: ব্রাউজারিং