Làm cách nào để xác định phương thức kết nối được sử dụng bởi máy khách MySQL?


10

Khi sử dụng máy khách MySQL (ví dụ mysql), làm thế nào tôi có thể xác định liệu nó được kết nối với máy chủ bằng tệp ổ cắm Unix hoặc bằng cách sử dụng TCP / IP?

Câu trả lời:


13

Tìm phương tiện đi lại

Hãy thử sử dụng netstat -ln | grep 'mysql'và bạn có thể thấy nó được kết nối bởi đầu ra như thế nào. nếu bạn có quyền truy cập vào shell

Trên Unix, các chương trình MySQL đối xử đặc biệt với tên máy chủ localhost, theo cách có khả năng khác với những gì bạn mong đợi so với các chương trình dựa trên mạng khác. Đối với các kết nối đến localhost, các chương trình MySQL cố gắng kết nối với máy chủ cục bộ bằng cách sử dụng tệp ổ cắm Unix.

Điều này xảy ra ngay cả khi một --porthoặc -Ptùy chọn được đưa ra để chỉ định số cổng.

Nếu bạn muốn biết loại kết nối từ bên trong mysql CLI, hãy sử dụng lệnh '\ s' (status).

mysql> \s

Đầu ra sẽ có một dòng giống như một trong những điều sau đây (trên Unix).

Connection:             127.0.0.1 via TCP/IP

hoặc là

Connection:             Localhost via UNIX socket

Buộc một phương tiện giao thông cụ thể

Để đảm bảo rằng máy khách tạo kết nối TCP / IP đến máy chủ cục bộ, hãy sử dụng --hosthoặc -hchỉ định giá trị tên máy chủ là 127.0.0.1 hoặc địa chỉ IP hoặc tên của máy chủ cục bộ. Bạn cũng có thể chỉ định rõ ràng giao thức kết nối, ngay cả đối với localhost, bằng cách sử dụng --protocol=TCPtùy chọn. Ví dụ:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

Các --protocol={TCP|SOCKET|PIPE|MEMORY}tùy chọn xác định một cách rõ ràng một giao thức sử dụng để kết nối đến máy chủ. Nó rất hữu ích khi các tham số kết nối khác thông thường sẽ khiến giao thức được sử dụng khác với giao thức bạn muốn. Ví dụ: các kết nối trên Unix đến localhost được tạo bằng tệp socket Unix theo mặc định:

shell> mysql --host=localhost

Để buộc kết nối TCP / IP được sử dụng thay thế, hãy chỉ định một --protocoltùy chọn:

shell> mysql --host=localhost --protocol=TCP

Các loại giao thức:

  • TCP: Kết nối TCP / IP đến máy chủ cục bộ hoặc từ xa. Có sẵn trên tất cả các nền tảng.
  • SOCKET: Kết nối tệp ổ cắm Unix đến máy chủ cục bộ. Chỉ có sẵn trên unix.
  • PIPE: Kết nối đường ống được đặt tên đến máy chủ cục bộ hoặc từ xa. Chỉ có sẵn trên cửa sổ.
  • BỘ NHỚ: Kết nối bộ nhớ dùng chung với máy chủ cục bộ. Chỉ có sẵn trên cửa sổ.

Kết nối tệp ổ cắm Unix nhanh hơn TCP / IP, nhưng chỉ có thể được sử dụng khi kết nối với máy chủ trên cùng một máy tính.


@Anil: cảm ơn, bạn đã làm cho nó một câu trả lời tuyệt vời.
Eugene Yarmash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.