##はじめに
PostgreSQL利用歴1週間の初心者です。
これまで勉強した内容を記事として整理することで、
知識を定着させることを目的としています。
内容については資料を読んで書いておりますが、
間違いがあればご指摘いただけると助かります。
##目次
環境
概要(一刻も早くインストールしたい方は飛ばしてOK!)
インストール手順
運用上の注意
参考資料
##環境
MacOS: BigSur 11.4
PostgresSQL: 13.3
##概要
仕組みを知っておくと、エラーが出た時に役立つと思います。
PostgreSQLとはオブジェクト指向のRDBMSの1つです。
RDBMS [IT用語辞典](https://e-words.jp/w/RDBMS.html)
オープンソースであり、無償で使用・配布できます。
例えば、ECサイトの場合は登録ユーザ情報や購買履歴などをテーブルとして管理しているでしょう。
テーブル: 登録ユーザ情報 | テーブル: 購買履歴 |
---|---|
![]() |
![]() |
postgreSQL postmaster
postmaster は、PostgreSQL のマルチユーザデータベースサーバです。
クライアントアプリケーションがデータベースに接続するためには、稼働している postmaster に (ネットワークを介して、またはローカルで) 接続する必要があります。
その後、postmaster は接続を操作するために別のサーバプロセス ("postgres") を開始します。
また、postmaster は、サーバプロセス間の管理も行います。
(中略)
1つのデータベースクラスタのデータは、必ず1つの postmaster によって管理されています。
データベースクラスタとは、同じファイルシステムの場所に格納されているデータベースの集まりのことです。
postmaster(PostgreSQLのマルチユーザDBサーバー)はpostgresの廃止予定の別名
ちょっとよくわからなかった
マルチユーザDBがシングルユーザDBになっただけ?どんなプロセス動いてるの?
ソースを追いかけないといけないのかな...
##インストール手順
1.Homebrewを使用してインストール
(Homebrewを使用してpostgresSQLをインストール)
% brew install postgresql
(とりあえずインストールできたか確認)
% postgres --version
2.DBの設定
(DBの符号化方式をUTF-8として作成)
% initdb /usr/local/var/postgres -E utf8
initdbコマンドはPostgreSQLサーバーアプリケーションのコマンドで、DBクラスタを新しく作成します。
ここで発生しそうなエラーは2つあります。
①すでにDBクラスタが存在している→既存のDBクラスタを削除して、再度initdbを実行
②そのユーザに作成権限がない(chownコマンドで確認)→rootで作成し、ユーザに権限を付与
3.PostgreSQLサーバーの起動
% postgres -D /usr/local/var/postgres
または
(PostgreSQLサーバーアプリケーションを使用; DBサーバーが稼働しているホスト上で実行)
$ pg_ctl -D /usr/local/pgsql/data
または
(Homebrewを使ってサービスを開始)
% brew services start postgresql
毎回データ領域(今回の場合は/usr/local/var/postgres) と入力するのが面倒な場合は、
以下のように環境変数PGDATAに登録すれば良い。
4.あとは自由にDBを操作してください
例えば...
(DB一覧を取得)
% psql -l
(新しいDBの作成)
% createdb 新しいDBの名前
(DBに接続)
% psql 接続したいDBの名前
(DBに接続したあと、ユーザの一覧を表示)
=# select * from pg_user;
ちなみに、ユーザ一覧のところに書いてある" =# "は管理ユーザでDBに接続、
” => ”は一般ユーザでDBに接続していることを表現しています。
5.最後はプロセスを終了して終わりましょう
プロセスを終了しておかないと、次回使うときに「そのプロセスは使用されているから無理」というエラーが出ます。
(PostgreSQLサーバーアプリケーションを使用; DBサーバーが稼働しているホスト上で実行)
$ pg_ctl -D /usr/local/pgsql/data stop
または
(Homebrewを使ってサービスを停止)
% brew services stop postgresql
##運用上の注意
自分の環境で遊ぶだけだと意識しないのが”セキュリティ”関連の項目になります。
DBには必要なデータや顧客情報が保存されているので、不正に改ざん・削除されては業務どころか、顧客にも被害が発生します。
DBを扱うユーザが複数いる場合は特に、”最小権限の原則”を守る必要があります。
いかなる権限も与えない、閲覧権限だけ、閲覧・編集権限など細かく設定し、誤操作や内部不正の機会を与えないことが大切です。適切なアクセス制御をしましょう。(自戒)
(後の記事で書いた方がいい → 未来の自分よろしく タスク ポイー)
##参考資料
PostgreSQL12.4文書 [第2章SQL言語 2.2.概念](https://www.postgresql.jp/document/12/html/tutorial-concepts.html)
PostgreSQL7.2.3リファレンスマニュアル [postmaster](https://www.postgresql.jp/document/7.2/reference/app-postmaster.html)
PostgreSQL/PostgreSQLのユーザ一覧情報を参照する方法 (https://db.just4fun.biz/?PostgreSQL/PostgreSQL%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E4%B8%80%E8%A6%A7%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
Trademark Policy(https://www.postgresql.org/about/policies/trademarks/)