보안상 DB 접속 정보를 환경변수에 저장한 후 가져오는 방법을 소개 하고자 한다.
환경 변수는 권한에 따른 접근도 어렵고 관리도 쉬운편이다.
1. DB 접속 정보 (여기서는 mysql을 예로 든다.)
db_url : mysql+pymysql://사용자명:비밀번호@호스트:포트번호/DB명
db_url 은 임의로 정할 수 있고 시스템 변수에 등록해 준다.
2. 환경변수에 넣는 방법
2-1.환경변수 편집들어가서 추가
2-2 명령프롬프트에서 등록
setx db_url "mysql+pymysql://사용자명:비밀번호@호스트:포트번호/DB명:
3. 환경변수가 바로 적용되도록 시도해 볼 수 있는 것
1. 레지스트리에 편집기에 가서 확인해 본다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
2. 명령프롬프트에서 refreshenv 명령을 실행해 본다.
3. vs code나 가상환경에서 작업한 경우 가상환경 deactivate 하고 다시 가상환경으로 진입해서 작업해 보길 바란다.
alembic 에서 환경변수가져오기
- 가상환경 상태에서 alembic을 설치해 준다.
pip install alembic
- 프로젝트 폴더인지 확인 후
alembic init migrations
명령을 실행하면 프로젝트 폴더에 alembic.ini 와 env.py 파일이 생성된다.
alembic.ini 파일에서script_location = alembic으로 수정
아래 부분은 주석처리 해준다.
env.py 을 열고
url 변수를 추가해 준다. db_url 은 환경변수에 저장한 변수명이다.
이 부분도 변경해 준다.
아래 명령어가 실행되면 연결은 성공한 것이다.
alembic revision --autogenerate
발생할 수 있는 에러들..
sqlalchemy.url를 찾을 수 없다는 에러가 날때는
alembic.ini 주석처리 확인해 본다.
접근 할 수 없다는 에러가 날때는
mysql 권한이나, 방화벽등을 살펴본다.
또 db_url 이 잘못되었을 수도 있다.
print(url)
을 env.py 에 넣고 디버깅 해보면 맞는 url 인지 확인 가능하다.
--참고사항
alembic.ini 파일에서 환경변수를 불러올 수 있다고 하는데...안되더라..
env.py 파일을 수정하세요~
'FastAPI' 카테고리의 다른 글
sqlalchemy 기본값 설정하기(mariadb, mysql) (0) | 2024.08.22 |
---|---|
alembic 사용 방법 (0) | 2023.12.10 |
alembic 에서 스키마를 잘못 적용되었을때 (0) | 2023.09.12 |
alembic의 columns 타입이 변경되었을때 적용하기. (0) | 2023.09.12 |