このエントリはPostgreSQL Advent Calendar用にPostgreSQLネタです。
とはいえ僕はWebアプリ屋でPostgreSQLが便利だな~と思ってる程度のレベルなので
他の方々のようなコアな話ではないのでご了承くださいませ(´・ω・`)
僕自体Linuxコマンドラインを叩くこと自体嫌いではないのですが、
やっぱり色がついてたりマウスが使えたり、なによりも「便利」なGUIは大好きです。
(psqlとか読みにくくてあんまり好きじゃないです・・・)
MySQLの場合は代表的なもので「phpMyAdmin」がありますが、
ブラウザ用なのでtextareaの入力が不便だったり、そもそPHPをサーバーに入れておかないといけないとか、セキュリティのことを考えると別サーバーにおくかー?とか色々細かいことを考えるとめんどくさくて好きではありません。
(ブラウザ型が好きな人にはごめんなさい。なおPostgreSQLにもphpPgAdminてのあります)
そんな僕はPostgreSQLを好んで使っている理由のひとつに
『pgAdmin』

というWindows/Mac/Linux系デスクトップで使える無償のネイティブアプリが存在するからです。(※1)(※2)
しかし、このサイト…
英語ONLYだし、どこからダウンロードしたらいいかわからないし、
グーグル様に[pgadmin]と普通に聞いても『pgAdminIII』(※3)という言葉がノイズで混じってきて何が本当の情報かよくわからないし(´・ω・`)
ソフトウェア自体は大体日本語化されてる(多分。ヘルプはされてないですね)ので英語わからないから英語のものには触らない!って人でも大丈夫です。
というわけで前置きが長くなりましたが、今回のトピックは
『pgAdminで簡単にPostgreSQLデータベースを操作するTIP集と参考URL』でっす。
まずはお使いのPCにインストールしましょう。
画面キャプチャを張ろうかと思ったんですが、すでに書いているページがあったので紹介
PostgreSQL用GUI管理ツールpgAdminを入れてみた - プログラマーな日々
上記記事の時点ではPostgreSQLは9.0だったはずで、現在(2011年12月9日時点)ではPostgreSQL自体が9.1なので1.14.2のようです。
なおpgAdminは結構PostgreSQLのバージョンアップにあわせて更新されます。(中の人エロイ)
PostgreSQLの内部コマンドがバージョン違いがあるとダンプできなかったりするので、PostgreSQL本体がバージョンアップしたときはサイトを確認してアップグレードをおススメしますです。
さて、次は接続です。
通常PostgreSQLは外部からの接続を許すために何箇所か本体のconfをいじらないといけません。
しかしクライアントマシンにインストールされたpgAdminを許可しようと思ったら
全てのアドレスからの接続許可を与えるしかありません
(踏み台やVPNという手もあるでしょうけどめんどくさいことはしない方針の場合)
なので僕のおススメの方法はSSHトンネリングで接続です。
SSHトンネルの接続については公式ドキュメントで書かれていますが、
なんのこっちゃいとおもうので、、、
簡単に説明すると

