2016年12月3日土曜日

【PGConf.asia】PostgreSQLの初期設定

PostgreSQLのインストールができて、initdbが終わると、PostgreSQLサーバーを起動してデータベースとして使い始めることができますが、当たり前にここまではやっておいたほうが良い、といういくつかの初期設定がありますので、ここではそれを紹介します。

  • パラメータ設定(postgresql.conf)
  • 認証設定(pg_hba.conf)
  • ユーザー作成
  • データベース作成
  • (必要に応じて)スキーマ作成

を扱います。

■パラメータ設定
PostgreSQLの動作設定は、すべてpostgresql.confというテキスト形式のパラメータファイルに記載されています。
その中でも、設定しておかないと使えないものがlisten_addressesです。
デフォルトは「loclhost」となっていて、外部からのアクセスを一切受け付けません。
この値を「*」または、自サーバーのIPアドレスを設定します。NICが二つ以上ある場合に「*」はすべてだし、IPを指定していれば、そのIPアドレスに対するアクセスが来た時だけ受け付けます。

 ※ちなみに、インストーラを使った場合はデフォルトからよしなに変更されているようです。

そのほかにも、現代のサーバースペックを考えるとごく小さいデフォルト値が採用されているメモリ関連の設定などがありますので、実用を考えると5個ぐらい見直したほうが良い値があるのですが、「PostgreSQL データベースチューニング」などで検索すると情報がたくさん公開されています。

■認証設定
PostgreSQLは、ユーザーからの接続要求を受け取ると、pg_hba.confというテキスト形式の認証設定に従って接続の許可・拒否を判断します。
このファイルは、接続元のホスト、接続先のデータベース/ユーザー、認証方法の組み合わせで書かれたリストになっており、上から順に評価されることに注意してください。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    demo        kkida          192.168.200.0/24     md5



サービスからPstgreSQLサーバーを再起動して、ここまでの設定を反映します。

■ユーザー作成、データベース作成
PostgreSQLを操作するには、psqlというコマンドラインツール、またはpgAdminというGUIツールで対象のデータベースに接続します。

$ psql -U kkida -p 5432 -d demo

このとき、kkidaユーザーをまだ作成していないので当然接続に失敗します。demoデータベースもありません。
デフォルトでは、postgresユーザーとpostgresデータベースが作られているので、それを指定してアクセスし、自分用のユーザーやデータベースを作成します。(これも、インストーラーを使用した場合は、OSユーザーと同名でDBユーザーが作られている場合があります。)

$ psql -U postgres postgres
postgres=#

または、すでにユーザーがいる場合は、以下のように確認できます。セキュリティ的にゆるゆるな初期の今だからこそできることですが。
$ psql postgres (ユーザー名の入力を省略してログイン)
postgres=# \du
名前 |属性
------+---------------
kkida   |  スーパーユーザ


ここでCREATE ROLEやCREATE DATABASEといったSQLを実行し、任意のユーザー、データベースを作成します。

postgres=# CREATE ROLE kkida SUPERUSER LOGIN;
postgres=# \c postgres kkida
postgres=# CREATE DATABASE demo;
postgres=# \c demo kkida
demo=# \q

これで、初期設定は完了です。
$ psql -U kkida demo
demo=# CREATE TABLE demo (no int , val text);
demo=# INSERT INTO demo VALUES (1,'aaa');
demo=# SELECT * FROM demo;
no     | val
-----+----------
1      | aaa

demo=# \q


0 件のコメント:

コメントを投稿

PostgreSQL11のJITコンパイリングを試す

llvm-postgres 開発中のPostgreSQL11でJIT(Just In Time=実行時)コンパイリングを行い、クエリ性能の高速化を期待する新機能が登場した。 本記事では 構築方法を確認したので紹介。JITコンパイ...