0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PostgreSQL初学者 忘備録 [MacOS]

Last updated at Posted at 2021-05-14

PostgreSQL初学者の忘備録。
PostgreSQLをインストールした後、ターミナルから弄っていくことを想定。
なおテーブルの作成などはFlask-SQLAlchemyから行います。

PostgreSQLサーバーの起動・停止

起動と停止には大きく分けてOSのデーモン管理コマンド(Macではbrew)から行うパターンとPostreSQLコマンドから行う方法がある。ここではデーモン管理コマンドの方のみ掲載します。

# 起動
brew services start postgresql

# 停止
brew services stop postgresql

# 再起動
brew services restart postgresql

psqlを利用したPostgreSQLの対話型処理

psqlコマンドはPostgreSQLのターミナル型フロントエンドです。
これを用いることでターミナルからPostgreSQLに問い合わせを行い、結果を確認することができます。

 DB一覧の表示

psql -l

特定のロールからアクセス

ロールとはユーザーとグループが1つになったものです。
つまりそれぞれ権限を持った、ログインの最小単位となるユーザーもロール、
そのユーザーをまとめて任意の集団であるグループもロール、ということになります。

PostgreSQLは初回インストール後、自動であらゆる権限が付与されたスーパーユーザーが作成されています。
なお随所でその名称はpostgresと言われていますが、brewでインストールした際はpostgresではなく、MacBookのアカウント名になります。

またスーパーユーザー同様に自動でpostgres, template0, template1というDBも作成されます。
今回はスーパーユーザー名がpostgresだと仮定して、
template1にアクセスするには

psql -U postgres -d template1

となります。
psqlのオプションで-Uはアクセス時のロール名指定に、-dはデータベース名指定に使用します。
なおロール名とデータベース名が一緒である場合は

psql -U postgres

とDB名を省略してOKです。
また

psql template1

とした場合はDB名が指定されたこととなります。
またその時指定されていないロール名はOSのユーザー名が使われます。
(なのでbrewでインストールした際は省略するとスーパーユーザーでのアクセスとなります)

アクセス時には他にもホスト名やポート番号を指定することもでき、それを含めると

psql -h ホスト名 -p ポート番号 -U ロール名 -d データベース名

となる。
なお-hを省略した場合はlocalhost、-pを省略した場合はインストール時に設定したポート(通常は5432)となっている。
また再掲すると -d省略時はアクセスするDB名はユーザー名と同じになり、-Uを省略した場合はOSのユーザー名がロール名となる。

ロールの作成

いつまでもスーパーユーザーでアクセスするわけにもいかないのでロールを作ります。
これ以降は上記の方法で特定のDBにアクセスした状態で作業します。

ロールを作成するには

CREATE ROLE ロール名;

もしくは

CREATE USER ロール名;

上記2つの違いはCREATE USERの場合はデフォルトで作成したロールにログイン権限(=データベースに接続する権限)が付与されています。
CREATE ROLEの方はデフォルトでは付与されていません。付与する場合は、

CREATE ROLE ロール名 LOGIN;

とします。
基本的にロール作成時の権限付与はCREATE ROLE ロール名 権限名;と付与していきます。
主な権限は

・ログイン:LOGIN
・データベース作成:CREATEDB
・ロール作成:CREATEROLE
・スーパーユーザーにする:SUPERUSER

あたりでしょうか。

また上記の権限を取りたい、もしくは今ないロールに与えたい場合は

# 与える場合
ALTER ROLE ロール名 権限名

# 取り去る場合
ALTER ROLE ロール名 NO権限名

とする。例えば既に作成済みでログイン権限のあるロール・user1からログイン権限を取るには

ALTER ROLE ロール名 NOLOGIN

とします。

なおアクセス時にパスワードを要求する場合は

CREATE ROLE ロール名 WITH PASSWORD 'パスワード';

とします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?