เมื่อใช้ไคลเอนต์ MySQL (เช่นmysql) ฉันจะทราบได้อย่างไรว่าเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ไฟล์ซ็อกเก็ต Unix หรือใช้ TCP / IP
เมื่อใช้ไคลเอนต์ MySQL (เช่นmysql) ฉันจะทราบได้อย่างไรว่าเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ไฟล์ซ็อกเก็ต Unix หรือใช้ TCP / IP
คำตอบ:
ลองใช้netstat -ln | grep 'mysql'และคุณสามารถดูว่ามันเชื่อมต่อโดยเอาท์พุท หากคุณมีสิทธิ์เข้าถึงเชลล์
ใน Unix โปรแกรม MySQL จะปฏิบัติต่อ hosthost local ชื่อเป็นพิเศษในลักษณะที่แตกต่างจากสิ่งที่คุณคาดหวังเมื่อเทียบกับโปรแกรมที่ใช้เครือข่ายอื่น ๆ สำหรับการเชื่อมต่อกับ localhost โปรแกรม MySQL พยายามเชื่อมต่อกับเซิร์ฟเวอร์ภายในโดยใช้ไฟล์ซ็อกเก็ต Unix
สิ่งนี้เกิดขึ้นแม้ว่าจะมีการกำหนดตัวเลือก--portหรือ-Pเพื่อระบุหมายเลขพอร์ต
หากคุณต้องการทราบประเภทการเชื่อมต่อจากภายใน mysql CLI ให้ใช้คำสั่ง '\ s' (สถานะ)
mysql> \s
เอาต์พุตจะมีบรรทัดเหมือนหนึ่งในตัวอย่างต่อไปนี้ (บน Unix)
Connection:             127.0.0.1 via TCP/IP
หรือ
Connection:             Localhost via UNIX socket
เพื่อให้แน่ใจว่าไคลเอนต์ทำการเชื่อมต่อ TCP / IP กับเซิร์ฟเวอร์ภายในให้ใช้--hostหรือ-hเพื่อระบุค่าชื่อโฮสต์ที่ 127.0.0.1 หรือที่อยู่ IP หรือชื่อของเซิร์ฟเวอร์ภายใน คุณยังสามารถระบุโปรโตคอลการเชื่อมต่อได้อย่างชัดเจนแม้กระทั่งสำหรับโฮสต์ในพื้นที่โดยใช้--protocol=TCPตัวเลือก ตัวอย่างเช่น:
shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP
--protocol={TCP|SOCKET|PIPE|MEMORY}ตัวเลือกที่ชัดเจนระบุโปรโตคอลที่จะใช้สำหรับการเชื่อมต่อไปยังเซิร์ฟเวอร์ มันจะมีประโยชน์เมื่อพารามิเตอร์การเชื่อมต่ออื่น ๆ ตามปกติจะทำให้โปรโตคอลที่จะใช้นอกเหนือจากที่คุณต้องการ ตัวอย่างเช่นการเชื่อมต่อบน Unix to localhost นั้นใช้ไฟล์ซ็อกเก็ต Unix ตามค่าเริ่มต้น:
shell> mysql --host=localhost
หากต้องการบังคับใช้การเชื่อมต่อ TCP / IP แทนให้ระบุ--protocolตัวเลือก:
shell> mysql --host=localhost --protocol=TCP
การเชื่อมต่อไฟล์ซ็อกเก็ต Unix เร็วกว่า TCP / IP แต่สามารถใช้ได้เฉพาะเมื่อเชื่อมต่อกับเซิร์ฟเวอร์บนคอมพิวเตอร์เครื่องเดียวกัน