앞의 포스트에서 MySQL은 연결하지 않았는데, 여기에서 서버 생성 및 연결하겠다.
az mysql flexible-server create --resource-group [xxxrg] --name [xxxmysql] --location koreacentral --admin-user [xxx] --admin-password [xxx] --sku-name Standard_B1ms --version 8.0.21 --storage-size 20 --public-access 0.0.0.0
az mysql flexible-server db create --resource-group [xxx-rg] --server-name [xxxmysql] --database-name [xxxx]
여기서 데이터베이스 이름은 .env와 통일하는 것이 좋다.
서버 이름은 당연히 1번에서 지은 것으로 해야 한다.
az mysql flexible-server firewall-rule create --resource-group [xxx] --name [xxx] --rule-name AllowAll --start-ip-address 0.0.0.0 --end-ip-address 255.255.255.255
cmd에서 하다가 위 코드는 powershell에서 실행함.
⚠️ 서비스 배포 전에는 꼭 IP 제한 다시 걸어야 함.
DATABASE_HOST=[이름].mysql.database.azure.com
DATABASE_PORT=[설정한 포트 번호]
DATABASE_USERNAME=[admin 이름]@[서버 이름]
DATABASE_PASSWORD=[password]
DATABASE_NAME=[DB 이름]
실제 .env 파일뿐 아니라 GitHub 리포지토리 secret에서도 수정해줘야 한다.
1) ACR 로그인(도커 이미지 pull을 위해)
az acr login --name [이름]
2) 이미지 pull하기
docker pull [이름].azurecr.io/[이미지 이름]:[태그]
3) 이미지 실행하기
docker run --env-file .env -p 3000:3000 [이름].azurecr.io/[이미지 이름]:[태그]
⚠️ Azure Database for MySQL Flexible Server는 포트가 3306으로 고정되어 있다
4) 하다가....많은 일이 있었고 기록을 포기한다.

✅ Azure MySQL에서 @서버명 없이도 되는 경우?
YES, 전제 조건이 맞으면 dockeruser만으로도 로그인 가능합니다.
🔍 이유 1. Workbench나 CLI는 MySQL 클라이언트가 내부적으로 @host를 붙여줌
예: mysql -u dockeruser -h ohnpolv2mysql.mysql.database.azure.com
이 경우 내부적으로는 dockeruser@ohnpolv2mysql로 처리됨
📌 그래서 명시적으로 안 써도 자동으로 매핑되기 때문에 연결 가능
🔍 이유 2. 우리가 사용자 생성할 때 이렇게 정의했기 때문:
CREATE USER 'dockeruser'@'%' IDENTIFIED BY '[password]';
%는 모든 호스트에서 접속 허용
즉, dockeruser@49.175.34.213, dockeruser@localhost 등도 허용됨
👉 이 경우엔 dockeruser 단독으로 써도 괜찮은 거예요!
대충 이런 일이 있었고 다 이해는 못 했지만 너무 힘들어서 넘어가겠다.