에러가 나는 표면적인 원인은 로컬에 설치해놓은 mysql이 실행되어있었고, docker에서도 동일한 3306포트로 바인딩했다. 보통 이미 사용 중인 포트로 container 실행 과정에서 에러가 났어야 했는데 왜 안났는지 모르겠다. 다음 포스팅으로 아래의 근원적인 원인을 파헤쳐봐야겠다.
version: "3" # 버전 지정
services: # 컨테이너 설정
db:
image: mysql:latest
container_name: mysql-server
ports: # -p 옵션 (포트 연결 설정)
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root123
command: # 명령어 실행
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- ./data/:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)
docker-compose up -d
docker ps
docker exec -it mysql-server bin/sh
(아래와 같이 나오면 서버 접속 성공)
sh-4.4#
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \\g.
Your MySQL connection id is 12
Server version: 8.0.30 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.
mysql>
** root 암호를 변경하기 위해서는 아래를 참고하면 된다.
https://dev.mysql.com/doc/refman/8.0/en/default-privileges.html
show databases;
create databases godok;
: 특정 database에 사용할 수 있는 user를 생성하여 권한을 한정하도록 만들어준다.
create user 'godoksajang'@'%' identified 'godoksajang123';
show grants for 'godoksajang'@'%';
grant all privileges on 'godok.*' to 'godoksajang'@'%';
show grants for 'godoksajang'@'%';
참조 : https://computer-science-student.tistory.com/514