Articles

Getting Started with PostgreSQL on Mac OSX

I. Introduction

先日、私は新しい Node.js プロジェクトを開始し、データベースのバックエンドとして PostgreSQL を使用したいと考えました。

このチュートリアルでは、MacOSX 10.7 (Lion)以上の環境でPostgreSQLをセットアップし、設定し、使用する方法を説明します。 MacOSXに内蔵されているターミナル、iTerm2、Zshなどを使って、コマンドラインを使用する基本的なレベルの快適さが必要です。

  • 実行中の PostgreSQL 9.5.4 インスタンスを持っている
  • データベースとユーザーを作成、管理する方法を知っている
  • データベースを管理するためにコマンドラインと UI ツールの両方を使用する方法を知っている

II. PostgreSQLについて

PostgreSQLは、ACID準拠のObject Relational Database Management System (ORDBMS)です(なかなかの名言ですね)。 簡単に言えば、1つのデータを別のデータに関連付けることができるデータベースです(そのため、「リレーショナル」と呼ばれています)。 Linux、Unix、Windowsなど、ほぼすべてのOSで動作します。 膨大な量のデータや、何千人ものユーザーが同時に使用する高負荷のインターネットアプリケーションを扱うことができる、高いパフォーマンスと高いスケーラビリティを備えています。

Postgresは、いくつかのエンタープライズ機能を含むデータベース機能の長いリストをサポートしています。 標準的なリレーショナルデータベースの機能は別として、Postgresの最も注目すべき機能のいくつかを紹介します。

  • ストリーミングレプリケーション
  • スキーマ
  • 演算子、データ型、関数などのユーザ定義オブジェクト
  • ネストされたトランザクション
  • テーブルの継承
  • パーティショニング
  • マネー、ジオメトリ、IPアドレス、JSON、データレンジなど、いくつかの珍しいデータ型が用意されています。
  • Java、Perl、Python、Ruby、C/C++など、10種類以上のプログラミング言語でストアドプロシージャを実行可能

JSONへのファーストクラスのサポートにより、PostgresはしばしばMongoDBのような「No-SQL」データベースの良い代替手段となります。 PostgreSQLについてもっと読む

III. はじめに

まず最初に行うことは、Postgresのインストールです。

  1. BigSQLやPostgres.appのようなグラフィカルなインストーラーを使用する方法
  2. パッケージマネージャを使用してコマンドラインからインストールする方法

自分に合った方法を選択してください。 このチュートリアルでは、コマンドラインでインストールする方法を見てみましょう。

1. Homebrewの入手

PostgreSQLをコマンドラインでインストールするには、Homebrewと呼ばれるパッケージマネージャーを使用します。 Homebrewがすでにインストールされている場合は、PostgreSQLのインストールにスキップできます。

まず、次のコマンドをコマンド ラインにコピー アンド ペーストします。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

このコマンドが何をするのかは気にしないでください。 このコマンドの残りの部分(curlコマンド)は、コマンドラインからWebリクエストを行うためのツールです。 これは、与えられたURLでスクリプトをダウンロードし、Rubyインタープリタがそれを実行します。 以下のような出力が表示されるはずです:

postgres server
Homebrewのインストール

Homebrewができたので、Postgresのインストールに進みましょう!

2. Postgresのインストール

Homebrewができたので、PostgreSQLのインストールはとても簡単です。 Homebrew を使用して PostgreSQL をインストールするには、次のコマンドを実行してください:

brew install postgresql

次のような出力が表示されます:

postgresql server
*Installing *

Homebrew は Postgres の依存関係の解決を行います。 また、どのバージョンが最新なのか、どこで入手できるのか、どうやって解凍するのか、といったことも気にかけてくれます。

postgresql server
Starting Services

先に Postgres の実行を開始し、コンピュータが起動するたびに Postgres が起動するようにしましょう。 以下のコマンドを実行してください:

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

最後に、Postgresがインストールされ、実行されていることを確認しましょう。

postgres -V

あなたの出力は以下のようになるはずです:

postgresql server
Postgres Installed

以上です! Postgresがインストールされましたね。

3. Postgresの設定

Postgresは、あなたが何もしなくても、箱から出してすぐに使えるようにかなり努力しています。 デフォルトでは、ユーザー postgrespsqlユーティリティを使用してみましょう。これはPostgresと共にインストールされるユーティリティで、実際のSQLコマンドを知らなくても管理機能を実行することができます。

まず、コマンドラインに次のように入力します。

psql postgres

(システムの構成によっては、このコマンドを動作させるために sudo psql postgres を使用する必要があるかもしれません)。

以下のような出力が表示されます:

postgresql server
psql output

