データベースパスワードを生成する
データベース接続用の強力なパスワードを生成します — MySQL、PostgreSQL、MongoDB、Redis。文字制限、接続文字列のエスケープ、環境変数のベストプラクティスを解説します。
Platform-Specific
詳細な説明
データベースパスワードのセキュリティ
データベースパスワードはデータへの直接アクセスを保護します。ユーザー向けアカウントとは異なり、データベース資格情報は通常、設定ファイル、環境変数、またはシークレットマネージャーに保存されるため、記憶しやすさは問題ではありません。最大エントロピーが優先事項です。
データベース固有の文字制限
異なるデータベースシステムには異なるパスワード制限があります:
MySQL
- 最大32文字(旧バージョン)、MySQL 8.0+では無制限
'(シングルクォート)を避ける — SQL文で問題を引き起こす\(バックスラッシュ)を避ける — MySQLのエスケープ文字
PostgreSQL
- 最大99文字(md5)または1000文字(scram-sha-256)のパスワードをサポート
pg_hba.confで使用するパスワードでは'を避けるscram-sha-256認証を使用(md5ではなく)
MongoDB
- 厳密な文字制限なし
@、:、/を避ける — MongoDB接続文字列のURIデリミタ- またはパーセントエンコーディングを使用:
@は%40になる
Redis
requirepassディレクティブは任意の文字列をサポート#を避ける — 設定ファイルのコメント文字- Redis 6+では単一パスワードの代わりにACLを使用
接続文字列のエスケープ
データベースパスワードは接続文字列に含まれ、特殊文字にはエスケープが必要です:
# PostgreSQL接続文字列
postgresql://user:p%40ssw%23rd@host:5432/db
# MongoDB接続文字列
mongodb://user:p%40ssw%23rd@host:27017/db
接続文字列でURLエンコーディングが必要な文字:@、:、/、?、#、%、[、]。
推奨データベースパスワード設定
長さ: 32-64文字
文字: 英数字 + 安全な記号(- _ . ~)
避ける: ' " \ @ : / ? # % [ ]
保存: 環境変数またはシークレットマネージャー
データベースパスワードの例
xK7m9pR2nT4vB8qW3hL6jY1cF5gD0sA
Nt3vR8kL2pY6wH9mQ4bJ7xF1cG5dA0e
保存のベストプラクティス
- データベースパスワードをソースコードにハードコーディングしない
- 環境変数を使用(
.envファイルはバージョン管理から除外) - シークレットマネージャーを使用(AWS Secrets Manager、HashiCorp Vault、Doppler)
- 自動化ツールを使用してデータベースパスワードを定期的にローテーション
- アプリケーションと環境ごとに個別の資格情報を使用
ユースケース
データベースパスワードは、アプリケーションインフラストラクチャを設定するバックエンド開発者、DevOpsエンジニア、システム管理者に必要です。ローカル開発データベースから本番クラウドインスタンスまで、すべてのデプロイメントにはコードベース外に安全に保存された一意の強力なデータベースパスワードが必要です。