PostgreSQLのインストール・設定

更新:

PostgreSQLのインストール・設定方法。
対象:Linux Fedora, RedHat

PostgreSQLのインストール・設定
  • PostgreSQL関連サイト
    https://www.postgresql.org/
    http://www.postgresql.jp/
  • インストール関連情報
    rpmyum、apt-gettar.gzmake installシェル・環境変数
  • PostgreSQLのインストール
    useradd postgres
    chown postgres:postgres /usr/local/src/postgresql-7.4.6/
    mkdir /usr/local/pgsql
    chown postgres:postgres /usr/local/pgsql
    
    vi ~/.bash_profile
    	export PATH="$PATH":/usr/local/pgsql/bin
    	export PG_HOME=/usr/local/pgsql
    	export PGLIB=$PG_HOME/lib
    	export PGDATA=$PG_HOME/data
    	export MANPATH="$MANPATH":$PG_HOME/man
    	export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
    	
    	#Javaを使う場合
    	export ANT=/usr/local/ant/bin/ant
    	export CLASSPATH=/usr/local/ant/lib/ant.jar \
    		:/usr/local/jaxp-1.1/jaxp.jar \
    		:/usr/local/jaxp-1.1/crimson.jar \
    		:/usr/local/jaxp-1.1/xalan.jar
    
    ./configure --enable-multibyte=EUC_JP \
    	--with-perl \
    	--with-java
    
    make
    make install
    initdb
    
    vi /usr/local/pgsql/data/postgresql.conf
    	tcpip_socket = true (JDBCなどを使う場合には必要)
    	silent_mode = true
    	ssl = true (ssl通信を行う場合(証明書などが必要))
    	syslog = 2 # range 0-2 (ログをsyslogに出力する為に必要)
    	syslog_facility = 'LOCAL0'
    
    起動
    /usr/local/pgsql/bin/pg_ctl start
    停止
    /usr/local/pgsql/bin/pg_ctl stop
    
  • 自動起動スクリプト
    起動スクリプトファイルがない場合は自分で作る。
    vi /etc/rc.d/init.d/postgres
    	#!/bin/sh
    	#
    	# postgres - This script is used to start/stop 
    	#            the postgreSQL listener process.
    	# chkconfig: 345 85 15
    	# description: Starts and stops the PostgreSQL backend daemon\
    	#              that handles all database requests.
    	# processname: postmaster
    	PGACCOUNT="postgres"
    	PGDATA="/usr/local/pgsql/data"
    	POSTMASTER="/usr/local/pgsql/bin/postmaster"
    	PG_CTL="/usr/local/pgsql/bin/pg_ctl"
    	# Source function library.
    	. /etc/rc.d/init.d/functions
    	#
    	case "$1" in
    		start)
    			echo -n "Starting postgres: "
    			su - $PGACCOUNT -c "$POSTMASTER -i -S -D $PGDATA start"
    			echo
    			touch /var/lock/subsys/postgres
    			;;
    		stop)
    			echo -n "Stopping postgres: "
    			su - $PGACCOUNT -c "$PG_CTL -w -D $PGDATA -m f stop"
    			echo
    			rm -f /var/lock/subsys/postgres
    			;;
    		*)
    		echo "Usage: $0 {start|stop}"
    		exit 1
    	esac
    	exit 0
    
    パーミッション変更
    chmod 755 /etc/rc.d/init.d/postgres
  • 自動起動設定・ランレベル
    設定ON
    chkconfig postgres on または chkconfig --add postgres
    設定確認
    chkconfig --list postgres
  • 起動・終了
    起動
    /usr/local/pgsql/bin/pg_ctl start または service postgres start
    終了
    /usr/local/pgsql/bin/pg_ctl stop または service postgres stop
  • サンプルのデータベース作成
    postgresを操作できるユーザでアクセス。
    	su - postgres
    testdbというデータベースを作成。
    	createdb testdb
    testdbにログイン。
    	psql testdb
    testtableというテーブルを作成。
    	create table testtable(
    		id   int2,
    		name text);
    テーブルに値を入れる。
    	insert into testtable values('1','test1');
    	insert into testtable values('2','test2');
    	insert into testtable values('3','test3');
    	insert into testtable values('4','テスト4');
    入れた値を表示。
    	select * from testtable;
    入れた値を削除。
    	delete from testtable where id=4;
    
  • JDBCを使う場合
    JDBCは、JSP、サーブレットからpostgresを使う場合に必要なのでインストールします。
    su - postgres
    cd /usr/local/src/postgresql-7.4.6/src/interfaces/jdbc/
    make
    cp jars/postgresql.jar $JAVA_HOME/jre/lib/ext
    cp jars/postgresql.jar $TOMCAT_HOME/common/lib
    
    postmasterを起動する際は、
    postmaster -i -S
    というように、-i をつけないとJavaから接続できません。
    上記起動スクリプト参照。
  • ユーザー追加、削除
    su - postgres
    
    ユーザ追加
    createuser testuser
    	Shall the new user be allowed to create databases? (y/n) n
    	Shall the new user be allowed to create more new users? (y/n) n
    
    ユーザ削除
    dropuser testuser
    
  • nobodyユーザ追加、権限追加
    nobodyユーザでデータベースにアクセスさせるには、以下のようにします。
    su - postgres
    createuser nobody
    grant all on テーブル名またはDB名 to nobody
    
このエントリーをはてなブックマークに追加