【せつぞくもじれつ】

接続文字列 とは?

最終更新:
💡 住所・名前・合言葉をまとめた「接続先メモ」

接続文字列とは、データベースやサービスに接続するために必要な情報(ホスト名・ポート番号・データベース名・ユーザー名・パスワードなど)を1つのテキストにまとめたもののこと。書式はドライバーごとに異なり、秘密情報の扱いにも注意が必要な理由を解説。

📌 このページのポイント
接続文字列の構成要素(.NETのNpgsqlの例) Host=db.example.com;Port=5432;Database=mydb;Username=admin;Password=*** ホスト名 db.example.com ポート 5432 DB名 mydb ユーザー admin パスワード *** アプリケーション 接続 データベース ⚠ 秘密情報は 環境変数 or シークレット管理で保管
接続文字列の構成要素と利用イメージ
ひよこ ひよこ
接続文字列って何?データベースの住所みたいなもの?
ペンギン先生 ペンギン先生
そうそう、住所と鍵をまとめたメモだよ。「どのサーバーの、どのデータベースに、誰として、どのパスワードで接続するか」を1つのテキストにまとめたものなんだ。
ひよこ ひよこ
具体的にはどんな形をしているの?
ペンギン先生 ペンギン先生
書き方はドライバーによって違うよ。.NETからPostgreSQLにつなぐNpgsqlなら Host=localhost;Port=5432;Database=mydb;Username=admin;Password=secret のようにセミコロンで区切るんだ。PostgreSQL標準のlibpqだと host=localhost port=5432 dbname=mydb のような空白区切りや、postgresql://admin@localhost/mydb のようなURI形式を使うよ。
ひよこ ひよこ
パスワードがそのまま書いてあるの?それって危なくない?
ペンギン先生 ペンギン先生
いいところに気づいたね。だから接続文字列はソースコードに直接書かず、環境変数やシークレット管理ツールに保存するのが基本だよ。パスワード入りの設定ファイルをGitHubなどに公開してしまうと、誰でも読めてしまうからね。
ひよこ ひよこ
本番環境と開発環境で接続先を切り替えたいときはどうするの?
ペンギン先生 ペンギン先生
環境変数で切り替える方法がよく使われるよ。たとえば DATABASE_URL という変数に、開発ではローカルの接続先、本番では本番の接続先を入れておけば、コードを変えずに切り替えられるんだ。
ひよこ ひよこ
クラウドのデータベースでも同じ考え方なの?
ペンギン先生 ペンギン先生
同じだよ。Azure SQL Databaseのように、管理画面(ポータル)でドライバー向けの接続文字列を表示できるサービスもあるよ。Amazon RDSはAWS Secrets Managerと連携して、マスターユーザーのパスワードを自動でローテーションすることもできるよ。
もっと詳しく知りたい人へ

パスワードに記号が入っていると、接続文字列が壊れることはある?

あるよ。区切りに使われる記号が値に含まれると、別の項目の始まりと解釈されることがあるんだ。PostgreSQLのURI形式では、特別な意味を持つ記号を「%」を使ったパーセントエンコーディングで書く必要があり、キー=値形式では空白を含む値をシングルクォートで囲む。ルールはドライバーごとに違うので、使っているドライバーの説明書で確認しよう。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「接続文字列」って出てきたら「DB接続に必要な情報を1つにまとめたテキスト」と思えればだいたいOK!
📖 おまけ:英語の意味
「Connection String」 = 接続文字列
💬 Connection(接続)+ String(文字列)で、接続先の情報をひとまとめにした文字列という意味だよ

参考資料

← 用語集にもどる