ゼロから始めるPostgreSQL〜インストールとサーバ起動+アクセス〜

postgresql DB関係
この記事は約5分で読めます。

さて、急遽PostgreSQLを使う羽目になったので、ゼロからPostgreSQLの使い方を調べつつ自分のメモとしても残しておこうと思います。

DML(Data Manipulation Language)はMySqlやらMarinaDBやら触ってるので、多分PostgreSQLさんはクセがないと言われているのでなんとかなるかなと思いつつ、DDL(Data Definition Language) とDCL(Data Control Language)は、はてさてとなったので、調べつつ一からやっていきます。

興味ない方も多いかと思いますが、そこら辺はメモだと思ってご容赦ください。

Advertisements

PostgreSQLって何?

一応、一般的なご紹介だけしておきます。

  • mysql と人気を二分する、OSS-DB の一つ
  • 方言的SQLは少ないらしい(自分も今から勉強なので、差分があれば差分リストもどっかで作ります)
  • トリガとか全文検索に強そう(メリット)
  • 3rd party製品の対応がMySQLとかと比較して薄い(デメリット)

機能比較は自分でやってなくて(というかまだできるレベルにいないので)、以下のサイトを参考にみていました。結構古い記事(2009年)なので、どっかで更新されてる比較表も探さなければとは思います。

PostgreSQLの機能と他のRDBMSの比較 | Let's POSTGRES

docker対応

ちゃんとDocker hubにもあります。ここら辺は安心。まぁOSS-DBとしてメジャーなので流石にあるでしょうがw

Docker Hub

その他PostgreSQLの基本

・クライアント-サーバ方式

・ロールっていう概念でユーザ管理

・pg_ctlでバックエンドサーバを動かす(sysctlにenable可能)

・psqlでSQL関係操作(login〜)、ショートカットコマンドが多い

・クライアントツールとしてはpgadmin( https://www.pgadmin.org/ )などがある

インストール(MacOS)

homebrewを使ってインストールしていきます。とりあえず最新版をインストールする場合です。

brew install postgresql

バージョンの指定をしたい場合は以下。homebrewのupdateしてなくて新しいのが入ってない人は、先にupdateしてください。

brew search postgresql
brew install <バージョン>

pathを通す

bashを使っているかzshを使っているかで、いれる先(bash_profileかzprofileか)は違うにせよ、コマンドは基本以下。

viを使って編集します。vimのかたはvimでやってください。

vi ~/.zprofile
#postgresql
export PATH="/usr/local/opt/postgresql/bin:$PATH
export PGDATA=/usr/local/var/postgres

PGDATAはデフォルトのデータディレクトリを環境変数で指定する場合に利用。

その他環境変数利用可能な要素は以下。

環境変数内容
PGDATAデフォルトのデータディレクトリ
PGCLIENTENCODINGクライアントで使用される文字符号化方式のデフォルト。 (クライアントは個別に変変更可能。) 設定ファイルでも設定可。
PGPORTデフォルトのポート番号(一般的にはcnfファイル内で設定)
postgresql環境変数

PGDATAを環境変数に設定しない場合、サーバの立ち上げ時に ーDオプションで/usr/local/var/postgresを渡すことも可能

(バックエンド)サーバを立ち上げる

サーバの立ち上げは以下。

pg_ctl start

こっちでも可能。

brew services start postgresql

立ち上げが成功すると以下のようなコメント。

2020-11-13 16:59:41.678 JST [80588] LOG: listening on IPv6 address "::1", port 5432
2020-11-13 16:59:41.678 JST [80588] LOG: listening on IPv4 address "127.0.0.1", port 5432
2020-11-13 16:59:41.679 JST [80588] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2020-11-13 16:59:41.689 JST [80589] LOG: database system was shut down at 2020-11-13 16:09:58 JST
2020-11-13 16:59:41.704 JST [80588] LOG: database system is ready to accept connections
done
server started

サーバの状態を確認する

pg_ctl status

サーバが立ち上がっているか否かの返答がくる。立ち上がっている場合、以下のようにPIDとセットで返ってくる

pg_ctl: server is running (PID: 80588)

サーバにアクセスする

アクセスする方法は以下。

 psql [-h localhost] [-p 5432] -U role_name -d db_name

ローカルサーバからのアクセスの場合、-h localhostは不要。-pもport指定のため、標準で良ければ指定不要。

あと、ユーザネームを指定しないことも可能。ということで、最小は以下。

psql db_name

まとめ

とりあえずDBへ接続はできました。次はシンプルなテーブルの取得や、ちょっと手間取った(というか、ワードに戸惑った)roleに関する設定などをやってきます。

さて、いつになったらrailsで使えるレベルまで持っていけるかなぁ。

コメント

  1. […] […]