도커에는 기본적으로 exec 명령어로 접속합니다.
docker exec -it <컨테이너 이름> bash
(-it 는 터미널로 인터액티브 옵션 사용의미)
(bash 쉘)(개인적으로 익숙한거 쓰시면 됩니다!)
접속이 됐으면
mysql -u root -p
mysql -u <유저명임> -p
root는 mysql 기본 유저명이고 따로 만들어두신게 있으시면 해당 유저명으로 사용
이후 패스워드 치라고 나오면 입력, 엔터
이제 유저 생성,권한 부여
mysql 접속상태에서
CREATE USER '<newuser>'@'%' IDENTIFIED BY '<newpassword>';
GRANT ALL PRIVILEGES ON *.* TO '<newuser>'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
한줄씩 입력



쿼리 성공이 각 뜹니다.
이제
exit;
쳐서 bash 쉘로 다시 나옵니다.
도커 오피셜 mysql은
apt나 dnf 가 아닌 oracle 에서 만든 리눅스를 사용중입니다.
그래서 vim 을 쓰려니까 없어서 설치해줍니다.
microdnf install vim
microdnf update
해주면 vim 이 잘 먹습니다.
##########################################################################################
여기서부터는 외부접속 허용위한 과정!
우선 구성파일을 찾아줍니다.
(현재 저는 8.0.41을 사용중에 있습니다)
ls -la /etc/mysql/
ls -la /etc/mysql/mysql.conf.d/
ls -la /etc/mysql/mysql.conf.d/mysqld.cnf
ls -la /etc/mysql/my.cnf
로 파일을 찾아줍니다.
저는 없었어서
grep "bind-address" /etc/my.cnf
로 확인해줍니다.
없으니까
echo -e "[mysqld]\nbind-address = 0.0.0.0" > /etc/mysql/conf.d/custom.cnf
나
vim /etc/mysql/conf.d/custom.cnf
해서 아래 입력
[mysqld]\nbind-address = 0.0.0.0
나와서 확인

이제 실행중인 컨테이너 재시작

exit 치면 그냥 도커 터미널로 나와짐
docker ps 로 혹시 모르니까 확인하구 재시작
docker restart <컨테이너명>
이제 새로만든 계정으로 접속해보고확인하기
##########################################################################################
사람들은 되는 경우가 많지만 난 안됐다
일단 외부 장화벽이 있는 환경이라서
방화벽을 윈도우에서 연다음
New-NetFirewallRule -DisplayName "Allow MySQL" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow
파워쉘-관리자로 3006을 열어줬다

로컬이 아닌 컴퓨터에서
Test-NetConnection -ComputerName <로컬호스트IP> -Port 3306
이나
tcping
으로 테스트
번외: 당연히 망 환경이 다르면 안되는걸 까먹었다...
본인은 WIFI
옆사람은 LAN 이라서 접속이 안됐었다...
'SQL&DB' 카테고리의 다른 글
| 파이썬으로 도커 안에 Mysql 이랑 공유디렉토리 없이 파일을 넣는법 (0) | 2025.02.07 |
|---|---|
| Docker 에서 구동하는 DB 에 데이터 넣기 (0) | 2025.02.07 |
| 테이블 만들고 인덱싱까지 하기 (0) | 2025.02.06 |
| SQL_테이블 만들고 넣기 (0) | 2025.02.03 |
| mssql - API 연결 (0) | 2025.02.03 |