プロジェクト

全般

プロフィール

PostgreSQL Usage

PostgreSQLの使い方メモです。

psql(コマンドライン)

接続

コマンドラインツールでPostgreSQLサーバーに接続します。デフォルトでは次の制約があります。

  • サーバーと同じホスト上(localhost)からの接続のみ受け付け
  • ローカルホストからのアクセスでは、コマンドを実行するOS上のユーザーとPostgreSQLのユーザーが同一であること(peer認証)

最初の設定は、/etc/postgresql/16/main/postgresql.confの次の記述によるものです。
#listen_addresses = 'localhost' # what IP address(es) to listen on;

  • コメントアウトを解除し、'localhost''*' に修正すると、外部からの接続が可能になります。

2番目の設定は、/etc/postgresql/16/main/pg_hda.confの次の記述によるものです。
local all all peer

  • peerをmd5に変更するとpeer認証を無効にし、パスワード認証が使用されます。
  • peerをtrustに変更すると、ローカルホストからの接続はすべて信頼できると判断され、ユーザー・パスワード情報なしに接続できます。
~ % psql -p 5432 -d postgres
  • ローカルホストのPostgreSQLにポート番号5432を指定し、使用するデータベース名 postgres を指定して接続

ユーザー管理

PostgreSQLでは、ユーザーは「ロール」という概念に含まれます。ログイン可能なロール(LOGIN権限を持つロール)がユーザーです。

ユーザー一覧

  • \du

ユーザーの作成

  • ユーザーとなるロールを作成(パスワードは未設定)
    CREATE USER <ユーザー名>;
    これは、次と等価 CREATE ROLE <ユーザー名> LOGIN;
    * パスワードを指定してユーザーとなるロールを作成
    CREATE USER <ユーザー名> WITH PASSWORD 'パスワード';
  • superuse権限を持つユーザーとなるロールをパスワードを指定して作成
    CREATE USER <ユーザー名> WITH SUPERUSER PASSWORD 'パスワード';

ユーザーの削除

  • DROP USER <ユーザー名>;

パスワード変更

  • ALTER USER <ユーザー名> WITH PASSWORD '<パスワード>';

ロールの属性

  • LOGIN
    データベースに接続できるロール属性
  • SUPERUSER
    ログイン以外のすべての権限検査が行われない特権(危険)
  • CREATEDB
    データベースの作成権限
  • CREATEROLE
    ロール作成権限。ロールの変更や削除も可能
  • REPLICATION
    ストリーミングレプリケーションの新規接続権限
  • PASSWORD
    データベースに接続する際のパスワード
  • INHERIT
  • NOINHERIT
  • BYPASSRLS
  • CONNECTION LIMIT

データベース管理

データベース一覧

  • \l

データベース作成

  • CREATE DATABASE <データベース名>;

データベース削除

  • DROP DATABASE <データベース名>;

データベースの所有者変更

  • ALTER DATABASE <データベース名> OWNER TO <ユーザー名>;

スキーマ

PostgreSQLは、データベースの中に複数のスキーマが設定できます。テーブルはいずれかのスキーマに属します。通常はデフォルトで生成されるスキーマの一つpublicが使われます。

テーブル

テーブル一覧

  • \dt

テーブル作成

  • CREATE TABLE <テーブル名> (<カラム名> <型>, ...);

テーブル削除

  • DROP TABLE <テーブル名>;

テーブルを空にする

  • TRUNCATE <テーブル名>;

カラム一覧

  • \d <テーブル名>


約2ヶ月前に更新