FreeBSD - PostgreSQL-contribの導入・利用

postgreSQL-contribを導入します。
これを導入することにより、例えばパスワードの暗号化関数(crypt)などが
SQLで利用できる様になります。

対象OS、バージョン

  • FreeBSD-5.3
  • postgresql-contrib-7.4.6

導入

make install

rootで以下を実行します。
# cd /usr/ports/databases/postgresql-contrib
# make install clean
これで、/usr/local/share/postgresql/contrib/にいろんなSQLが配置されます。

template1データベースへの導入

インストールされたSQL(/usr/local/share/postgresql/contrib/*.sql)をtemplate1データベース上で実行します。
試しに、/usr/local/share/postgresql/contrib/pgcrypto.sqlを実行してみます。
これにより、crypt()関数やgen_salt()関数がSQLから使える様になります。
# psql -U pgsql template1
# \i /usr/local/share/postgresql/contrib/pgcrypto.sql
# \q
これで、template1データベースにpgcrypto関数群が登録されました。
これ以降、新しく作成されるデータベースにはpgcrypto関数群が含まれて作成されます。

既存のデータベースへの導入

すでに作成されているデータベースにpgcrypto.sqlを追加する場合、
同様に
# psql -U owneName DbName
# \i /usr/local/share/postgresql/contrib/pgcrypto.sql
とすれば導入されるが、データベースのオーナーがpgsql以外の場合、
SET
psql:/usr/local/share/postgresql/contrib/pgcrypto.sql:7: ERROR:  .....
とエラーがでてしまう。
なので、
# psql -U pgsql DbName
# \i /usr/local/share/postgresql/contrib/pgcrypto.sql
とpgsqlユーザで対象のデータベースにログインして実行すればよい。
まあ、権限をあたえればいいのだろう(GRANT ..)けど、よくわからないので・・・。

pgcryptの利用

# psql -u pgsql template1
template1=> select crypt('abc',pg_sal('MD5'));
               crypt
------------------------------------
$1$szzz575.$HBOPr/8QtjJLztniSLfDG/
(1 row)
の様にパスワード 'abc' の暗号化ができました。