반응형
어느 프레임워크에서나 데이터베이스를 직접 연결할 때 데이터베이스 정보를 절대 코드에 직접 입력하지 않는다. 보안상 이슈 때문에 보통은 .env 안에 환경변수로서 정보들을 관리한다. (데이터베이스 뿐만 아니라 인증에 필요한 정보나 그 외 보안상 필요한 정보는 환경변수로 관리한다.
일단 go에서는 똑같이 루트 디렉토리에 .env 파일을 만들어준다.

그리고 필요한 정보를 입력해준다.

지금은 로컬에서 돌리지만 클라우드 디비를 활용할 경우 그에 맞는 정보를 입력해야한다.
그리고 디비를 연결할 때 env를 먼저 로드해줘야한다.
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
dbUser := os.Getenv("DB_USER")
dbPass := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable", dbHost, dbUser, dbPass, dbName, dbPort)
database, e = gorm.Open(postgres.Open(dsn), &gorm.Config{})
if e != nil {
panic(e)
}

그러면 데이터베이스가 연결되고 서버도 무사히 작동하게 된다. 만약 저 로드를 해주지 않는다면 .env 안에 있는 환경 변수를 읽을 수가 없으므로 꼭 먼저 로드하는 과정을 거쳐야한다.
공부하면서 정리한 내용입니다. 모든 지적 감사히 받겠습니다.
반응형
'프로그래밍 언어 > Golang' 카테고리의 다른 글
[Golang] echo postgresql 연결 시 panic: sql: unknown driver "postgres" (forgotten import?) 문제 해결 (0) | 2023.11.29 |
---|