Hướng dẫn connect mysql docker

Nếu bạn là người mới sử dụng MySQL hoặc ai đó muốn cài đặt cơ sở dữ liệu MySQL một cách nhanh chóng và dễ dàng, thì bài viết này là dành cho bạn. Trong bài viết này, chúng ta sẽ tìm hiểu cách thiết lập MySQL với Docker và soạn Docker trong Linux.

Hãy bắt đầu bằng cách thiết lập môi trường docker để khởi chạy vùng chứa MySQL.

  • 1. Cài đặt Docker
  • 2. Tải xuống MySQL Docker Image
  • 3. Khởi chạy MySQL Container
  • 4. Kiểm tra trạng thái vùng chứa MySQL
  • 5. Kết nối với cơ sở dữ liệu MySQL
  • 6. Tải dữ liệu mẫu
  • 7. Thiết lập MySQL Container bằng Docker-Compose
  • 8. Kết nối với Cơ sở dữ liệu MySQL bằng MySQL Workbench
    • 8.1. Cài đặt MySQL Workbench trong Linux
    • 8.2. Kết nối với Cơ sở dữ liệu MySQL
  • 9. Kết luận

Trước khi quay bộ chứa docker MySQL, bạn cần phải cài đặt docker và docker-comp trong máy của mình. Nếu bạn chưa cài đặt docker và docker-soạn, hãy tham khảo các hướng dẫn sau:

Bạn cũng có thể tham khảo các liên kết tài liệu Docker chính thức được cung cấp bên dưới để biết cách thiết lập Docker và Docker soạn.

Bạn có thể chạy các lệnh sau để kiểm tra phiên bản docker và docker-soạn mà bạn đang chạy.

$ docker --version
Docker version 20.10.11, build dea9396
$ docker-compose --version
docker-compose version 1.29.2, build unknown

2. Tải xuống MySQL Docker Image

Đi đến Docker Hub để có được Hình ảnh docker MySQL. Điều quan trọng là bạn phải quyết định phiên bản MySQL bạn sẽ chạy.

Chạy lệnh sau để kéo hình ảnh MySQL từ trung tâm docker vào máy của bạn.

$ docker pull mysql:latest

Đứng lên: Không cần thiết phải sử dụng thẻ “latest“, Theo mặc định, nó sẽ kéo hình ảnh mới nhất.

Để kiểm tra xem hình ảnh có sẵn trên máy cục bộ hay không, bạn có thể chạy lệnh sau:

$ docker images mysql

Đầu ra mẫu:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    b05128b000dd   12 days ago   516MB

Bây giờ hình ảnh đã sẵn sàng để quay lên vùng chứa. Bạn cũng có thể bỏ qua bước này và chạy nút “docker run”Như được hiển thị trong phần tiếp theo sẽ kéo hình ảnh nếu không có sẵn cục bộ.

3. Khởi chạy MySQL Container

Chạy lệnh sau để quay lên vùng chứa MySQL docker:

$ docker run --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql

Khởi chạy MySQL Container

Hãy chia nhỏ lệnh trên và xem mỗi lá cờ làm gì.

–name → Đặt tên cho vùng chứa của bạn. Nếu bạn không chỉ định cờ này, docker sẽ chỉ định một số tên được tạo ngẫu nhiên.

-p → Bản đồ cổng. MySQL sẽ lắng nghe tại cổng 3306 vì vậy chúng tôi đang lập bản đồ các cổng (33063306) từ máy chủ của bạn đến bộ chứa docker. Cổng máy chủ không cần thiết phải 3306nó có thể là bất cứ thứ gì có sẵn để sử dụng.

Chạy phần sau netstat trong máy cục bộ của bạn để kiểm tra xem cổng được ánh xạ có đang lắng nghe hay không khi vùng chứa được khởi chạy.

$ netstat -tlnup | grep -i 3306

Đầu ra mẫu:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      168870/docker-proxy 
tcp6       0      0 :::3306                 :::*                    LISTEN      168878/docker-proxy 

-v → Đính kèm một khối lượng vào hộp chứa. Hành vi mặc định của docker là nó sẽ không tồn tại dữ liệu sau khi vùng chứa bị xóa, vì vậy bạn sẽ mất tất cả dữ liệu của mình.

Để tạo bộ nhớ liên tục, tôi đã tạo ổ đĩa có tên “mysql_volume“. MySQL lưu trữ dữ liệu trong /var/lib/mysql/ bên trong vùng chứa và ở đây nó được ánh xạ tới thư mục localhost /var/lib/docker/volumes/mysql_volume1/_datavì vậy dữ liệu của bạn sẽ được duy trì.

Nếu bạn muốn biết thêm về khối lượng docker, hãy xem chi tiết của chúng tôi bài báo trên cùng một.

