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/*에 해당하는 스크립트를 한 번 실행한다고 한다. 링크
'TIL' 카테고리의 다른 글
fastapi에서 mongo db 사용할 때 _id 처리하기 (1) | 2022.01.05 |
---|---|
파이썬 f-string 템플릿으로 쓰기 (1) | 2021.10.15 |
cyberduck cli로 리눅스에서 FTP로 구글 드라이브에 파일 업로드하기 (0) | 2021.06.09 |
자주 쓰는 단축어 정리 (0) | 2021.05.29 |
Just-In-Time 컴파일 방식 (1) | 2021.05.28 |