본문 바로가기

TIL

도커 스크립트에서 MySQL root 패스워드 없애기

반응형

mysql 컨테이너를 도커로 실행할 때 "-e MYSQL_ROOT_PASSWORD=<password>"처럼 루트 비밀번호를 그대로 쓰는 경우가 있다. Docker-Compose에서는 아마 저걸 그대로 쓰게 될텐데 비밀번호가 공개되는게 마음에 안들어서 저걸 안넣을 방법을 고민했다.

떠오른 방법은 호스트의 환경변수를 실행스크립트에 넣자는 거였다. 그래서 호스트 머신의 global 환경변수로 MYSQL_ROOT_PASSWORD를 넣어주기로 했다

환경변수를 global하게 추가하려면 /etc/profile.d/ 디렉토리에 스크립트를 넣어주면 된다. 설명을 보면 리눅스에서 부팅을 할 때 /etc/profile.d/*에 해당하는 스크립트를 한 번 실행한다고 한다. 링크

그래서 아래처럼 추가를 해줬다. mysql_passwd.sh에 export MYSQL_ROOT_PASSWORD=<password>를 추가했다.

이제 컨테이너를 실행할 때 "-e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD"로 변경하면 스크립트에서 비밀번호가 사라지게 된다. 이게 얼마나 더 안전한지는 모르겠다. 저게 글로벌 환경변수라서 안전하지 못할거 같다는 생각이 많이 드는데 실제로 os.environ['MYSQL_ROOT_PASSWORD']같은걸 실행하게 되면 그대로 나온다. 뭔가 더 안전한 방법을 찾을 수 있으면 좋겠다.

또 훈련용 서버에 db user 정보를 저장해야 하는데 이것도 mysql_config_editor를 인터랙티브하게 사용해서 컨테이너 띄우는 방법말고 뭐가 없을지 고민 중이다.

오늘 배운 것 : 

환경변수를 global하게 추가하려면 /etc/profile.d/ 디렉토리에 스크립트를 넣어주면 된다. 설명을 보면 리눅스에서 부팅을 할 때 /etc/profile.d/*에 해당하는 스크립트를 한 번 실행한다고 한다. 링크

반응형