Không thể kết nối với máy chủ mysql cục bộ thông qua socket var run mysqld mysqld sock 111 kết nối bị từ chối

Trong thời đại công nghệ ngày nay, các tổ chức phải nhanh chóng phát hành ứng dụng để thu hút và duy trì hoạt động kinh doanh. Điều này giúp các nhóm xây dựng và định cấu hình môi trường triển khai với tốc độ nhanh hơn với chi phí thấp hơn. Tuy nhiên, các công nghệ container hóa sẽ giải cứu cho việc xây dựng một cơ sở hạ tầng nhẹ

Bài viết này sẽ làm rõ phương pháp triển khai và kết nối với máy chủ MySQL trong môi trường dựa trên vùng chứa

Bây giờ, chúng ta hãy đi sâu vào vấn đề

2. Triển khai vùng chứa MySQL

Đầu tiên, hãy xem xét các bước liên quan đến việc triển khai bộ chứa MySQL. Về cơ bản, MySQL theo mô hình kiến ​​trúc Client-Server. Ở đây, máy chủ là một hình ảnh chứa cơ sở dữ liệu, trong khi máy khách được sử dụng để truy cập cơ sở dữ liệu trên máy chủ

Chúng tôi đã chia quy trình triển khai thành ba phần

2. 1. Triển khai máy chủ MySQL

Bây giờ, hãy mang phiên bản máy chủ MySQL vào Docker. Chúng ta có thể chỉ cần xây dựng một vùng chứa dựa trên hình ảnh MySQL được lấy từ Docker Hub. Có hai điểm chúng ta nên cân nhắc khi chọn phiên bản hình ảnh nào sẽ lấy từ Docker Hub

  • Official Image Stamping – Đây là những hình ảnh được quản lý và bảo mật hơn từ nhóm nhà phát triển MySQL
  • Thẻ mới nhất – Trừ khi chúng tôi có bất kỳ đặt chỗ nào trên phiên bản MySQL, chúng tôi có thể sử dụng phiên bản mới nhất có sẵn trong kho lưu trữ

Hãy kéo image MySQL chính thức từ Docker Hub bằng lệnh docker pull

$ docker pull mysql:latest
latest: Pulling from library/mysql
f003217c5aae: Pull complete
…
… output truncated …
…
70f46ebb971a: Pull complete
db6ea71d471d: Waiting
c2920c795b25: Downloading [=================================================> ]  105.6MB/107.8MB
26c3bdf75ff5: Download complete

Thông thường, hình ảnh là các lớp riêng biệt được liên kết chặt chẽ theo một dạng có thứ tự như được mô tả trong tệp kê khai. Lệnh kéo docker của chúng tôi sẽ lấy các lớp hình ảnh từ cửa hàng blob và tự động tạo hình ảnh bằng tệp kê khai

…
… output truncated …
…
4607fa685ac6: Pull complete
Digest: sha256:1c75ba7716c6f73fc106dacedfdcf13f934ea8c161c8b3b3e4618bcd5fbcf195
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

Hình ảnh đi kèm có mã băm để tham khảo trong tương lai như đã trình bày ở trên

Không chần chừ gì nữa, hãy chạy container. Lệnh docker run thường tạo lớp vùng chứa có thể ghi trên đầu các lớp hình ảnh. Chúng tôi sẽ cần cung cấp tên bộ chứa bằng cách sử dụng đối số -name và sử dụng hình ảnh MySQL với thẻ mới nhất. Hơn nữa, chúng tôi sẽ đặt mật khẩu máy chủ MySQL thông qua biến môi trường MYSQL_ROOT_PASSWORD. Trong trường hợp của chúng tôi, mật khẩu được đặt thành “baeldung”

Cuối cùng, tùy chọn -d giúp chúng ta chạy container dưới dạng daemon. Đầu ra ném một mã băm khác để quản lý vùng chứa trong tương lai

$ docker run --name bael-mysql-demo -e MYSQL_ROOT_PASSWORD=baeldung -d mysql:latest
fedf880ce2b690f9205c7a37f32d75f669fdb1da2505e485e44cadd0b912bd35

Chúng ta có thể thấy tất cả các container đang chạy trong một máy chủ thông qua lệnh ps

$ docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                 NAMES
fedf880ce2b6   mysql:latest   "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds   3306/tcp, 33060/tcp   bael-mysql-demo

2. 2. Cài đặt máy khách MySQL

