2025-02-05 10:28:02

도커에는 기본적으로 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 이라서 접속이 안됐었다...