เมื่อใช้ไคลเอนต์ 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 แต่สามารถใช้ได้เฉพาะเมื่อเชื่อมต่อกับเซิร์ฟเวอร์บนคอมพิวเตอร์เครื่องเดียวกัน