PostgreSQLを使ってみた 個人的備忘録

ノウハウ
スポンサーリンク

PostgreSQLのお試し環境を作り、いろいろやってみたときの個人的備忘録です。

 

目次

 


 

PostgreSQLのお試し環境

PostgreSQLサーバ+pgwebサーバ+webサーバの最低限の構成をDockerコンテナで作成しました。
以下のブログで構築手順をまとめたので、よろしければご覧ください。

 

 

PostgreSQLとは?

自分自身が、PostgreSQL初心者だったので、簡単にPostgreSQLについて調べてみました。

OSやライセンスについて

  • PostgreSQLはオープンソースのリレーショナルデータベース管理システム
  • OSは「Linux (最近のディストリビューションすべて), Windows (Win2000 SP4以降), FreeBSD, OpenBSD, NetBSD, OS X, AIX, HP/UX, Solaris, Tru64 Unix, UnixWare」に対応している。[1]
  • ライセンスはBSDライセンス/MITライセンスに似たオープンソースライセンス[2]

 

ロールについて

  • 権限をロールという単位で管理しており、ユーザに紐づいている(グループとして付与することもできる)
  • ロールは管理者権限と一般権限があり、権限によっては利用できない操作がある

 

コマンドについて

PostgreSQLではSQL文の他にメタコマンドがあります。
また、PostgreSQLサーバ/クライアントアプリケーションのコマンドもあります。

データベースやユーザの参照やテーブルの操作をする場合は、SQL文やメタコマンドを利用し、データベースやユーザ自体を作成/削除したい場合は、サーバ/クライアントアプリケーションコマンドを利用するイメージです。

 

 

使ってみて 個人的備忘録

ここからは完全に備忘録です。まとまりはありませんので、悪しからず。。。

 

pgコンテナ(PostgreSQLサーバ)にログイン

PostgreSQLサーバをpgコンテナ上に立ち上がっていた場合、以下のコマンドでログインできる。

$ docker exec -it pg bash

特にユーザを指定していないため、rootでPostgreSQLサーバにログインされ、ログインすると以下のような表示となる。

root@240708905a63:/#
  • 「@240708905a63」はコンテナID

 

 

PostgreSQL DBにログイン

DBにログインするのに、PostgreSQLサーバ上で以下のコマンドを入力すればよい。

> psql -U {ユーザ名} -d {DB名}

 

-U オプションについて

-Uオプションを省略するとPostgreSQLサーバにログインしているユーザでDBへ接続しようとする。
pgコンテナ(PostgreSQLサーバ)にrootでログインしている場合は、-Uオプションを指定しないとrootでDBにログインしようとして、以下のようなエラーがでるので注意。

psql: error: could not connect to server: FATAL:  role "root" does not exist

 

 

-dオプションについて

-dオプションを省略するとDBへ接続しようとしているユーザ名と同じDB名で接続しようとする。
例えば、psql -U shiguregakiとDBへ接続するユーザとしてshiguregakiと指定した場合、shiguregakiという名前のDBに接続しに行こうとする。shiguregakiというDBがないので、以下のようなエラーがでる。

psql: error: could not connect to server: FATAL:  database "shiguregaki" does not exist

 

 

  

コマンドの使える範囲について

PostgreSQLサーバで使えるコマンド

PostgreSQLサーバではアプリケーションのコマンドが使える。

  • PostgreSQLサーバアプリケーションのコマンド一覧[4]
  • PostgreSQLクライアントアプリケーションのコマンド一覧[5]

 

PostgreSQLサーバ/クライアントアプリケーションのコマンドは、DBの生成や削除、ユーザ(ロール)の生成や削除ができる。また、psqlコマンドを使って、PostgreSQLのDBに接続することができる。

 

例:ロール(ユーザ)の生成/削除

1つ目の赤点線でcreateuserコマンドによりshiguregaki2というユーザを作成し、2つ目の赤点線でdropuserコマンドによりshiguregaki2を削除している。
各コマンド実行前にDBにログインし、ユーザを確認したところ(青点線枠)、ロール(ユーザ)としてshiguregaki2が生成され、その後削除されていることが分かる。

 

 

PostgreSQL DBで使えるコマンド

PostgreSQL DBではSQLコマンド、メタコマンドが使える。

  • PostgreSQLで使用できるSQLコマンド一覧[6]
  • PostgreSQLで使用できるメタコマンド一覧[7]

 

SQLコマンドやメタコマンドを使って、データベースの生成/削除/変更/参照、ロール(ユーザ)の生成/削除/変更/参照、テーブルの生成/削除/変更/削除/参照などができる。

 

例:ロール(ユーザ)の生成/削除

1つ目の赤点線でDBに接続している。その後、2つ目の赤点線でCREATRE ROLEコマンドによりshiguregaki2というユーザを作成し、3つ目の赤点線でDROP ROLEコマンドによりshiguregaki2を削除している。
各コマンド実行前にユーザを確認したところ(青点線枠)、ロール(ユーザ)としてshiguregaki2が生成され、その後削除されていることが分かる。
なお、\duコマンドはメタコマンドでデータベースロールを一覧表示してくれる。

 

 

pgwebサーバで使えるコマンド

pgwebではSQLコマンドが使える。

 

SQLコマンドを使って、データベースの生成/削除/変更/参照、ロール(ユーザ)の生成/削除/変更/参照、テーブルの生成/削除/変更/削除/参照などができる。

 

例:ロール(ユーザ)の生成/削除

黒背景はPostgreSQL DBに接続してロールの一覧を表示したもの。オレンジ線で囲まれているのはpgwebでSQLコマンドを実行したもの。

各SQLコマンド実行前にユーザを確認したところ、ロール(ユーザ)としてshiguregaki2が生成され、その後削除されていることが分かる。

 

pgwebではメタコマンドは使えない!

 

  

プロンプトについて

特権ユーザか一般ユーザかでプロンプトが異なる。

【特権ユーザ】
PGDB=# 

【一般ユーザ】
PGDB=> 

 

また、SQL文は最後に;を入れる必要があるが、それが入れていない状態では、以下のような{DB名}-#というプロンプトになる。

【SQLコマンドの実行が途中な場合のプロンプト】
PGDB-# 

 

 

参考

[1] 15.6. サポートされるプラットフォーム | PostgreSQL 9.4.5文書
[2] License | postgresql.org
[3] psqlコマンド | PostgreSQL 9.2.4文書
[4] PostgreSQLサーバアプリケーション | PostgreSQL 9.1.5文書
[5] PostgreSQLクライアントアプリケーション | PostgreSQL 9.1.5文書
[6] SQLコマンド | PostgreSQL 9.1.5文書
[7] メタコマンド | PostgreSQL 9.2.4文書

 

広告

Dockerをやるなら以下の書籍がオススメです。
Dockerとは何か?から複数のコンテナを管理することができるDocker Compose、Kubernetesまでまとめられています。

 


 

ConoHa VPS は初期費用不要で月に数百円で利用できる仮想サーバのサービスです。
以下のような方には非常にオススメのサービスとなっています!

  • 勉強がてらLinuxの環境をちょっと触ってみたい
    管理者権限が実行可能なLinuxサーバ環境が構築可能です!
  • スモールスタートでサービスを提供して、うまくいったら規模をスケールアップしたい
    後からメモリサイズやCPU数などのスケールアップ/スケールダウン可能です!
  • AWSやGCPなどのクラウドサービスは高いので、もっと安くサーバ構築したい
    初期費用なし、月数百円(1時間単位も可)で利用可能です!

 

以上!

コメント

タイトルとURLをコピーしました