ฉันจะกำหนดวิธีการเชื่อมต่อที่ใช้โดยไคลเอนต์ MySQL ได้อย่างไร


10

เมื่อใช้ไคลเอนต์ MySQL (เช่นmysql) ฉันจะทราบได้อย่างไรว่าเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ไฟล์ซ็อกเก็ต Unix หรือใช้ TCP / IP

คำตอบ:


13

การค้นหาการขนส่ง

ลองใช้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

ประเภทโปรโตคอล:

  • TCP: การเชื่อมต่อ TCP / IP กับเซิร์ฟเวอร์ภายในหรือระยะไกล มีให้ในทุกแพลตฟอร์ม
  • SOCKET: การเชื่อมต่อไฟล์ซ็อกเก็ต Unix ไปยังเซิร์ฟเวอร์ภายใน ใช้ได้เฉพาะระบบยูนิกซ์เท่านั้น
  • PIPE: การเชื่อมต่อเนมไปป์กับเซิร์ฟเวอร์โลคัลหรือรีโมต มีเฉพาะใน windows เท่านั้น
  • MEMORY: การเชื่อมต่อหน่วยความจำที่แชร์กับเซิร์ฟเวอร์ภายใน มีเฉพาะใน windows เท่านั้น

การเชื่อมต่อไฟล์ซ็อกเก็ต Unix เร็วกว่า TCP / IP แต่สามารถใช้ได้เฉพาะเมื่อเชื่อมต่อกับเซิร์ฟเวอร์บนคอมพิวเตอร์เครื่องเดียวกัน


@Anil: ขอบคุณคุณทำให้มันเป็นคำตอบที่ยอดเยี่ยม
Eugene Yarmash
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.