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 に接続する」を参照。