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のインストールです。
- BigSQLやPostgres.appのようなグラフィカルなインストーラーを使用する方法
- パッケージマネージャを使用してコマンドラインからインストールする方法
自分に合った方法を選択してください。 このチュートリアルでは、コマンドラインでインストールする方法を見てみましょう。
1. Homebrewの入手
PostgreSQLをコマンドラインでインストールするには、Homebrewと呼ばれるパッケージマネージャーを使用します。 Homebrewがすでにインストールされている場合は、PostgreSQLのインストールにスキップできます。
まず、次のコマンドをコマンド ラインにコピー アンド ペーストします。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
このコマンドが何をするのかは気にしないでください。 このコマンドの残りの部分(curl
コマンド)は、コマンドラインからWebリクエストを行うためのツールです。 これは、与えられたURLでスクリプトをダウンロードし、Rubyインタープリタがそれを実行します。 以下のような出力が表示されるはずです:
Homebrewのインストール
Homebrewができたので、Postgresのインストールに進みましょう!
2. Postgresのインストール
Homebrewができたので、PostgreSQLのインストールはとても簡単です。 Homebrew を使用して PostgreSQL をインストールするには、次のコマンドを実行してください:
brew install postgresql
次のような出力が表示されます:
*Installing *
Homebrew は Postgres の依存関係の解決を行います。 また、どのバージョンが最新なのか、どこで入手できるのか、どうやって解凍するのか、といったことも気にかけてくれます。
Starting Services
先に Postgres の実行を開始し、コンピュータが起動するたびに Postgres が起動するようにしましょう。 以下のコマンドを実行してください:
pg_ctl -D /usr/local/var/postgres start && brew services start postgresql
最後に、Postgresがインストールされ、実行されていることを確認しましょう。
postgres -V
あなたの出力は以下のようになるはずです:
Postgres Installed
以上です! Postgresがインストールされましたね。
3. Postgresの設定
Postgresは、あなたが何もしなくても、箱から出してすぐに使えるようにかなり努力しています。 デフォルトでは、ユーザー postgres
psql
ユーティリティを使用してみましょう。これはPostgresと共にインストールされるユーティリティで、実際のSQLコマンドを知らなくても管理機能を実行することができます。
まず、コマンドラインに次のように入力します。
psql postgres
(システムの構成によっては、このコマンドを動作させるために sudo psql postgres
を使用する必要があるかもしれません)。
以下のような出力が表示されます:
psql output
以上がpsql
のコマンドラインです。 これで、どのユーザーがインストールされているかを確認するためのコマンドを入力することができます:
postgres=# \du
表向きは、このコマンドはデータベース内のすべてのユーザーを取得する SQL クエリ (これについては後で説明します) を実行します。
psql User List
先ほどの Postgres ユーザーはわかりましたが、もう一人のユーザー engineerapart
は何でしょうか? これは、Postgresを最初にインストールしたときに、あなたの生活を楽にするために行っていることの1つです。 ほとんどのLinuxベースのオペレーティングシステムでは、すべてのプロセスでデフォルトで使用されるユーザ名は、あなたがログインしているユーザ名です。 ほとんどのプログラムにユーザ名を渡す必要はありません。 しかし、Postgres のような特定のプログラムにユーザー名が設定されていないと、失敗してしまいます!
そのため、Postgres がインストールされると、ユーザー名に一致するデータベース ユーザーが自動的に作成され、すぐに開始できるようになります。
Postgres が一連のデフォルト ユーザーを設定してくれるのは確かに便利ですが、ローカル開発以外に使用するのは非常に悪い考えです。なぜなら、これらのユーザーは非常に広く知られており、さらに重要なことに、スーパー ユーザー アカウントであるため、データベースの削除を含め、何でもできるからです。 これでは本番用のデータベースとしては安全ではなく、限られた権限のユーザーが必要です。 では、どのようにして新しいユーザー(ロール)を作成し、使用すればよいのでしょうか?
これには主に2つの方法があります。
- データベース上で
CREATE ROLE
SQL クエリを直接実行する - Postgres にインストールされている
createuser
CREATE ROLE
を実行するための単なるラッパーです)。
両方のケースを見てみましょう。
A.1. CREATE ROLE
with psql
CREATE ROLE
の基本的な構文は次のようになります。
CREATE ROLE username WITH LOGIN PASSWORD 'quoted password'
username
は作成したいユーザーで、パスワードは最後に引用符で囲みます。 オプションについては後ほど説明します。
まずは、便利なpsql
ツールに再度ログインしてみましょう。
psql output
ついでに、デフォルトのpostgres
アカウントにパスワードを設定してみましょう(デフォルトではパスワードはありません)。
postgres=# \password postgres
パスワードを入力して確認するプロンプトが表示されます。 それでは、新しいロールを作成してみましょう:
postgres=# CREATE ROLE patrick WITH LOGIN PASSWORD 'Getting started'; postgres=# \du
出力は次のようになります:
psql CREATE ROLE
お待ちください。 ユーザー patrick
の属性リストは完全に空です。 なぜでしょう?
これはPostgresがデフォルトを安全に管理する方法です。 このユーザは、自分が権限を持っているデータベース、テーブル、または行を読むことはできますが、それ以外のことはできません。つまり、データベースを作成したり管理したりすることはできず、管理者権限もありません。 これは良いことです。 データベースを安全に保つことができます。
では、新しいユーザーに CREATEDB
権限を追加して、データベースを作成できるようにしましょう
postgres=# ALTER ROLE patrick CREATEDB; postgres=# \du postgres=# \q # quits
出力は次のようになります。
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: これは認識しています!
クライアント アプリケーションの全リスト
では、createuser
patrick
ユーザーを作成します。
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
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
psql CREATE DATABASE
そして、これで完成です。
これで、super_awesome_application
patrick
というユーザーで、データの作成、読み取り、更新、削除ができるようになりました!
B.2. createdb
ユーティリティ
上記のように、createdb
を使用してデータベースを作成する方が簡単ですが、作成後にデータベースを管理することができないという注意点があります。
createdb super_awesome_application -U patrick
ここでは、createdb
patrick
ユーザーを渡しています。
データベースを作成した後に変更したいと思うことは非常に稀です。 変更できるのは、名前といくつかの構成パラメータだけです。 構成パラメータ (照合順序や文字セットなど) の変更は、このチュートリアルの範囲外の意味を持ちます。
繰り返しになりますが、作成されたデータベースを変更するコマンド ライン ツールはありません。
psql
:
psql postgres -U patrick postgres=> ALTER DATABASE super_awesome_application RENAME TO even_more_awesome_application; postgres=> \q
そして、出力は以下のようになります。
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 を見つけ、アプリを起動します。
以下のような画面が表示されます(データベース接続が設定されていない状態):
Postico
ローカルのデータベースに接続します。
- 「New Favorite」をクリック
- 覚えやすい名前をつけてください
- ボックスに入力されているデフォルト値のままで構いません
- 上記で
postgres
ユーザーのパスワードを変更した場合は、パスワードボックスに入力してください。 -
Options
をドロップダウンして「すべてのデータベースを表示」を選択してください。
Posticoの新しいお気に入り
- 「Done」をクリックして保存します
- そして「Connect」ボタンをクリックします
- これで完了です!
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 を見つけ、アプリを起動します。
以下のような画面が表示されます:
pgAdmin
ローカルのデータベースに接続するには、次のようにします。
- 「サーバー」を右クリックし、「Create => Server」を選択
- 覚えやすい名前をつけ、「Connect Now」のチェックを外します
- サーバーのアドレスには。
localhost
- 各ボックスに入力されているデフォルト値のままで構いません
- 上記の
postgres
ユーザーパスワードを変更した場合、パスワードボックスに入力してください。
Posticoの新しいお気に入り
- 「保存」をクリックして保存します
- 新しいサーバーがサーバーのリストに表示されます
- 新しいサーバーをクリックして、もう一度パスワードを入力して接続します
- これで完了です!
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を見つけ、アプリを起動。
以下のような画面が表示されます:
Navicat
ローカルのデータベースに接続するには、以下の手順に従います。
- 「Connection」をクリック
- 提供されたダイアログに、上記と同じ情報を入力
- 「Ok」をクリックして接続を保存。
- 左のリストに表示された新しい接続をダブルクリックすると、接続が完了します。 以上です!
Navicat connect
Posticoの素晴らしい機能の使い方については、Navicatオンラインマニュアルをお読みください!
V. Summary
PostgreSQLは、個人、中小企業、大企業を問わず使用されている、世界でもトップレベルのリレーショナルデータベースです。 その高いパフォーマンスと強力な機能セットにもかかわらず、驚くほど簡単に使い始めることができます。
- Homebrewを使ってMacOSXにPostgreSQLサーバーをインストールする
- Postgresコマンドラインツールを使ってPostgresを設定する。
-
psql
コマンドラインツールを使用して、データベースに関する情報を表示する -
psql
createuser
を使用して、新しいユーザーを作成する - ユーザーのパスワードを変更する
- データベースを作成する。
psql
createdb
- データベース名の変更
- データベースへのアクセス許可を特定のユーザーに与える
-
ここでは、GUIベースのPostgres管理ツールとして人気の高いベースの管理ツールを簡単に見てきました。 Postico、pgAdmin、Navicatなどです。
幸運を祈ります。 Have fun Postgres-ing!
VI. 参考文献
PostgreSQLホームページ
PostgreSQLドキュメント
- クライアントアプリケーションの全リスト
-
createuser
のドキュメント。 - Documentation for
createdb
- Documentation for
CREATE ROLE
- Documentation for
ALTER ROLE
li -
CREATE DATABASE
-
ALTER DATABASE
-
GRANT
のためのDocumentation
一般的な Postgres GUI クライアント
- Postico ドキュメント
- pgAdmin ドキュメント
- Navicat オンラインマニュアル