以上がpsqlのコマンドラインです。 これで、どのユーザーがインストールされているかを確認するためのコマンドを入力することができます:

postgres=# \du

表向きは、このコマンドはデータベース内のすべてのユーザーを取得する SQL クエリ (これについては後で説明します) を実行します。

postgresql server
psql User List

先ほどの Postgres ユーザーはわかりましたが、もう一人のユーザー engineerapart は何でしょうか? これは、Postgresを最初にインストールしたときに、あなたの生活を楽にするために行っていることの1つです。 ほとんどのLinuxベースのオペレーティングシステムでは、すべてのプロセスでデフォルトで使用されるユーザ名は、あなたがログインしているユーザ名です。 ほとんどのプログラムにユーザ名を渡す必要はありません。 しかし、Postgres のような特定のプログラムにユーザー名が設定されていないと、失敗してしまいます!

そのため、Postgres がインストールされると、ユーザー名に一致するデータベース ユーザーが自動的に作成され、すぐに開始できるようになります。

Postgres が一連のデフォルト ユーザーを設定してくれるのは確かに便利ですが、ローカル開発以外に使用するのは非常に悪い考えです。なぜなら、これらのユーザーは非常に広く知られており、さらに重要なことに、スーパー ユーザー アカウントであるため、データベースの削除を含め、何でもできるからです。 これでは本番用のデータベースとしては安全ではなく、限られた権限のユーザーが必要です。 では、どのようにして新しいユーザー(ロール)を作成し、使用すればよいのでしょうか?

これには主に2つの方法があります。

  • データベース上で CREATE ROLE SQL クエリを直接実行する
  • Postgres にインストールされている createuserCREATE ROLE を実行するための単なるラッパーです)。

両方のケースを見てみましょう。

A.1. CREATE ROLE with psql

CREATE ROLEの基本的な構文は次のようになります。

CREATE ROLE username WITH LOGIN PASSWORD 'quoted password' 

usernameは作成したいユーザーで、パスワードは最後に引用符で囲みます。 オプションについては後ほど説明します。

まずは、便利なpsqlツールに再度ログインしてみましょう。

postgresql server
psql output

ついでに、デフォルトのpostgresアカウントにパスワードを設定してみましょう(デフォルトではパスワードはありません)。

postgres=# \password postgres

パスワードを入力して確認するプロンプトが表示されます。 それでは、新しいロールを作成してみましょう:

postgres=# CREATE ROLE patrick WITH LOGIN PASSWORD 'Getting started'; postgres=# \du

出力は次のようになります:

postgresql server
psql CREATE ROLE

お待ちください。 ユーザー patrick の属性リストは完全に空です。 なぜでしょう?

これはPostgresがデフォルトを安全に管理する方法です。 このユーザは、自分が権限を持っているデータベース、テーブル、または行を読むことはできますが、それ以外のことはできません。つまり、データベースを作成したり管理したりすることはできず、管理者権限もありません。 これは良いことです。 データベースを安全に保つことができます。

では、新しいユーザーに CREATEDB 権限を追加して、データベースを作成できるようにしましょう

postgres=# ALTER ROLE patrick CREATEDB; postgres=# \du postgres=# \q # quits

出力は次のようになります。

postgresql server
psql ALTER ROLE

Documentation for CREATE ROLE

Documentation for ALTER ROLE

A.2. createuser ユーティリティ

Postgresには、上記のプロセスをより簡単にする、非常に便利なコマンドラインユーティリティが多数同梱されています。 psqlにログインしてSQLクエリを実行し、クエリ文の詳細を知る必要がある代わりに、使い慣れたコマンドラインインタフェースを使用して同じ作業を行うことができます。

  • createuser: ユーザーを作成する
  • createdb: データベースを作成する
  • dropuser: ユーザーを削除する
  • dropdb: データベースを削除する
  • postgres: SQL サーバー自体を実行する (上で Postgres のバージョンを確認したときに出てきました!)。
  • pg_dump: 単一のデータベースの内容をファイルにダンプする
  • pg_dumpall: すべてのデータベースをファイルにダンプする
  • psql: これは認識しています!

クライアント アプリケーションの全リスト

では、createuserpatrick ユーザーを作成します。

createuser patrick

これにより、データベースを作成する機能はありませんが、デフォルトの属性をすべて備えたユーザー patrick が作成されます。 データベースを作成する機能が必要な場合は、代わりに次のように実行します:

createuser patrick --createdb

残念ながら、ALTER ROLE と同じことを実現するコマンド ライン ツールはありません。 ユーザーが作成された後に変更するには、psqlを使用しなければなりません。

Documentation for createuser

A.3. まとめ

これで終わりです! これで、新しいユーザーが設定され、データベースを作成できるようになりました。

