My Photo

« .htaccessの有効化とサブディレクトリのアクセス制御 | Main | PostgreSQLのインストール その2 »

March 23, 2015

PostgreSQLのインストール その1

関連記事:
yumコマンド
PostgreSQLのコマンドラインクライアントpsql

インストール

PHP 5.3.3 のインストールを参考に、パッケージグループでインストールしてみた。
まず、パッケージグループを調べる。

# yum -v grouplist | grep postgres
   PostgreSQL データベースサーバー (postgresql)
   PostgreSQL データベース接続クライアント (postgresql-client)
# yum groupinfo postgresql
読み込んだプラグイン:downloadonly, fastestmirror, refresh-packagekit
グループ処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp

グループ: PostgreSQL データベースサーバー
 説明: PostgreSQL データベースサーバーと関連パッケージ
 強制的なパッケージ:
   postgresql-server
 標準パッケージ:
   postgresql-docs
 オプション パッケージ:
   postgresql-contrib
   postgresql-plperl
   postgresql-plpython
   postgresql-pltcl
   postgresql-test
   rhdb-utils

とりあえずサーバの方のパッケージグループをインストール。

# yum -y groupinstall postgresql
<中略>
依存性を解決しました

================================================================================
 パッケージ               アーキテクチャ
                                        バージョン            リポジトリー
                                                                           容量
================================================================================
インストールしています:
 postgresql-docs          x86_64        8.4.20-1.el6_5        base        6.9 M
 postgresql-server        x86_64        8.4.20-1.el6_5        base        3.4 M
依存性関連でのインストールをします。:
 postgresql               x86_64        8.4.20-1.el6_5        base        2.6 M
 postgresql-libs          x86_64        8.4.20-1.el6_5        base        201 k
<中略>
インストール:
  postgresql-docs.x86_64 0:8.4.20-1.el6_5                                       
  postgresql-server.x86_64 0:8.4.20-1.el6_5                                     

依存性関連をインストールしました:
  postgresql.x86_64 0:8.4.20-1.el6_5   postgresql-libs.x86_64 0:8.4.20-1.el6_5  

完了しました!
# id postgres
uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres)
# which psql
/usr/bin/psql

依存関係からサーバだけでなくクライアント(psql)もインストールされた。
また、postgres というユーザとグループが作成されていた。

サービスの起動

参考ページの「3. PostgreSQL を使ってみる」をやってみた。

まず、Linuxのアカウントを新たに1つ作る。
#意味は考えずに、とりあえず作った。

# useradd pguser

次にサービスを起動しようとしたが、失敗。

# service postgresql start

/var/lib/pgsql/data is missing. Use "service postgresql initdb" to initialize the cluster first.
                                                           [失敗]

エラーメッセージの中に書かれている "service postgresql initdb" を実行してみる。すると、空だった /var/lib/pgsql/data/ ディレクトリの中に設定ファイルなどができていた。
そしてサービスの起動を試みると、今度は成功。

# service postgresql initdb
データベースを初期化中:                                    [  OK  ]
# ls /var/lib/pgsql/
backups  data  pgstartup.log
# ls /var/lib/pgsql/data/
PG_VERSION  pg_clog        pg_log        pg_subtrans  pg_xlog
base        pg_hba.conf    pg_multixact  pg_tblspc    postgresql.conf
global      pg_ident.conf  pg_stat_tmp   pg_twophase
# cat /var/lib/pgsql/data/PG_VERSION 
8.4
# service postgresql start
postgresql サービスを開始中:                               [  OK  ]

ロールとDBの作成

Linuxのアカウントを postgres に切り替えて、"psql -l" でDBを確認。初期状態で postgres, template0, template1 の3つのDBがある。
エンコーディングはデフォルトでUTF-8なんだな。SJISじゃなくてよかった。

# su - postgres
$ psql -l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |    
  アクセス権       
-----------+----------+------------------+-------------+-------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | 
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres
                                                                           : postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres
                                                                           : postgres=CTc/postgres
(3 行)

createuserコマンドでPostgreSQLのロールを作成する。ロールとはユーザーだと思えばいいらしい。
ロールの名前は先ほど作ったLinuxのアカウントと同じ pguser として、データベース作成権限を付与。

$ createuser pguser
新しいロールをスーパーユーザとしますか?  (y/n)n
新しいロールにデータベース作成権限を与えますか? (y/n)y
新しいロールにロールを作成する権限を与えますか? (y/n)n

Linuxのアカウントを pguser に切り替えて、createdbコマンドでDBを新規作成。アカウントを切り替えるのはDBの所有者を pguser にするため。
"psql -l" でDBを確認すると、所有者が pguser の新しいDB mydb ができていた。

$ exit
logout
# su - pguser
$ createdb mydb
$ psql -l
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | Ctype(変換演算子) |    
  アクセス権       
-----------+----------+------------------+-------------+-------------------+-----------------------
 mydb      | pguser   | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | 
 postgres  | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | 
 template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres
                                                                           : postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres
                                                                           : postgres=CTc/postgres
(4 行)

pguserのままで psql から mydb に接続できた。アカウントが postgres でも接続できたが、root できなかった。

$ psql mydb
psql (8.4.20)
"help" でヘルプを表示します.

mydb=> \du
                ロール一覧
 ロール名 |        属性        | メンバー 
----------+--------------------+----------
 pguser   | DBを作成できる     | {}
 postgres | スーパーユーザ     | {}
          : ロールを作成できる   
          : DBを作成できる       

今回、ロールを作る前に同じ名前のユーザーアカウントをLinuxに作った。こういうのをIdent認証というらしい。
Linuxのアカウントと関係なくロールを作る方法もあると思うので、いずれ調べたい。

ログファイルの設定

ログファイルはデフォルトで /var/lib/pgsql/data/pg_log ディレクトリに
postgresql-<3文字の曜日>.log
という形式のファイル名に記録される。曜日はPostgreSQLを起動した曜日。また、ログの内容にその事象が発生した日時が記載されない。
#ファイル名といい日時が記載されないことといい、変なデフォルト設定だな。
日時はあったほうが良さそうなので、postgresql.conf を修正。
log_line_prefix という項目が # でコメントアウトされているので、# を削除し、下記のように書き換えた。
それから"service postgresql reload" で設定を再読み込みすると、ログに日時が記録されるようになる。

log_line_prefix = '%t %d[%p-%l]'

参考ページ:
CentOS で PostgreSQL を使ってみよう!(1) - Let's Postgres

« .htaccessの有効化とサブディレクトリのアクセス制御 | Main | PostgreSQLのインストール その2 »

Linux」カテゴリの記事

PostgreSQL」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/61327530

Listed below are links to weblogs that reference PostgreSQLのインストール その1:

« .htaccessの有効化とサブディレクトリのアクセス制御 | Main | PostgreSQLのインストール その2 »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof