CentOS で PostgreSQL を使ってみよう!(2)
(3) インストールの確認
インストールしてどんなファイルができたのか?などを確認します。
- 『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.
- 「/usr/」にインストールされ、さまざまなファイルができていることを確認します。たとえば、以下のようにコマンドが存在するかを見てみます。
[root @server1 ~]# which psql /usr/bin/psql
- サービスに登録されていることを確認します。「/etc/init.d/」に「postgresql」という PostgreSQL の起動・停止を行なうスクリプトが追加されています。
[root @server1 ~]# ls /etc/init.d/ pand pcscd portmap postfix postgresql proftpd psacct
- 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
- 「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 ]
- 以降は「postgres」アカウントで操作するため、「su」コマンドでユーザを変えます。
[root @server1 ~]# su - postgres
- 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」データベースがありません。
- 「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
- 「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)
- 「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 で使うにあたっての注意点をご紹介します!