PostGISなデータベースを使えるようにする

2009/09/03 | PostgreSQL

Windowsな環境で試しているときは、所詮ローカルな環境だからユーザとか気にせずテストしていたけれど、さすがに外部公開するサーバではまずいので、ユーザを追加して使用することになる。ユーザの追加はpostgresユーザになって「createuser -P」。あとpg_hba.confでPostgreSQLへの接続設定。ここまでは一般的なことで、別にPostGISに限った話ではない(いや、結局全てPostGISに限ったことではないのだけれど)。

で、早速新しいユーザでデータベースを作ろうとしてみた。コマンドは-Tオプションで新しく作ったテンプレートデータベースを指定する。しかしエラーで作ることができない。

createdb: database creation failed: ERROR:  permission denied to copy database “template_postgis”

どうやらtemplate_postgisへのアクセス権がないからだめだ、といわれているらしい。そこでtemplate_postgisのアクセス権について考えることにした。まず、データベースの状態を知るために、postgresユーザになって以下のコマンドを実行。

SELECT * FROM pg_database;

これでデータベースの状態(?)を見ることができるのだが、デフォルトのデータベーステンプレートであるtemplate1と比較してみた。その中でdatistemplateなるカラムがあり、そこが違うようだ。読んで字のごとく「データがテンプレートか否か」ということらしい。これをtureにしてやればよさそうなので、以下のコマンドを発行。

update pg_database set datistemplate=true where datname=’template_postgis’

これで多分テンプレート化できた(と思う)。その後、元のユーザになってデータベースを作成したところ、問題なく作成できた。ほっとして、データベースの中身を確認し、二つのテーブルが作成されていたので「よしよし」と思い、いちおうテーブルの中身を確認しようとselect文を発行しようとしたところまたエラー。どうやらデータベースのテンプレート可はできたものの、中身のテーブルのオーナーはpostgresのままらしい。データベース作成時にデフォルトで中のテーブルのオーナーも設定してくれる方法がわからない。しかたないので、postgresユーザになってデータベースにログインし、grantコマンドで新ユーザにフルアクセスで権限を与えた。

これでようやく新ユーザでPostGISなデータベースを使えるようになった(はず)。ためしにデータベースにログインして「SELECT postgis_version();」コマンドを発行したら、ちゃんと応答を返してくれた。

postgis_version
—————————————
1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)

なんとか動いてるみたい。やっとスタートラインに立てた(かも)。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net