LaravelでWEB上のDBに接続するときに必要な情報とパスワードの取り扱いや、ローカルのDBと接続する時の違いについて。
MySQLでローカルのDBからWEB上のDBに切り替える時に、.envのDBの環境変数を変更する。実際にいじる変数は5個ほど。
ローカルのDBのための環境変数
ローカルのDBの.envに記述する環境変数は以下のようになる。
DB_HOST=mysqld
DB_DATABASE=db_name
DB_USERNAME=root
DB_PASSWORD=
SQL_LOG=false
ローカル環境でのみ展開するので、初期作成した状態と同じ。スーパーアカウントであるrootユーザーを使っている。
rootユーザーの初期状態はパスワードは設定されていない。なので、パスワードは空欄となる。
WEB上のDBのための環境変数
一方でWEB上のDBに繋ぐ場合は、DBのホスト名でDBの場所(URL)を指定する。その際、設定してあるDB名、ユーザー名、およびパスワードを指定する必要がある。
DB_HOST=test.ap-northeast-1.rds.amazonaws.com
DB_DATABASE=test_app
DB_USERNAME=test_user
DB_PASSWORD=xxxyyyzzz
SQL_LOG=false
パスワードは重要な情報になるので、.envに記載して使い回しできる状態にはせず、別の場所に保管しておく。
.envファイルの取り扱い方法
環境毎の.envファイルの作成
ローカルのみの開発環境やWEB上のDBと接続するステージング、本番環境など、環境に合わせて.envの中身が変わる。
このため、local.env、staging.env、production.envのようにそれぞれの環境に合わせたファイルをあらかじめ作成しておき、プロジェクトを立ち上げる時には、.envを新規作成して使う内容の環境変数をコピペする。
github使用時の注意点
githubを使ってソースコードを管理している場合、仮にレポジトリがpublicの場合はDBのパスワードも含めてアップしてしまうとデータを見られてしまう。
privateでも外部の作業者と共有する場合などは注意が必要。
なので、.envファイルはgitから除外しておく。.gitignoreファイルに*.envを記載しておけば、.envが末尾につくファイルは全て無視される。
*.env
もしくは、WEB上のDBと接続する.envファイルのみ、passwordを削除しておく方法がある。
AWSのcode commitの活用
補足ですが、DB接続のための環境変数など、重要な情報が記載されている*.envファイルの中身は、AWSのcode commitなど、githubとは切り離されたセキュリティがしっかりしている環境に保存しておくと便利です。