Bắt buộc phải cài đặt ứng dụng khách để dễ dàng truy cập vào máy chủ MySQL. Tùy thuộc vào nhu cầu của chúng tôi, chúng tôi có thể cài đặt ứng dụng khách trên máy chủ hoặc bất kỳ máy hoặc bộ chứa nào khác có khả năng truy cập IP với bộ chứa máy chủ

$ sudo apt install mysql-client -y
Reading package lists.. Done
Building dependency tree
Reading state information.. Done
mysql-client is already the newest version (5.7.37-0ubuntu0.18.04.1).
…
… output truncated …
…

Bây giờ, hãy kích hoạt trích xuất đường dẫn cài đặt và phiên bản của máy khách MySQL

$ which mysql
/usr/bin/mysql
$ mysql --version
mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper

2. 3. Thiết lập truyền thông

Tiếp theo, hãy đăng nhập vào máy chủ bằng ứng dụng khách đã cài đặt. Theo truyền thống, chúng tôi sử dụng lệnh MySQL với tên người dùng và mật khẩu để đăng nhập máy chủ. Tuy nhiên, nó sẽ không hoạt động trong trường hợp các giải pháp dựa trên vùng chứa

$ mysql -u root -p
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Chúng tôi sẽ kết thúc với các lỗi ổ cắm như minh họa ở trên. Ở đây, điều quan trọng là phải hiểu rằng máy chủ MySQL là một thùng chứa và không được cài đặt đơn giản trên máy chủ. Như đã nêu trong phần trên, vùng chứa là các máy chủ hạng nhẹ có tài nguyên điện toán, kết nối mạng và lưu trữ riêng

Lệnh kiểm tra giúp phân bổ địa chỉ IP cho phiên bản máy chủ MySQL

$ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' bael-mysql-demo
172.17.0.2

Hãy cung cấp địa chỉ IP ở trên trong tùy chọn máy chủ của máy khách, với số cổng và loại giao thức mặc định là TCP

________số 8_______

Xin chúc mừng, chúng ta đã đăng nhập thành công vào máy chủ MySQL

3. Phần kết luận

Tóm lại, chúng ta đã xem chi tiết các bước để triển khai bộ chứa máy chủ MySQL, cài đặt ứng dụng khách MySQL trên máy chủ và cuối cùng, thiết lập kết nối giữa chúng bằng thông tin bộ chứa

Không thể kết nối với máy chủ MySQL cục bộ?

Dưới đây là một số lý do có thể xảy ra lỗi Không thể kết nối với máy chủ MySQL cục bộ. mysqld không chạy trên máy chủ cục bộ . Kiểm tra danh sách quy trình của hệ điều hành của bạn để đảm bảo có quy trình mysqld. Bạn đang chạy một máy chủ MySQL trên Windows với nhiều kết nối TCP/IP tới nó.

Làm cách nào để kết nối với MySQL thông qua ổ cắm?

Kết nối với MySQL bằng unix socket .
Định vị tệp ổ cắm Unix Trên máy chủ lưu trữ trong dòng lệnh, hãy chạy lệnh sau. .
Kiểm tra kết nối ổ cắm Unix từ dòng lệnh.
Tải xuống thư viện của bên thứ ba.
Định cấu hình trình điều khiển MySQL trong DataGrip.
Tạo kết nối đến máy chủ MySQL

Lỗi ổ cắm MySQL 111 là gì?

Nguyên nhân gây ra lỗi 'Không thể kết nối với lỗi mysql 111' . Khi chúng tôi cố gắng truy cập máy chủ mysql trên máy Linux bằng địa chỉ IP công cộng, nó thường hiển thị lỗi 111. Tuy nhiên, khi localhost và 127. 0. 0. 1 được sử dụng, nó đang kết nối tốt. this error occurs when mysqld only listens to the localhost interface. When we try to access mysql server on Linux machine using the public IP address, it often shows error 111. However, when localhost and 127.0. 0.1 is used, it is connecting fine.

Làm cách nào để thay đổi đường dẫn ổ cắm MySQL?

Bạn có thể chỉ định vị trí tệp theo nhiều cách. .
Chỉ định đường dẫn trong tệp tùy chọn chung hoặc cục bộ. .
Chỉ định tùy chọn --socket trên dòng lệnh cho mysqld_safe và khi bạn chạy các chương trình máy khách
Đặt biến môi trường MYSQL_UNIX_PORT thành đường dẫn của tệp ổ cắm Unix