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時間単位も可)で利用可能です!
以上!
コメント