Giới thiệu
Docker cung cấp hình ảnh (image) MySQL chính thức, cho phép khởi động nhanh một instance MySQL độc lập, có sẵn dependencies, phù hợp cho test, CI/CD. Cờ --rm tự động xóa container và filesystem khi dừng, giúp dọn dẹp tự động.
Tạo và chạy container
sudo docker run --rm --name=mysql-test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server
--rm: Tự động xóa container khi stop.--name: Đặt tên container.-e MYSQL_ALLOW_EMPTY_PASSWORD=yes: Cho phép root không mật khẩu (chỉ dùng dev/test).-d: Chạy nền (detached).
Truy cập MySQL shell bên trong container
sudo docker exec -it mysql-test mysql -uroot
exec -it: Chạy lệnh tương tác trong container đang chạy.mysql -uroot: Mở client MySQL với user root.
Kết nối từ bên ngoài (TCP/IP)
Docker gán IP riêng cho container. Cần tìm IP của network interface docker0 trên host và IP container để cấu hình kết nối TCP.
# IP host (docker0)
ip addr show docker0
# IP container (cách này trong bài gốc có vẻ thiếu lệnh, đúng là:)
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-test
Sau khi có IP host (ví dụ 172.17.0.1), trong MySQL shell tạo user root cho IP host:
CREATE USER 'root'@'172.17.0.1' IDENTIFIED BY '';
GRANT ALL ON *.* TO 'root'@'172.17.0.1' WITH GRANT OPTION;
Dọn dẹp
sudo docker stop mysql-test
# Container tự bị xóa nhờ --rm
Lưu ý: Không dùng MYSQL_ALLOW_EMPTY_PASSWORD trong production. Hãy đặt mật khẩu mạnh qua MYSQL_ROOT_PASSWORD.