B. データベースの作成

ユーザーを作成するのと同様に、データベースを作成するには 2 つの方法があります。 CREATE DATABASE with psql

PostgreSQLでデータベースを作成するためのコアとなるSQL構文は以下の通りです:

CREATE DATABASE databasename;

上記と同じプロセスを行います。

psql postgres -U patrick

postgresql server
psql user login

プロンプトが少し変わっていることに気づくでしょう – #>に変わっています。

postgres=> CREATE DATABASE super_awesome_application;

Documentation for CREATE DATABASE

これが完了したら、データベースにアクセスする権限を持つユーザーを少なくとも 1 人追加する必要があります (すべてにアクセスできるスーパー ユーザーは別として)。 そのためには、新しい SQL コマンドを学びます。

postgres=> GRANT ALL PRIVILEGES ON DATABASE super_awesome_application TO patrick; postgres=> \list postgres=> \connect super_awesome_application postgres=> \dt postgres=> \q

Documentation for GRANT

ここでは、psqlで使用できるいくつかの新しいコマンドもご紹介しました。

  • \list: Postgres のすべてのデータベースを一覧表示します
  • \connect: 特定のデータベースに接続します
  • \dt: list the tables in the currently connected database

postgresql server
psql CREATE DATABASE

そして、これで完成です。

これで、super_awesome_applicationpatrickというユーザーで、データの作成、読み取り、更新、削除ができるようになりました!

B.2. createdb ユーティリティ

上記のように、createdbを使用してデータベースを作成する方が簡単ですが、作成後にデータベースを管理することができないという注意点があります。

createdb super_awesome_application -U patrick

ここでは、createdbpatrick ユーザーを渡しています。

データベースを作成した後に変更したいと思うことは非常に稀です。 変更できるのは、名前といくつかの構成パラメータだけです。 構成パラメータ (照合順序や文字セットなど) の変更は、このチュートリアルの範囲外の意味を持ちます。

繰り返しになりますが、作成されたデータベースを変更するコマンド ライン ツールはありません。

psql:

psql postgres -U patrick postgres=> ALTER DATABASE super_awesome_application RENAME TO even_more_awesome_application; postgres=> \q

そして、出力は以下のようになります。

postgresql server
psql ALTER DATABASE

Documentation for ALTER DATABASE

B.3. まとめ

これで終わりです! ユーザーを作成し、データベースを作成し、そのユーザーにデータベースを使用する権限を与えました。 その過程で、プリインストールされているPostgresコマンドラインツールのいくつかの使用方法を学びました。

では、MacOSXでPostgreSQLを管理するための一般的なグラフィカルツールをいくつか見てみましょう。 Popular GUIs for PostgreSQL on MacOSX

これまでは、Postgres インストールを管理するためのコマンドラインツールにかなり重点を置いてきました。 しかし、それでは手間と時間がかかってしまうものもあります。 例えば、テーブルにあるデータを素早く表示したい場合、コマンドラインツールからそれを得るには、GUIを使うよりも時間がかかります。

そのため、当然のことながら、多くの進取の気性に富んだ開発者が、ローカル (およびリモート) の Postgres サーバーの管理に使用できる、非常に印象的な GUI を構築しました。 ここでは、最も人気があり、ユーザーフレンドリーなものをいくつか紹介します。

