LoginSignup
0
0

More than 1 year has passed since last update.

macのlocalにPostgreSQLを導入する

Posted at

はじめに

PostgreSQL利用歴1週間の初心者です。
これまで勉強した内容を記事として整理することで、
知識を定着させることを目的としています。
内容については資料を読んで書いておりますが、
間違いがあればご指摘いただけると助かります。

目次

環境
概要(一刻も早くインストールしたい方は飛ばしてOK!)
インストール手順
運用上の注意
参考資料

環境

MacOS: BigSur 11.4
PostgresSQL: 13.3

概要

仕組みを知っておくと、エラーが出た時に役立つと思います。
PostgreSQLとはオブジェクト指向のRDBMSの1つです。

RDBMS [IT用語辞典](https://e-words.jp/w/RDBMS.html)

オープンソースであり、無償で使用・配布できます。
例えば、ECサイトの場合は登録ユーザ情報や購買履歴などをテーブルとして管理しているでしょう。

テーブル: 登録ユーザ情報  テーブル: 購買履歴
スクリーンショット 2021-05-31 3.22.42.png スクリーンショット 2021-05-31 3.22.52.png

構成は下図のようになると思います。
image.png

postgreSQL postmaster

postmaster は、PostgreSQL のマルチユーザデータベースサーバです。
クライアントアプリケーションがデータベースに接続するためには、稼働している postmaster に (ネットワークを介して、またはローカルで) 接続する必要があります。
その後、postmaster は接続を操作するために別のサーバプロセス ("postgres") を開始します。
また、postmaster は、サーバプロセス間の管理も行います。
(中略)
1つのデータベースクラスタのデータは、必ず1つの postmaster によって管理されています。
データベースクラスタとは、同じファイルシステムの場所に格納されているデータベースの集まりのことです。

:flushed: postmaster(PostgreSQLのマルチユーザDBサーバー)はpostgresの廃止予定の別名 :flushed:

version postmaster説明 postgres説明
12.4 https://www.postgresql.jp/document/12/html/app-postmaster.html https://www.postgresql.jp/document/12/html/app-postgres.html
7.3.4 https://www.postgresql.jp/document/7.3/reference/app-postmaster.html https://www.postgresql.jp/document/7.3/reference/app-postgres.html

ちょっとよくわからなかった :sweat_drops: 
マルチユーザ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を扱うユーザが複数いる場合は特に、”最小権限の原則”を守る必要があります。
いかなる権限も与えない、閲覧権限だけ、閲覧・編集権限など細かく設定し、誤操作や内部不正の機会を与えないことが大切です。適切なアクセス制御をしましょう。(自戒)
(後の記事で書いた方がいい → 未来の自分よろしく :sunglasses: タスク ポイー)

参考資料

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/)

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