Site icon PlusMagi's Blog By Pitt Phunsanit

Docker: MySQL Container

การสร้าง Docker container เพื่อ run MySQL ในการใช้ database

  1. สร้าง folder เก็บข้อมูลก่อน โดยคำสั่ง
    mkdir -p /Users/Shared/Portable/docker-mysql
  2. ไปที่ folder
    cd /Users/Shared/Portable/docker-mysql
  3. สร้างไฟล์
    touch docker-compose.yml
  4. ใส่เนื้อหา
    services:
      db:
        container_name: docker-mysql
        environment:
          MYSQL_ROOT_PASSWORD: SAj44GMbSLM8
          MYSQL_DATABASE: JRx7H7TvFjsL
          MYSQL_USER: VThBP3XrnXrH
          MYSQL_PASSWORD: ww4c369YkH6J
        image: mysql:8.0
        ports:
          - "3306:3306"
        restart: always
        volumes:
          - ./mysql_data:/var/lib/mysql
    
    • container_name เช่น docker-mysql
    • MYSQL_ROOT_PASSWORD เข่น SAj44GMbSLM8
    • MYSQL_DATABASE: database ชื่ออะไร เช่น JRx7H7TvFjsL
    • MYSQL_USER: username เช่น VThBP3XrnXrH
    • MYSQL_PASSWORD: รหัสผ่านคือ เช่น ww4c369YkH6J
    • ports เช่น 5432
  5. ติดตั้งและรัน
    docker compose up -d

ทดสอบ

ใช้คำสั่ง
docker exec -it {container_name} mysql -U {username} -p{password}
เข่น
docker exec -it docker-mysql mysql -u VThBP3XrnXrH -pww4c369YkH6J

หรือ

docker exec -it {container_name} mysql -U {username} -p

เช่น

docker exec -it docker-mysql mysql -u VThBP3XrnXrH -p
จะมีการถาม MYSQL_PASSWORD ซึ่งจะปลอดภัยกว่า


Common Commands


ข้อควรระวังที่สำคัญ (ที่อาจทำให้สับสน)


ใช้ root สร้าง database, username เพิ่ม

หากคุณใช้ user: root และ MYSQL_ROOT_PASSWORD ในการทำงาน คุณสามารถทำทุกอย่างได้ ไม่จำกัดแค่ใน Database เดียว นี่คือขั้นตอนและคำสั่งมาตรฐานหากคุณต้องการสร้าง Database และ User ใหม่ด้วยตัวเอง (Manual) ผ่านทาง root:

  1. ล็อกอินด้วย root
  2. สร้าง Database ใหม่
    CREATE DATABASE {์NEW_MYSQL_DATABASE} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. สร้าง User ใหม่
    CREATE USER ‘{NEW_MYSQL_USER}@’%’ IDENTIFIED BY ‘{NEW_MYSQL_PASSWORD}‘;
    หมายเหตุ: ใช้ '%' เพื่อให้ User นี้ล็อกอินจากภายนอก Container ได้
  4. มอบสิทธิ์ (Grant Privileges)
    GRANT ALL PRIVILEGES ON {์NEW_MYSQL_DATABASE}.* TO '{NEW_MYSQL_USER}'@'%';

Best Practices


อ่านเพิ่มเติม

Exit mobile version