[Tips] postgresql の基本メモ

仕事がらみでpostgresqlを久々に触ったらいろいろわからないことだらけで調べる羽目になったので、基本的なことだけど、忘れがちで、かつ良く使いそうなところをメモ。

▼-U username --password で実行して、正しいパスワードを入力しても接続がエラーになる。
表示されたエラーメッセージはこれ「psql: FATAL: ユーザ"username"のIdent認証に失敗しました」。
新しいサーバーにテスト環境を構築しようとしていたところだったのだが、新しいサーバー側の方では、postgresqlのインストールをしただけで、まだ環境設定などが終わっていなかった状態だった。
原因は、postgresql自体の設定。
デフォルトではident認証と言う、ローカルマシンと同じusernameでしか接続できない(postgres で接続するためには、まずはsuコマンドでLinuxユーザーのpostgresになったうえでなければ接続できない)認証方法を使っていたから。
 Apachからプログラム接続したりするには、PHPなどのプログラムが動くユーザーアカウントでpostgresqlユーザーを作るか、認証方式を ident から md5などに変更してやる必要がある。
修正するのは、postgresql の設定ファイルである pg_hba.conf 。
場所はいつもの /etc の下ではなく、$PGDATAの配下とのことで、会社の環境では /var/lib/pgsql/data/ にあった。


あと、psql実行時のコマンド一覧をペースト。 /?で出てくる一覧だけど、 /?自体を忘れそうなので。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一般
\copyright PostgreSQL の使い方と配布条件を表示
\g [ファイル] または ; クエリー実行(し、結果をファイルまたは |パイプ へ書き
す)
\h [名前] SQL コマンドの書式のヘルプ、* で全コマンド
\q psql を終了

クエリーバッファ
\e [ファイル] 現在のクエリーバッファ(やファイル)を外部エディタで編集
\e [関数名] 関数定義を外部エディタで編集
\p クエリーバッファの内容を表示
\r クエリーバッファをリセット(クリア)
\s [ファイル] ヒストリを表示またはファイルに保存
\w ファイル クエリーバッファの内容をファイルに書き出す

入出力
\copy ... クライアントホストに対し、データストリームを使って
SQL コピーを行う
\echo [文字列] 文字列を標準出力に書き出す
\i ファイル ファイルからコマンドを読み込んで実行
\o [ファイル] すべてのクエリーの結果をファイルまたは |パイプ へ送る
\qecho [文字列] 文字列をクエリー出力ストリームに出力(\o を参照)

情報
(修飾子: S = システムオブジェクトを表示 + = 詳細情報)
\d[S+] テーブル、ビュー、シーケンスの一覧を表示
\d[S+] 名前 テーブル、ビュー、シーケンス、インデックスの説明を表示
\da[+] [パターン] 集約関数一覧を表示
\db[+] [パターン] テーブルスペース一覧を表示
\dc[S] [パターン] 変換ルール一覧を表示
\dC [パターン] キャスト一覧を表示
\dd[S] [パターン] オブジェクトのコメントを表示
\dD[S] [パターン] ドメイン一覧を表示
\des[+] [パターン] 外部サーバ一覧を表示
\deu[+] [パターン] ユーザマッピングの一覧を表示
\dew[+] [パターン] 外部データラッパーの一覧を表示
\df[antw][S+] [パターン] 関数(集約/通常/トリガ/ウィンドウのみ)一覧を表示
\dF[+] [パターン] テキスト検索設定一覧を表示
\dFd[+] [パターン] テキスト検索用の辞書一覧を表示
\dFp[+] [パターン] テキスト検索用のパーサ一覧を表示
\dFt[+] [パターン] テキスト検索用のテンプレート一覧を表示
\dg[+] [PATTERN] list roles (groups)
\di[S+] [パターン] インデックスの一覧を表示
\dl ラージオブジェクトの一覧を表示。\lo_list と同じ。
\dn[+] [パターン] スキーマの一覧を表示
\do[S] [名前] 演算子の一覧を表示
\dp [パターン] テーブル、ビュー、シーケンスのアクセス権一覧を表示
\ds[S+] [パターン] シーケンスの一覧を表示
\dt[S+] [パターン] テーブルの一覧を表示
\dT[S+] [パターン] データ型の一覧を表示
\du[+] [PATTERN] list roles (users)
\dv[S+] [パターン] ビューの一覧を表示
\l[+] データベースの一覧を表示
\z [パターン] \dp と同じ

書式設定
\a 'unaligned' および 'aligned' 出力モードのトグル
\C タイトル テーブルのタイトルをセット、指定がなければ解除
\f [文字列] クエリー出力の際に桁揃えを行わない(unaligned)場合に
使用するフィールド区切り文字を表示または指定
\H HTML の出力モードをトグル(現在: オフ)
\pset 名前 [値] テーブル出力のオプション設定
(名前 := {format|border|expanded|fieldsep|footer|null|
numericlocale|recordsep|tuples_only|title|tableattr|pager})
\t [on|off] 行のみ表示する (現在: オフ)
\T [文字列] HTML の <table>タグの属性をセット。引数がなければ解除。
\x [on|off] 拡張出力のトグル(現在: オフ)

接続
\c[onnect] [DB名|- ユーザ名|- ホスト名|- ポート番号|-]
新しいデータベースに接続する (現在: "postgres")
\encoding [エンコーディング]
クライアントのエンコーディングを表示またはセット
\password [USERNAME] ユーザのパスワードを安全に変更する

オペレーティングシステム
\cd [DIR] カレントディレクトリを変更
\timing [on|off] コマンドのタイミングを切り替え(現在: オフ)
\! [コマンド] シェルでコマンドを実行、もしくは会話型シェルを起動

変数
\prompt [テキスト] 変数名 ユーザに内部変数をセットするよう促す
\set [変数名 [値]]
内部変数の値をセット。引数がない場合は一覧表示。
\unset 変数名 内部変数を削除

ラージオブジェクト
\lo_export LOBOID ファイル名
\lo_import ファイル名 [コメント]
\lo_list
\lo_unlink LOBOID ラージオブジェクトの操作

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


最近はNOSQL系のDBも流行っているみたいだけど、まだまだMysqlかPostgresがデファクトスタンダードな気はする。といっても単なる印象論で実際のところどうなんだろ?
DBこれから勉強するなら何がいいのかなぁ~?



PostgreSQL全機能バイブル
技術評論社
鈴木 啓修

amazon.co.jpで買う
Amazonアソシエイト by PostgreSQL全機能バイブル の詳しい情報を見る / ウェブリブログ商品ポータル


この記事へのコメント

この記事へのトラックバック

テーマ別記事