Top > Movable Type > PostgreSQL [全て閉じる]
2011年4月18日

PostgreSQLの初期化からデータベース接続まで

April 18,2011 1:55 AM
Tag:[, ]
Permalink

サーバにインストールされているPostgreSQLを使って、データベースの初期化から接続まで行ってみました。いくつかつまづいた箇所があったので情報展開しておきます。OSはFedora 8です。

1.サービスの起動(失敗)

サービスの起動は

# /etc/init.d/postgresql start

または

# service postgresql start

ですが、次のメッセージが表示されました。

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

PostgreSQLの初期化ができていないようです。/var/lib/pgsql/data配下を参照すると、

# ll /var/lib/pgsql/data
drwx------ 2 postgres postgres 4096 2007-09-21 05:30 ./
drwx------ 4 postgres postgres 4096 2011-04-13 17:05 ../

何も入っていませんでした。ということで初期化を行います。

2.サービス初期化

初期化はservice postgresql initdbを投入します。

# service postgresql initdb
#  データベースを初期化中:                                    [  OK  ]

成功しました。/var/lib/pgsql/data配下を参照すると色々入っています。

# ll /var/lib/pgsql/data
合計 64
-rw------- 1 postgres postgres     4 2011-04-13 17:12 PG_VERSION
drwx------ 5 postgres postgres  4096 2011-04-13 17:12 base
drwx------ 2 postgres postgres  4096 2011-04-13 17:12 global
drwx------ 2 postgres postgres  4096 2011-04-13 17:12 pg_clog
-rw------- 1 postgres postgres  3200 2011-04-13 17:12 pg_hba.conf
-rw------- 1 postgres postgres  1460 2011-04-13 17:12 pg_ident.conf
drwx------ 2 postgres postgres  4096 2011-04-13 17:12 pg_log
drwx------ 4 postgres postgres  4096 2011-04-13 17:12 pg_multixact
drwx------ 2 postgres postgres  4096 2011-04-13 17:12 pg_subtrans
drwx------ 2 postgres postgres  4096 2011-04-13 17:12 pg_tblspc
drwx------ 2 postgres postgres  4096 2011-04-13 17:12 pg_twophase
drwx------ 3 postgres postgres  4096 2011-04-13 17:12 pg_xlog
-rw------- 1 postgres postgres 15336 2011-04-13 17:12 postgresql.conf

3.サービス起動

この状態で再度サービス起動を実施します。

# service postgresql start
postgresql サービスを開始中:                               [  OK  ]

起動しました。

4.ユーザーの作成

データベースにアクセスするユーザーmtuserを、createuserコマンドで作成します。作成にあたっては、自動的に作成されているpostgresというアカウントでログインして行いました。オプションの意味は次の通りです。

  • -P:新しいユーザのパスワードのプロンプトを表示
  • -no-adduser:新しいユーザが他のユーザを作成することを禁止
  • --no-createdb:新しいユーザがデータベースの作成を禁止
  • --no-createrole:新しいユーザがロールの作成を禁止
# su - postgres
$ createuser -P --no-adduser --no-createdb --no-createrole mtuser
Enter password for new role:
Enter it again:
CREATE ROLE

無事に作成されました。

5.データベースの作成

データベースhogeを作成します。「-owner mtuser」は、新しいデータベースの所有者となるデータベースユーザmtuserの指定です。

-bash-3.2$ createdb --owner mtuser hoge
CREATE DATABASE

作成されました。

ちなみに、データベースを削除する場合はdropdbを投入します。

-bash-3.2$ dropdb hoge
DROP DATABASE

6.データベースへの接続(失敗)

データベースとデータベースのユーザ・パスワードを設定したので、ここではMovable Typeのインストール画面から接続を試みたのですが、次のようなエラーが発生しました。

データベースに接続できませんでした。設定を見直してもう一度接続してください。

実際の画面
データベース接続エラー

メッセージ右側にある「詳細」のリンクをクリックすると次のようなエラーでした。

Connection error: FATAL: Ident authentication failed for user "mtuser" at /var/www/cgi-bin/knowhow/extlib/Data/ObjectDriver/Driver/BaseCache.pm line 320 at /var/www/cgi-bin/knowhow/extlib/Data/ObjectDriver/Driver/BaseCache.pm line 320 at /var/www/cgi-bin/knowhow/extlib/Data/ObjectDriver/Driver/BaseCache.pm line 320

実際の画面
エラー詳細

7.pg_hba.confの修正

エラーメッセージでネット検索すると、「/var/lib/pgsql/data/pg_hba.confにあるhostの「ident sameuser」を「trust」に修正すれば良い」という情報がありましたので、次のように修正しました。「ident sameuser」はアクセスしたユーザとDBユーザが同じ名前でIDENT認証し一致したら接続。「trust」はアクセスしたユーザとDBユーザが異なっても全て許可して接続、という意味のようです。

変更前

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 
# "local" is for Unix domain socket connections only
local   all         all                               ident sameuser
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident sameuser
# IPv6 local connections:
host    all         all         ::1/128               ident sameuser

変更後

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident sameuser
# IPv6 local connections:
host    all         all         ::1/128               ident sameuser

修正後、サービスを再起動します。

# service postgresql restart
postgresql サービスを停止中:                               [  OK  ]
postgresql サービスを開始中:                               [  OK  ]

8.データベースへの再接続(失敗)

この状態で再度Movable Typeから接続を試みましたが、結局接続できませんでした。ちなみに以下のコマンドは成功します。psqlはコマンドラインでの対話型ツールです。

-bash-3.2$ psql hoge -U mtuser
Welcome to psql 8.2.5, the PostgreSQL interactive terminal.
 
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

9.pg_hba.confの再修正

もう少し調べてみると、先程修正したファイルpg_hba.confの「host」も修正しないといけないという説明をみつけたので、さらに修正しました。

変更前

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
  
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident sameuser
# IPv6 local connections:
host    all         all         ::1/128               ident sameuser

変更後

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
 
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               trust

10.データベースへの再々接続

再びサービス再起動して、Movable Typeから接続を試みたところ、成功しました。

データベースへの接続

11.参考サイト

参考サイトは以下です。ありがとうございました。

Comments [0] | Trackbacks [0]
Now loading...
Introduction
List of "PostgreSQL"
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site
loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 5.12