-d → Sẽ khởi động và chạy vùng chứa ở chế độ tách rời. Nếu bạn bỏ qua -dsau đó bạn sẽ thấy nhật ký khởi động vùng chứa trong thiết bị đầu cuối và bạn phải mở một phiên thiết bị đầu cuối mới để kết nối với vùng chứa.

-e → Các biến môi trường. Bạn phải thiết lập mật khẩu người dùng gốc mysql sử dụng bất kỳ một trong các tham số dưới đây.

  • MYSQL_ROOT_PASSWORD → Thiết lập mật khẩu của riêng bạn bằng cách sử dụng biến môi trường này.
  • MYSQL_ALLOW_EMPTY_PASSWORD → Mật khẩu trống hoặc Null sẽ được thiết lập. Bạn phải thiết lập MYSQL_ALLOW_EMPTY_PASSWORD=1.
  • MYSQL_RANDOM_ROOT_PASSWORD → mật khẩu ngẫu nhiên sẽ được tạo khi vùng chứa được khởi động. Bạn phải thiết lập MYSQL_RANDOM_ROOT_PASSWORD=1 để tạo mật khẩu ngẫu nhiên.

Nếu bạn bỏ qua bước này, thì một lỗi sẽ được hiển thị như hình dưới đây.

Hướng dẫn connect mysql docker
Lỗi biến môi trường

4. Kiểm tra trạng thái vùng chứa MySQL

Bạn có thể kiểm tra trạng thái vùng chứa đã khởi chạy bằng lệnh sau:

$ docker ps

Đầu ra mẫu:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
e1fb895f6f0f   mysql     "docker-entrypoint.s..."   3 minutes ago   Up 3 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

5. Kết nối với cơ sở dữ liệu MySQL

Chạy lệnh sau để kết nối với vùng chứa MySQL.

$ docker exec -it mysql bash

Kết nối với cơ sở dữ liệu MySQL dưới dạng root bằng cách chạy lệnh sau. Trong trường hợp của tôi, tôi đã thiết lập mật khẩu của riêng mình thông qua MYSQL_ROOT_PASSWORD.

$ mysql -u root -p

Hướng dẫn connect mysql docker
Kết nối với cơ sở dữ liệu

Nếu bạn đã sử dụng MYSQL_RANDOM_ROOT_PASSWORD=1 khi khởi chạy vùng chứa, bạn có thể lấy mật khẩu được tạo tự động từ nhật ký.

$ docker logs
$ docker logs mysql

Hướng dẫn connect mysql docker
Mật khẩu gốc đã tạo

Mật khẩu gốc được tạo tự động sẽ dài và nó không phải là thứ cần được ghi nhớ. Bạn có thể đặt lại mật khẩu gốc bằng cách chạy truy vấn sau.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'mysqlpassword';

Thay thế mật khẩu ‘mysqlpassword’ bằng mật khẩu của riêng bạn. Bạn cũng có thể tạo người dùng của riêng mình và cấp cho anh ta các đặc quyền theo yêu cầu.

6. Tải dữ liệu mẫu

Mục tiêu chính của việc thiết lập mysql là tải một số dữ liệu và chạy các truy vấn đối với nó. Có một số cách bạn có thể tải dữ liệu. Tôi có một tệp mẫu tên là “load_data.sql”Với các truy vấn sau trong đó.

CREATE DATABASE IF NOT EXISTS football;

USE football;

CREATE TABLE IF NOT EXISTS players (
    player_name     VARCHAR(16)     NOT NULL,
    player_age      INT             NOT NULL,
    player_club     VARCHAR(16)     NOT NULL,
    player_country  VARCHAR(16)     NOT NULL
);

INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");
INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");
INSERT INTO players VALUES ("Neymar",29,"PSG","Brazil");
INSERT INTO players VALUES ("Kane",28,"SPURS","England");
INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgium");

Cách tiếp cận đầu tiên sẽ là sao chép dữ liệu từ máy cục bộ sang vùng chứa docker bằng cách sử dụng “docker cp” yêu cầu.

$ docker cp load_data.sql mysql:/tmp
$ docker exec -it mysql bash
$ ls -l /tmp/

Bây giờ bạn có thể kết nối với máy khách mysql và chạy lệnh nguồn hoặc chuyển hướng tệp đến máy khách mysql.

$ mysql -u root -p
mysql> source /tmp/load_data.sql

Hoặc

$ mysql -u root -p < /tmp/load_data.sql

Kết nối với cơ sở dữ liệu và truy vấn bảng của bạn.

$ mysql -u root -p
mysql> show databases;
mysql> use football;
mysql> show tables;
mysql> select * from players;

Hướng dẫn connect mysql docker
Bàn chơi

Cách tiếp cận thứ hai sẽ là chuyển hướng .sql khi chạy docker exec.

$ docker exec -i mysql mysql -u root -p < load_data.sql

7. Thiết lập MySQL Container bằng Docker-Compose