(Do Rubyさんの記事からお借りした画像)
という感じですでに開いているSSHポートを利用して
- データのやり取りを暗号化
- サーバー側の余計なポートは開けないで済む
と一石二鳥なわけです。
「SSHのパスワードログインは危ないじゃないか!」
といえる人はSSH公開鍵認証の設定をしてください。
あとWEBアプリ屋さんならアプリ専用のDBユーザーともうひとつ同じ名前のUNIXログインユーザーを作ることをおススメします(`・ω・´)
さて肝心のSSHポート転送用ですが、大概のサーバーサイドエンジニアならコンソールソフト(puttyとか)入れてると思うのでそれについてると思います。
僕はTera Term(UTF-8対応後継版)を利用しているので
こちらのサイトのように設定していきます。
ただし、PostgreSQLのデフォルトのサーバーポートは5432なので
デフォルトのままなら

こんな感じの設定を入れます。(※4)(※5)
そしてSSHクライアントでデータベースユーザーと同じユーザーでSSH接続後
pgAdminでPostgreSQLサーバーに接続します。
サーバの追加はこんな感じで設定

あとはつなぎたいサーバーをダブルクリックで接続できるはずです!
さて肝心の使い方ですが…
直感的に使えるはずなので説明しなくても大丈夫のはず!!
決してめんどくさくて端折ってるわけでないですよ(遠い目)
まあ使い方だけであと何本か書けると思うんですよ。
多分きっと誰か書いてくれるはず!
(お前書けよという話はスルー)
と、これじゃまずいので使ったことない人用に最初につまずくだろう部分をいくつかピックアップ
- スキーマー宣言を特にしないでいる場合は

データベース→[データベース名]→スキーマー→public
の中に見たいテーブルがあるはずです。
当然スキマー設定してあるテーブルならpublicではなく指定した名前から探してください。 - しかしスキーマーの表示項目でいくつかデフォルトで表示されていない項目があります(自作の集約関数宣言とか。使わない人にはまったく関係ないですが・・)
表示項目の設定は
上部メニューのファイル→オプション タブの「ブラウザ」にあります
あとはとりあえず直感でいけると思うデス(`・ω・´)
他にもこれは便利だなーと思う機能紹介です
- pgAdminでPostgreSQLのテーブル定義書を出力する-プログラマーな日々
テーブルとデータ系の資料を出せといわれたときにコメントがちゃんと書いてあるととっても便利です。
コメント書くのがめんどくさいって思うかもしれませんが…
運用をうまくやればテーブルに一元化されているのはひとつの便利な方法だと思います - クエリーツールからのアナライズ解釈とグラフィカルな表示
普通クエリーの解釈を確認するときはexplain analyzeをSQL文の先頭につけて実行して結果を解析するわけですが…見にくい!(見てるとなれるのですが…)
また解析結果を資料にしにくいものですもあります。
ここで

こんな画面がでるので簡単に偉い人にそれっぽい資料が作れちゃう!( ゚д゚ )
データ出力のタブをみるとexplain analyzeの結果が返ってくるので
わざわざ書く必要もありません。結構調査に便利。
他にも便利な機能ありますが、触っているとすぐみつけられるとおもうのでまず試してみてください!
というわけで『pgAdmin便利だよ!』っていいたかっただけなんです。
今日の記事にコアなこと期待してたらごめんなさい。
たいした内容ではないですがここまで読んでくれた方ありがとうございます。
現在コメント欄を整備していない関係であけていないので
内容に質問・指摘などがある方は@cstyles_jpに連絡いただけたらわかる範囲でお答えします。よろしくお願いします。
明日の担当は
象好き猫好きラーメン好きの@nuko_yokohamaです。
※1 有償なら株式会社スマートスタイルさんが取り扱っているNavicatという各DB対応のGUIソフトウェアがあります
PostgreSQL版を使ったことありますが、pgAdminに近い感じで、なかなか便利でした。
※2 ちなみにMySQLにもMySQL Administratorなるものがあるのですが、直感的に使いにくくてやめました。(Navicatさんのほうが使いやすい)
GUIなのにこの使いにくさならphpMyAdminでいいよって…思ってしまいました。。
※3 インストールされるソフトウェアの名前は『pgAdmin Ⅲ』サイトの名前は『pgAdmin』。
Ⅲがこれまた環境依存文字なのでIII(大文字アイ×3)にふれたり。。
経緯はよくわからないのですが…いっそ全然違う名前にしてくれればよかったのにー(‘A`)
※4 複数サーバーの設定を入れる場合はクライアント側のポート番号をずらして設定すればOKです。もちろんクライアント側が使っていないポート番号で設定してください。
※5 自分のPCにPostgreSQLをインストールしている場合はローカルの5432を普通は使ってると思うので5433とか違う番号を設定しましょう