1. Postico (https://eggerapps.at/postico/)

Postico は OSX 用の最新の Postgres クライアントで、上述の Postgres.app を作ったのと同じ開発者によって作られました。 無料ですが、ライセンスを購入することでさらに強力な機能をアンロックすることができます。 Mac専用に作られており、美しく、非常に使いやすい(しかし強力な)UIを備えているため、私はPostgresの管理にこのGUIを使用しています。 また、複雑なクエリのためのSQLエディタも備えています。

Posticoを使い始めるには、次のようにするだけです。

  • https://eggerapps.at/postico/download/
  • ダウンロードした Zip ファイルを Finder でダブルクリック
  • 解凍した Postico.app ファイルを Applications フォルダにドラッグ
  • Launchpad で Postico を見つけ、アプリを起動します。

以下のような画面が表示されます(データベース接続が設定されていない状態):

postgresql server
Postico

ローカルのデータベースに接続します。

  • 「New Favorite」をクリック
  • 覚えやすい名前をつけてください
  • ボックスに入力されているデフォルト値のままで構いません
  • 上記でpostgresユーザーのパスワードを変更した場合は、パスワードボックスに入力してください。
  • Optionsをドロップダウンして「すべてのデータベースを表示」を選択してください。

postgresql server
Posticoの新しいお気に入り

  • 「Done」をクリックして保存します
  • そして「Connect」ボタンをクリックします
  • これで完了です!

postgresql server
Postico connected

Posticoの素晴らしい機能の使い方については、Posticoドキュメントをお読みください!

2. pgAdmin (https://www.pgadmin.org/)

pgAdmin は Postgres GUI の中で最も古く、1996 年に Postgre が最初にリリースされてからわずか数ヶ月後に最初のバージョンがリリースされました。 何度か書き直された後、Linux、MacOSX、Windows上で動作し、シンタックスハイライト付きのSQLエディタを含む強力なデータベース管理ツールを備えています。

pgAdmin を使い始めるには、以下の手順に従います。

  • ダウンロードは https://www.pgadmin.org/download/macos4.php
  • ダウンロードフォルダにあるダウンロードしたディスクイメージ (DMG) ファイルをダブルクリックします
  • pgAdmin 4 アプリをアプリケーションフォルダにドラッグします
  • Launchpad で pgAdmin を見つけ、アプリを起動します。

以下のような画面が表示されます:

postgresql server
pgAdmin

ローカルのデータベースに接続するには、次のようにします。

  • 「サーバー」を右クリックし、「Create => Server」を選択
  • 覚えやすい名前をつけ、「Connect Now」のチェックを外します
  • サーバーのアドレスには。 localhost
  • 各ボックスに入力されているデフォルト値のままで構いません
  • 上記のpostgresユーザーパスワードを変更した場合、パスワードボックスに入力してください。

postgresql server
Posticoの新しいお気に入り

  • 「保存」をクリックして保存します
  • 新しいサーバーがサーバーのリストに表示されます
  • 新しいサーバーをクリックして、もう一度パスワードを入力して接続します
  • これで完了です!

postgresql server
pgAdmin connected

Posticoの素晴らしい機能の使い方については、pgAdmin Documentationをお読みください!

3.Navicat (https://www.navicat.com/products/navicat-for-postgresql)

Navicat は間違いなく、PostgreSQL 用の最高のエンタープライズ レベルの管理 GUI の 1 つです。 SQLエディタやデータベース、テーブル、行の表示・管理機能だけでなく、データベーススキーマをグラフィカルに設計・デバッグできるデータモデラーも備えています。

Navicatを使い始めるには、以下の手順に従ってください:

  • ダウンロードはhttps://www.navicat.com/download/navicat-for-postgresql
  • ダウンロードしたディスク イメージ (navicat112pgsqlen.
  • ダウンロードしたディスクイメージ(navicat112pgsqlen.dmg)ファイルをダウンロードフォルダでダブルクリック
  • Navicatアプリをアプリケーションフォルダにドラッグ
  • LaunchpadでNavicatを見つけ、アプリを起動。

以下のような画面が表示されます:

postgresql server
Navicat

ローカルのデータベースに接続するには、以下の手順に従います。

  • 「Connection」をクリック
  • 提供されたダイアログに、上記と同じ情報を入力
  • 「Ok」をクリックして接続を保存。
  • 左のリストに表示された新しい接続をダブルクリックすると、接続が完了します。 以上です!

postgresql server
Navicat connect

Posticoの素晴らしい機能の使い方については、Navicatオンラインマニュアルをお読みください!

V. Summary

PostgreSQLは、個人、中小企業、大企業を問わず使用されている、世界でもトップレベルのリレーショナルデータベースです。 その高いパフォーマンスと強力な機能セットにもかかわらず、驚くほど簡単に使い始めることができます。

  • Homebrewを使ってMacOSXにPostgreSQLサーバーをインストールする
  • Postgresコマンドラインツールを使ってPostgresを設定する。
    • psql コマンドラインツールを使用して、データベースに関する情報を表示する
    • psqlcreateuser を使用して、新しいユーザーを作成する
    • ユーザーのパスワードを変更する
    • データベースを作成する。 psqlcreatedb
    • データベース名の変更
    • データベースへのアクセス許可を特定のユーザーに与える

ここでは、GUIベースのPostgres管理ツールとして人気の高いベースの管理ツールを簡単に見てきました。 Postico、pgAdmin、Navicatなどです。

幸運を祈ります。 Have fun Postgres-ing!

VI. 参考文献

PostgreSQLホームページ
PostgreSQLドキュメント

  • クライアントアプリケーションの全リスト
  • createuserのドキュメント。
  • Documentation for createdb
  • Documentation for CREATE ROLE
  • Documentation for ALTER ROLEli
  • CREATE DATABASE
  • ALTER DATABASE
  • GRANT のためのDocumentation

一般的な Postgres GUI クライアント

  • Postico ドキュメント
  • pgAdmin ドキュメント
  • Navicat オンラインマニュアル

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です