PostgreSQLの設定

カテゴリ:データベース

PostgreSQL の初期設定

PostgreSQLをインストールしたら、初回のみ以下のコマンドを実行し、初期化します。
# service postgresql initdb
データベースを初期化中:                                    [  OK  ]

PostgreSQLを起動

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

データベースに接続

初期設定ではログイン方式はident認証が設定されており、OSのログインユーザーとPostgreSQLのユーザーがマップされており、また初期設定ではPostgreSQLのスーパーユーザー「postgres」が作成されているため、ログインユーザーを切り替えます。
※パスワード認証に変更する方法は後述します。
# su - postgres
psqlコマンドで接続します。
$ psql
psql (8.4.20)
"help" でヘルプを表示します.

postgres=#
※「postgres=#」が表示されれば接続成功です。

ユーザーの作成

「hoge」ユーザーをパスワード付きで作成する場合は以下のコマンドを実行します。
postgres=# CREATE USER hoge WITH PASSWORD 'pass';
CREATE ROLE

ユーザーのパスワードを変更

「postgres」ユーザーにパスワードを設定しておきます。
パスワードを変更する場合は、以下のコマンドを実行します。
postgres=# ALTER USER postgres WITH PASSWORD 'pass';
ALTER ROLE

データベースの作成

以下のコマンドで「hoge」ユーザーが所有者の「hoge_db」データベースを作成します。
postgres=# CREATE DATABASE hoge_db OWNER hoge;
CREATE DATABASE

データベースの一覧を表示

以下のコマンドでデータベースの一覧が表示されます。
作成した「hoge_db」が作成されていることが確認できます。
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
hoge_db   | hoge     | 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 rows)

アクセス制御

ちなみに、初期設定ではパスワード認証での接続は無効になっています。
# psql -U hoge -h 127.0.0.1 -d hoge_db
psql: FATAL:  ユーザ"hoge"のIdent認証に失敗しました
これは、/var/lib/pgsql/data/pg_hba.conf ファイルで local からのident認証(OSのログインユーザーとPostgreSQLのユーザーをマップさせる)のみが許可されているためです。
# tail /var/lib/pgsql/data/pg_hba.conf


# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               ident
パスワード認証を許可するためには、以下のようにMETHODを「password」に変更します。
# tail /var/lib/pgsql/data/pg_hba.conf

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          password
# IPv6 local connections:
host    all         all         ::1/128               password
設定を反映するためにPostgreSQLを再起動します。
# service postgresql restart
postgresql サービスを停止中:                               [  OK  ]
postgresql サービスを開始中:                               [  OK  ]
パスワード認証で接続できることを確認します。
# psql -U hoge -h 127.0.0.1 -d hoge_db
ユーザ hoge のパスワード:
psql (8.4.20)
"help" でヘルプを表示します.

hoge_db=>
もしスーパーユーザー権限で操作したい場合は、postgresユーザーに切り替えてpsqlコマンドを実行しなくても、以下のようにパスワード認証でログインする事ができます。
※先にpostgresユーザーのパスワードを設定しておく必要があります。
# psql -U postgres -h 127.0.0.1
ユーザ postgres のパスワード:
psql (8.4.20)
"help" でヘルプを表示します.

postgres=#
※JavaやPHPなどのWebアプリケーションから127.0.0.1のデータベースにパスワード認証で接続する場合は、この設定は必須になります。

PostgreSQLを自動起動に設定

OS起動時にPostgreSQLが自動起動するように設定します。
# chkconfig postgresql on
CentOS 7 以降の場合:
# systemctl enable postgresql

公開日時: 2014年08月09日  15:26:15

データベースに戻る

「データベース」に関するTips

このページのトップに戻る