S-JIS[2003-07-19/2012-06-04]
PostgreSQL8〜9のインストールのメモ。[2012-05-07]
|
|
|
CentOSのyumコマンドでpostgresqlをインストールすると、2012/5/7ではPostgreSQL8.1.23がインストールされる。
# yum -y install postgresql-server
これで、psqlコマンド・postgresコマンド(旧postmasterコマンド。postmasterはpostgresへのシンボリックリンクになっている)が使えるようになる。
また、UNIXユーザーのpostgres(グループもpostgres)が作られる。
# su - postgres $ pwd /var/lib/pgsql $ ls backups data
DBのデータの実体は/var/lib/pgsql/dataになる。
PostgreSQL8.1では、JDBCドライバーもyumでダウンロードできる。
# yum -y install postgresql-jdbc
/usr/share/java/にpostgresql-jdbc*.jarが配置される。
いくつかファイルがあるように見えるが、実体は/usr/share/java/postgresql-jdbc-8.1.407.jarで、他は全てそのファイルへのシンボリックリンク。
したがって、実際に使う際はpostgresql-jdbc.jarを指定すればいいだろう。
rootユーザーにて起動する。
# /etc/init.d/postgresql start
データベースを初期化中: [ OK ] ←初回のみ
postgresql サービスを開始中: [ OK ]
CentOSにPostgreSQL8.4をインストールするには、postgresql84をyumで指定すればよい。
# yum search postgresql84
先にPostgreSQL8.1をインストールしていた場合は、事前に削除しておくのが良さそう。
# /etc/init.d/postgresql stop # yum remove postgresql postgresql-server postgresql-libs
# yum -y install postgresql84-server
先にPostgreSQL8.1をインストールしていた場合、PostgreSQLを起動しようとしたときにエラーが出て起動できない。
# /etc/init.d/postgresql start
古いバージョンのデータベースフォーマットが見付かりました。
PostgreSQL を使う前にデータのフォーマットをアップグレードする必要があります。
より詳細な情報は (Your System's documentation directory)/postgresql-8.4.9/README.rpm-dist を見てください。
/var/lib/pgsql/dataが古いバージョンのまま残っているので、このエラーが出る。
したがって、このディレクトリーを消して作り直せばよい。
# su - postgres $ rm -rf data $ exit # service postgresql initdb データベースを初期化中: [ OK ] # /etc/init.d/postgresql start
PostgreSQL8.4のJDBCドライバー(jarファイル)はyumではダウンロードできないので、サイトから自分でダウンロードしてくる必要がある。
CentOSのデフォルトのyumリポジトリーにはPostgreSQL9.0は入っていないので、yumリポジトリーに9.0を追加してインストールする。[2012-06-04]
# cd /tmp # wget http://yum.postgresql.org/9.0/redhat/rhel-5-x86_64/pgdg-centos90-9.0-5.noarch.rpm # rpm -ivh pgdg-centos90-9.0-5.noarch.rpm # yum search postgresql90
# yum -y install postgresql90-server # service postgresql-9.0 initdb # service postgresql-9.0 start
DBの実体は/var/lib/pgsql/9.0/dataになる。
PostgreSQL9.0のインストールと同様に、yumリポジトリーにPostgreSQL9.1を追加してインストールする。[2012-06-04]
# cd /tmp # wget http://yum.postgresql.org/9.1/redhat/rhel-5-x86_64/pgdg-centos91-9.1-4.noarch.rpm # rpm -ivh pgdg-centos91-9.1-4.noarch.rpm # yum search postgresql91
要するに、http://yum.postgresql.org/9.1/redhat/を参照して自分のOSのバージョン・ビット数のpgdg〜.rpmをダウンロードしてくればいい。
(i386が32bitでx86_64が64bit)
# yum -y install postgresql91-server # service postgresql-9.1 initdb # service postgresql-9.1 start
DBの実体は/var/lib/pgsql/9.1/dataになる。
pg_config等の(/usr/binにシンボリックリンクが作られない)コマンドを使いたい場合は、/usr/pgsql-9.1/binをPATHに加える。
参考: tetsuyaiさんのCentOS 5にPostgreSQLをインストールする
PostgreSQLでは、ユーザーとDBにはOracleの様な密接な関係は無いので、別々に作成する。
(ただ、同じ名前にしておくと、psqlの引数を省略できる)
# su - postgres $ createuser hishidama 新しいロールをスーパーユーザとしますか? (y/n)y $ exit # su - hishidama $ createdb mydb --encoding=UTF8
$ psql mydb
mydb=# \l ←DB一覧表示
デフォルトでは、TCP/IP(JDBCとか)による接続が許可されていない。
ローカルホスト内でのTCP/IPによる接続を許可するには以下の様に設定する。(PostgreSQL7と同様)
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 ident
↓
host all all 127.0.0.1/32 trust ←trust(常に信頼する)に変更
変更したら、PostgreSQLを再起動する必要がある。
# /etc/init.d/postgresql restart # service postgresql-9.0 restart # service postgresql-9.1 restart
デフォルトでは、ログ(/var/lib/pgsql/data/pg_log/postgresql-*.log)にはエラーメッセージ等しか出力されない。
(ログのファイル名は、デフォルトでは出力した曜日を表す文字が付く。月曜日の場合、postgresql-MON.log)
エラー発生時に、どのようなSQL文を実行していたかログに出力させることが出来る。
#log_statement = 'none' # none, mod, ddl, all log_statement = 'all' # none, mod, ddl, all ←この設定を追加
変更したら、PostgreSQLを再起動する必要がある。
# /etc/init.d/postgresql restart # service postgresql-9.0 restart # service postgresql-9.1 restart