MySQLしか使ったことないのですが、案件でPostgresqlを使うことになりまして、CentOS5系にインストールしてみました。
クライアント認証につまづいてなかなか壁を突破できませんでしたがググって頑張りましたよっと。
まず、yumで必要なモジュールをインストール。
[root@localhost ~]# yum install -y postgresql-tcl postgresql-server postgresql-contrib postgresql php-pgsql
今回はPHPとの連動を行うので、下記もインストール
[root@localhost ~]# yum install -y php-pgsql
ひととおりインストールが終わったらpostgresqlを起動。
[root@localhost ~]# /etc/rc.d/init.d/postgresql start
それでは初期設定を行っていく。
MySQLと違って、postgresというユーザーでログインしないと設定が行えない。
[root@localhost ~]# su - postgres
-bash-3.2$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(3 rows)
ユーザー名”test”、パスワード”test” のユーザーを作成する。
権限はデータベースの作成を可能にする。
-bash-3.2$ psql
Welcome to psql 8.1.21, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
postgres=# CREATE USER "test" CREATEDB PASSWORD 'test' LOGIN;
CREATE ROLE
postgres=# \q
-bash-3.2$ exit
logout
[root@localhost ~]#
これで、Linux上のユーザー”test”からPostgresqlを操作できるようになる。
そしたら、”test”ユーザーが使えるデータベース”test”を作成する。
文字コードは”EUC_JP”にする。
[root@localhost ~]# su - test
[test@localhost ~]# createdb test -E EUC_JP
CREATE DATABASE
[test@localhost ~]$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
test | test | EUC_JP
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(4 rows)
[test@localhost ~]$
ちなみにただ単に “creatdb test” とした場合、文字コードはデフォルトで”utf-8″になる。
データベースを削除する場合は、”drop データベース名” とすれば良い。
最後に、PHPなどと連携する場合は、クライアント認証ファイルを編集する必要がある。
[root@localhost ~]# vi /var/lib/pgsql/data/pg_hba.conf #local all all ident sameuser #コメントアウト local all all trust #host all all 127.0.0.1/32 ident sameuser #コメントアウト host all all 127.0.0.1/32 password
postgresqlとapacheを再起動する。
[root@localhost ~]# /etc/rc.d/init.d/postgresql restart Stopping postgresql service: [ OK ] Starting postgresql service: [ OK ] [root@localhost ~]# /etc/rc.d/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
phpファイルを書いて、接続テストする。
<?php
$data = "host=localhost user=test dbname=test password=test";
$pg = pg_connect($data);
if(!$pg){
echo '接続できませんでした。';
}
else{
echo '接続しちゃいました<br />';
}
if(!pg_close($pg)){
}
else{
echo '接続を閉じました。';
}
?>
特に問題なく接続できたら下記のように表示される。
接続しちゃいました 接続を閉じました。
クライアント認証んとこは本当にわかんなくてつまづいたけど、ちゃんと繋がると感動ですね!