PostgreSQL - gosaaan1/hokulea-garage GitHub Wiki

アプリケーションで使うデータベースの作成

  • CREATE USER 新しいデータベースロール(ユーザ)を定義する:
CREATE USER <user_name> WITH ENCRYPTED PASSWORD '<password>'
  • CREATE DATABASE 作成したユーザを所有者にしたデータベースを作成する場合(これをしないと CREATE TABLE ができない):
CREATE DATABASE <database_name> OWNER <user_name>
  • 複数の名前付きスキーマを持つ 1 つのデータベースを作成することをお勧めします。これは、複数のデータベースを作成し、オブジェクトを「パブリック」スキーマ内に格納する一般的な(および古い)方法とは異なります。さらに、パブリックスキーマを削除することをお勧めします。

    • スキーマ間オブジェクトへのアクセスは、単一のデータベース接続から可能です。
    • スキーマへのアクセス権の付与は、pg_hba.conf ファイルの再構成ではなく、GRANT ステートメントによって実行されます。
    • スキーマは、オブジェクトの分離と名前の間隔に関する ANSI 標準です。
    • 1 つのサーバー (PostgreSQL クラスター) 内で 1 つのデータベースのみを管理します。
  • 補足

    • PostgreSQLではログインができると各データベースのPublicスキーマは見えてしまう仕様になっているっぽい。(だからPublicスキーマを削除することを勧めている)
    • PostgreSQLではスキーマは「テーブルの整理のためのディレクトリのようなもの」と言っている。アプリケーション単位では「データベース」に分離する。
    • SQLAlchemyでスキーマを指定する方法はいくつかあるが、モデルで指定する方法が最もシンプルかも。(指定しなければPublicスキーマを使用する)
  • 注: postgres データベースは、他のデータベースを作成する前に接続するデフォルトのデータベースです。別のデータベースを作成したら、そのデータベースに切り替えてテーブルを作成し、データを挿入します。アプリケーション データには postgres データベースを使用しないでください。
  • Cloud SQL の認証方法を使用するインスタンス上に作成されたユーザーには、cloudsqlsuperuser ロールが自動的に付与されます。このロールに関連付けられている権限は、CREATEROLE、CREATEDB、LOGIN です。
  • 「Compute Engine から Cloud SQL for PostgreSQL に接続する」を参照。
⚠️ **GitHub.com Fallback** ⚠️