CentOS で PostgreSQL を使ってみよう!(2)

CentOS で PostgreSQL を使ってみよう!(2)

(3) インストールの確認

インストールしてどんなファイルができたのか?などを確認します。

 

  1. 『postgres』というアカウント が作成されていることを、「id」コマンドや「finger」コマンドで確認します。(各種 ID やホームディレクトリは、以下の例と異なる可能性があります。)
    [root @server1 ~]# id postgres
    uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres)
    
    [root @server1 ~]# finger postgres
    Login: postgres                         Name: PostgreSQL Server
    Directory: /var/lib/pgsql               Shell: /bin/bash
    Never logged in.
    No mail.
    No Plan.
    
  2. 「/usr/」にインストールされ、さまざまなファイルができていることを確認します。たとえば、以下のようにコマンドが存在するかを見てみます。
    [root @server1 ~]# which psql
    /usr/bin/psql
    
  3. サービスに登録されていることを確認します。「/etc/init.d/」に「postgresql」という PostgreSQL の起動・停止を行なうスクリプトが追加されています。
    [root @server1 ~]# ls /etc/init.d/
    pand        pcscd       portmap     postfix     postgresql  proftpd     psacct
    
  4. OS を起動したときに PostgreSQL も起動するように設定します。設定は「chkconfig」コマンド で行ないます。「on」で OS 起動時に起動するようにし、「--list」で状態を確認します。
    [root @server1 ~]# chkconfig postgresql on
    [root @server1 ~]# chkconfig --list postgresql
    postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
    

 

3. PostgreSQL を使ってみる

 

では、いよいよ実際に PostgreSQL を使ってみます。

使ってみる前に、PostgreSQL を使うためのアカウントを、自動的に作成された『postgres』以外にも作成しておきます。 Linux 上のアカウントを作成するには、「useradd」コマンドを実行します。

例では、『anzai』というアカウントを作成してこれを使っていきます。

[root @server1 ~]# useradd anzai

 

  1. 「service」コマンド で postgresql サービスを起動します。「/etc/init.d/postgresql start」と実行するのと同じです。
    [root @server1 ~]# service postgresql start
    postgresql サービスを開始中:                              [  OK  ]

    初めて起動したときは、データベースクラスタの初期化(initdb) が行なわれます。これは、データベースを使うために必要なディレクトリ構成を作る処理で、「/var/lib/pgsql/data/」に作成されます。

    [root @server1 ~]# service postgresql start
    データベースを初期化中:                                    [  OK  ]
    postgresql サービスを開始中:                              [  OK  ]
    
  2. 以降は「postgres」アカウントで操作するため、「su」コマンドでユーザを変えます。
    [root @server1 ~]# su - postgres
  3. PostgreSQL に接続する「psql」コマンド を使って、データベースの一覧を表示してみます。一覧は「-l」オプションで表示することができます。

     

    「-U」オプション で、コマンドを実行する PostgreSQL 上のユーザを指定できます。(省略すると、ログインしているアカウントと同じ名前のユーザで接続して実行しようとします。)
    -bash-3.1$ psql -l
          List of databases
       Name    |  Owner  | Encoding 
    -----------+---------+----------
     postgres  | posgres | UTF8
     template0 | posgres | UTF8
     template1 | posgres | UTF8
    (3 rows)

    なお、初期化直後でまだ何も使っていない状態でも、上の実行例のとおり 3 つのデータベースが存在します。ただし 8.0 以前のバージョンの PostgreSQL では、「postgres」データベースがありません。

  4. 「createuser」コマンド で、ユーザ(ロール)を作成します。ここでは、データベースを作成できるような権限を与えています。
    -bash-3.1$ createuser anzai
    Shall the new role be a superuser? (y/n) n
    Shall the new role be allowed to create databases? (y/n) y 
    Shall the new role be allowed to create more new roles? (y/n) n
    
  5. 「createdb」コマンド で、データベースを作成します。ここでは、上で追加したユーザ(ロール)でデータベースを作成します。(チュートリアル 1.3 「データベースの作成」
    -bash-3.1$ createdb mydb -U anzai
    createdb: could not connect to database postgres: 
    FATAL:  Ident authentication failed for user "anzai"

    ところが、コマンドを実行すると、"FATAL" というレベルのエラー になってしまい、データベースが作成できません。

    メッセージには「Ident 認証に失敗した」と、原因が書いてあります。この Ident 認証とは、Linux 上のアカウントと PostgreSQL のアカウントが一致しないとエラーにする、という設定で、あらかじめ設定されているものです。

    ということで、「su - postgres」を終わって root に戻るため「exit」コマンドを実行し、root で「su」コマンドを実行して、先ほど作成したアカウントになります。

    -bash-3.1$ exit
    [root @server1 ~]# su - anzai

    そして、そのアカウントで「createdb」コマンドを実行します。

    ※ 今度は、Linux 上のアカウントと PostgreSQL 上のユーザが一致しているにので、「-U」オプション はつけなくても構いません。
    [anzai @server1 ~]$ createdb mydb
    CREATE DATABASE

    今度は作成できました。また「psql -l」コマンドでデータベースの一覧を見てみると、「mydb」という新しいデータベースが作成できていることが確認できます。

    [anzai @server1 ~]$ psql -l
          List of databases
       Name    |  Owner  | Encoding 
    -----------+---------+----------
     mydb      | anzai   | UTF8
     postgres  | posgres | UTF8
     template0 | posgres | UTF8
     template1 | posgres | UTF8
    (4 rows)
  6. 「psql」コマンド で、作成したデータベースに接続します。(チュートリアル 1.4 「データベースへのアクセス」
    [anzai @server1 ~]$ psql mydb
    Welcome to psql 8.1.4, 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
    
    mydb=>

これにて、チュートリアル を実施できる環境がととのいました。ここまでがチュートリアルの第 1 章ですので、第 2 章以降にお進みいただけます。


(2009年5月11日公開)

(3) では、ログなどの高度な設定や、CentOS で使うにあたっての注意点をご紹介します!