Thay vì kéo hình ảnh và chạy docker runbạn có thể dùng docker-soạn để quay nhanh thùng chứa. Docker-compos phù hợp nhất khi bạn có nhiều vùng chứa được tạo.

Tạo một tệp có tên docker-compose.yml hoặc docker-compose.yaml. Sao chép và dán mã yaml sau đây. Điều này cũng giống như những gì tôi đã chạy thủ công trong các phần trước.

version: '3.8'
services:
  database:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: temp1234
    ports:
      - "3306:3306"
    volumes:
      - mysql_volume:/var/lib/mysql
volumes:
  mysql_compose_volume:

Bây giờ hãy chạy lệnh sau đây sẽ quay lên vùng chứa MySQL docker.

$ docker-compose up

Hướng dẫn connect mysql docker
Khởi chạy vùng chứa MySQL với Docker Compose

Chạy lệnh sau để kiểm tra trạng thái của vùng chứa đã khởi chạy bằng cách sử dụng docker -omp:

$ docker-compose ps

Đầu ra mẫu:

Name              Command             State                          Ports                       
-------------------------------------------------------------------------------------------------
mysql   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp

8. Kết nối với Cơ sở dữ liệu MySQL bằng MySQL Workbench

Cho đến bây giờ chúng ta đã thấy cách kết nối với cơ sở dữ liệu bằng máy khách mysql từ bên trong vùng chứa. Bạn cũng có thể kết nối với cơ sở dữ liệu bằng cách sử dụng bất kỳ ứng dụng khách GUI nào như bàn làm việc mysql, dbeaver, Heidi SQL, v.v.

Điều quan trọng cần lưu ý bất kể ứng dụng khách GUI bạn đang sử dụng là gì, cổng nào đã được ánh xạ khi bạn khởi chạy vùng chứa.

Trong trường hợp của tôi, tôi đã lập bản đồ localhost (3306) -> thùng đựng hàng (3306). Vì vậy, nếu tôi phải thiết lập kết nối với cơ sở dữ liệu, tôi phải kết nối với localhost:3306 hoặc 127.0.01:3306.

Tôi đang sử dụng MySQL Workbench làm ứng dụng khách GUI của mình. Nếu bạn chưa cài đặt MySQL workbench trong máy của mình, thì bạn có thể sử dụng hướng dẫn bên dưới để cài đặt tương tự.

8.1. Cài đặt MySQL Workbench trong Linux

Điều hướng đến trang web chính thức để tải xuống tệp gói. Bạn phải chọn hệ điều hành của mình để tải xuống .deb hoặc .rpm.

Hướng dẫn connect mysql docker
Chọn hệ điều hành cho MySQL Workbench

Trong bước tiếp theo, nó sẽ yêu cầu bạn Đăng nhập hoặc Đăng ký. Bạn có thể bỏ qua đăng nhập hoặc đăng ký bằng cách nhấp vào tùy chọn “Không, cảm ơn, Chỉ cần bắt đầu tải xuống của tôi”.

Hướng dẫn connect mysql docker
Bỏ qua tùy chọn đăng nhập hoặc đăng ký

Trên các hệ thống dựa trên Debian, hãy cài đặt MySQL Workbench như bên dưới:

$ cd 
$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb

Trên các hệ thống dựa trên RHEL, hãy cài đặt MySQL Workbench như sau:

$ cd 
$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm

Sau khi cài đặt xong, bạn có thể khởi chạy bàn làm việc mysql từ menu hoặc dấu gạch ngang.

Hướng dẫn connect mysql docker

Khởi chạy MySQL Workbench

8.2. Kết nối với Cơ sở dữ liệu MySQL

Kết nối với cơ sở dữ liệu đang chạy bên trong bộ chứa docker. Bạn nên cố gắng kết nối với localhost:3306 hoặc localhost: tùy thuộc vào cách thiết lập vùng chứa của bạn.

Hướng dẫn connect mysql docker
Quản lý kết nối MySQL

Trước khi kết nối với cơ sở dữ liệu, bạn có thể nhấn “Kiểm tra kết nối”Để kiểm tra MySQL workbench có thể kết nối thành công với phiên bản cơ sở dữ liệu hay không.

Hướng dẫn connect mysql docker
Kiểm tra kết nối MySQL

Bây giờ bạn có thể bắt đầu chạy các truy vấn của mình đối với các bảng bạn đã tạo.

Hướng dẫn connect mysql docker
Chạy truy vấn mẫu trong MySQL Workbench

9. Kết luận

Trong bài viết này, chúng ta đã giới thiệu sơ qua về cách khởi chạy vùng chứa MySQL trong docker bằng cách sử dụng docker rundocker-compose các phương pháp. Nếu bạn muốn thiết lập MySQL cho mục đích thử nghiệm hoặc học tập, Docker là quá đủ.

Hi vọng điêu nay co ich.