Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
生徒
「Go言語でデータベースに接続するとき、ユーザー名やパスワードってソースコードに書いちゃってもいいんですか?」
先生
「直接書くとセキュリティ上危険です。特にGitなどで公開すると誰でも見られてしまいます。」
生徒
「じゃあ安全に管理するにはどうすればいいですか?」
先生
「環境変数を使う方法があります。環境変数はOSに保存される設定値で、プログラムから読み込むことができます。」
生徒
「それなら、ソースコードにパスワードを書かなくて済むんですね。」
先生
「その通りです。それでは基本的な使い方を見ていきましょう!」
1. 環境変数とは?
環境変数は、OSやシステムが持つ設定情報で、プログラムから呼び出して使うことができます。例えば、ユーザー名やパスワード、データベースの接続先URLなど、秘密にしたい情報を保存するのに便利です。
2. 環境変数の設定方法
Windowsではコマンドプロンプトで以下のように設定します。
set DB_USER=myuser
set DB_PASS=mypassword
set DB_HOST=localhost
set DB_NAME=mydb
MacやLinuxではターミナルで以下のように設定します。
export DB_USER=myuser
export DB_PASS=mypassword
export DB_HOST=localhost
export DB_NAME=mydb
このように設定した値は、プログラム内で読み込むことができます。
3. Go言語で環境変数を読み込む
Go言語ではosパッケージを使って環境変数を取得できます。
import (
"fmt"
"os"
)
func main() {
dbUser := os.Getenv("DB_USER")
dbPass := os.Getenv("DB_PASS")
dbHost := os.Getenv("DB_HOST")
dbName := os.Getenv("DB_NAME")
fmt.Println("ユーザー:", dbUser)
fmt.Println("ホスト:", dbHost)
}
環境変数が正しく設定されていれば、プログラムから安全に情報を取得できます。
4. データベース接続に環境変数を活用する
例えばPostgreSQLに接続するとき、接続情報を環境変数から取得することでソースコードにパスワードを書かずに済みます。
import (
"database/sql"
"fmt"
"os"
_ "github.com/lib/pq"
)
func main() {
dbUser := os.Getenv("DB_USER")
dbPass := os.Getenv("DB_PASS")
dbHost := os.Getenv("DB_HOST")
dbName := os.Getenv("DB_NAME")
connStr := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable",
dbUser, dbPass, dbHost, dbName)
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
fmt.Println("データベースに接続できました")
}
この方法で、誰が見てもパスワードはソースコードに含まれず、安全性が高まります。
5. .envファイルと組み合わせる方法
環境変数を毎回設定するのが面倒な場合、.envファイルを使う方法もあります。godotenvというライブラリを使えば、Goプログラム起動時に自動で環境変数を読み込めます。
import (
"fmt"
"os"
"github.com/joho/godotenv"
)
func main() {
err := godotenv.Load()
if err != nil {
fmt.Println("envファイルの読み込み失敗")
}
dbUser := os.Getenv("DB_USER")
fmt.Println("ユーザー:", dbUser)
}
これにより、開発環境や本番環境ごとに異なる接続情報を簡単に切り替えられます。
6. セキュリティ上の注意点
環境変数を使う場合でも、.envファイルをGitに含めないことが重要です。.gitignoreに追加して、絶対に公開リポジトリに含まれないようにしましょう。また、本番環境ではOS側の環境変数管理を活用して安全に運用してください。
7. まとめないけど最後のポイント
環境変数を使うことで、Go言語でのデータベース接続情報の管理が簡単かつ安全になります。開発・運用の効率が上がり、パスワードや接続先情報をソースコードに書くリスクを回避できます。さらにgodotenvなどのツールを使えば、複数環境での切り替えも簡単です。
【超入門】ゼロから始めるGo言語プログラミング:最速で「動くアプリ」を作るマンツーマン指導
「プログラミングの仕組み」が根本からわかる。Go言語でバックエンド開発の第一歩を。
本講座を受講することで、単なる文法の暗記ではなく、「プログラムがコンピュータの中でどう動いているか」という本質的な理解につながります。シンプルながら強力なGo言語(Golang)を通じて、現代のバックエンドエンジニアに求められる基礎体力を最短距離で身につけます。
具体的な開発内容と環境
【つくるもの】
ターミナル(黒い画面)上で動作する「対話型計算プログラム」や、データを整理して表示する「ミニ・ツール」をゼロから作成します。自分の書いたコードが形になる感動を体験してください。
【開発環境】
プロの現場でシェアNo.1のVisual Studio Code (VS Code)を使用します。インストールから日本語化、Go言語用の拡張機能設定まで、現場基準の環境を一緒に構築します。
この60分で得られる3つの理解
「なぜ動くのか」という設定の仕組みを理解し、今後の独学で詰まらない土台を作ります。
データの種類やメモリの概念など、他言語にも通じるプログラミングの本質を学びます。
ただ動くだけでなく、誰が見ても分かりやすい「綺麗なコード」を書くための考え方を伝授します。
※本講座は、将来的にバックエンドエンジニアやクラウドインフラに興味がある未経験者のためのエントリー講座です。マンツーマン形式により、あなたの理解度に合わせて進行します。
初めてのGo言語を一緒に学びましょう!