Máy chủ 172.17.0.1 không được phép kết nối với máy chủ mysql này

Tôi đang dùng Acer Aspire 5738 với ram 8GB, trao đổi 16GB được cài đặt bằng Pop. _OS. Tôi đang sử dụng DBeaver làm ứng dụng khách RDBMS và đã tạo 3 vùng chứa và 3 ổ đĩa riêng biệt (để duy trì dữ liệu) cho 3 hình ảnh cơ sở dữ liệu sqlserver, mysql và postgresql

Cả Sqlserver và Postgresql đều kết nối tốt trong DBeaver, ngoại trừ MySql đang trả về lỗi sau

null,  message from server: "Host '172.17.0.1' is not allowed to connect to this MySQL server"

Hình ảnh được tải xuống là

Khối lượng được tạo ra là

Tôi không biết mình đã làm gì sai, nhưng vấn đề này chỉ xảy ra với MySQL. Ngoài ra, trong ảnh chụp màn hình đầu tiên, tôi thấy vùng chứa

$ 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
0 được ánh xạ tới một cổng bổ sung 33060-33061/TCP

Một điều nữa là, tôi không thể định vị tệp

$ 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
1 ở bất kỳ đâu cũng như trong
$ 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
2 hoặc
$ 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
3, ngoại trừ tôi có thể nhìn thấy nó bên trong khi kiểm tra tệp hình ảnh mysql bằng cách sử dụng bash trên thiết bị đầu cuối

Mục đích của tôi là tạo 3 vùng chứa này, sau đó ghép 3 vùng chứa này vào một vùng chứa (mới) khác để khởi động 3 vùng chứa này bằng cách nào đó. Ai đó có thể hướng dẫn tôi từng bước về cách đạt được điều này và cũng như khắc phục lỗi trên không?

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

________số 8

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

$ mysql -h 172.17.0.2 -P 3306 --protocol=tcp -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
…
… output truncated …
…
mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit
Bye

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

3. Sự 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

Tại sao máy chủ MySQL không kết nối?

thông thường có nghĩa là không có máy chủ MySQL nào đang chạy trên hệ thống hoặc bạn đang sử dụng tên tệp ổ cắm Unix hoặc số cổng TCP/IP không chính xác when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.

Không được phép kết nối với máy chủ MySQL này dữ liệu MySQL?

Lỗi này xảy ra do cấu hình mặc định mà cơ sở dữ liệu MySQL hiện đang sử dụng . Cấu hình này chỉ cho phép kết nối từ người dùng 'root' khi đến từ 'localhost' chứ không phải các dải địa chỉ IP khác.

Không được phép kết nối với máy chủ MySQL này Lỗi MySQL 1130?

Trong trường hợp này, chúng tôi phải thực hiện một số thay đổi đối với máy chủ cơ sở dữ liệu để cho phép người dùng kết nối từ xa . Trên máy chủ cơ sở dữ liệu, chúng tôi phải kiểm tra máy chủ mà người dùng ở trên được phép kết nối từ. Từ đầu ra của lệnh, người dùng chỉ được phép kết nối với máy chủ cơ sở dữ liệu từ máy chủ cục bộ.

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

Thử kết nối với 127. 0. 0. 1 thay vì máy chủ cục bộ . 0. 0. 1 đầu nối TCP/IP sẽ được sử dụng. Vì vậy, khi đầu nối ổ cắm không hoạt động, hãy thử kết nối với 127. 0. 0. 1 thay vì.