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サーバ/クライアントアプリケーションのコマンドもあります。
- PostgreSQLで使用できるSQLコマンド一覧
- PostgreSQLで使用できるメタコマンド一覧
- PostgreSQLサーバアプリケーションのコマンド一覧
- 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名}- その他のオプションはpsqlコマンドのドキュメントにまとめられています。[3]
-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サーバ/クライアントアプリケーションのコマンドは、DBの生成や削除、ユーザ(ロール)の生成や削除ができる。また、psqlコマンドを使って、PostgreSQLのDBに接続することができる。
例:ロール(ユーザ)の生成/削除
1つ目の赤点線でcreateuserコマンドによりshiguregaki2というユーザを作成し、2つ目の赤点線でdropuserコマンドによりshiguregaki2を削除している。
各コマンド実行前にDBにログインし、ユーザを確認したところ(青点線枠)、ロール(ユーザ)としてshiguregaki2が生成され、その後削除されていることが分かる。

PostgreSQL DBで使えるコマンド
PostgreSQL DBではSQLコマンド、メタコマンドが使える。
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時間単位も可)で利用可能です!

 
以上!

 
  
  
  
  


コメント