« Centos6.7x64 ミニマムインストール備忘録 | メイン | linuxでメール送信設定 »

database

PostgreSQL インストール

centos へ PostgreSQL インストールし php から利用するところまで。

●前提環境
cat /etc/redhat-release
CentOS release 6.7 (Final)

cat /proc/version
Linux version 2.6.32-573.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu Jul 23 15:44:03 UTC 2015

uname -a
Linux www.remix.asia 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
手順は...▼
●ノーマルにインストールすると PostgreSQL8.4.20。
[admin@localhost ~]$sudo yum install postgresql-server
初期化。
[admin@localhost ~]sudo /etc/rc.d/init.d/postgresql initdb
php.ini の pgsql.so に関する設定は不要。
●必要であれば設定ファイルを変更。
[admin@localhost ~]sudo mv /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.org
[admin@localhost ~]sudo cp /var/lib/pgsql/data/postgresql.conf.org /var/lib/pgsql/data/postgresql.conf
[admin@localhost ~]sudo chown postgres:postgres /var/lib/pgsql/data/postgresql.conf
[admin@localhost ~]sudo vi /var/lib/pgsql/data/postgresql.conf
変更点。
[admin@localhost ~]$ sudo diff /var/lib/pgsql/data/postgresql.conf.org /var/lib/pgsql/data/postgresql.conf
59c59
< #listen_addresses = 'localhost'       # what IP address(es) to listen on;
---
> listen_addresses = '*'                # 他のホストから接続する場合
248c248
< log_filename = 'postgresql-%a.log'    # log file name pattern,
---
> log_filename = 'postgresql.log'       # /var/lib/pgsql/data/pg_log/postgresql.log へ出力する場合
334c334
< #log_line_prefix = ''                 # special values:
---
> log_line_prefix = '%t %u %d '         # ログのフォーマットを 日時 ユーザー DB ~とする場合
353c353
< #log_statement = 'none'               # none, ddl, mod, all
---
> log_statement = 'all'                 # SQL文もログ出力する場合
●OS起動時に自動起動する場合。
[admin@localhost ~]$ chkconfig --list | grep postgres
[admin@localhost ~]$ sudo chkconfig postgresql on
[admin@localhost ~]$ chkconfig --list | grep postgres
●PostgreSQLサーバーを起動。
[admin@localhost ~]$ sudo service postgresql start
●もう一つのシェルでログを見ながら動作確認。
[admin@localhost ~]$ sudo tail -f /var/lib/pgsql/data/pg_log/postgresql.log
●通常作業している admin をデータベースのユーザーとして追加。
[admin@localhost ~]$ su -
[root@localhost ~]# su - postgres

-bash-4.1$ createuser admin
Shall the new role be a superuser⁄ (y/n) y ← 管理者権限で
-bash-4.1$ exit
[root@localhost ~]# exit
●シェルのユーザー admin に戻った状態で、データベースインスタンスを作成可能に。
[admin@localhost ~]$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
(3 rows)
[admin@localhost ~]$ createdb testdb
[admin@localhost ~]$ psql -l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 testdb    | admin    | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
●データベースインスタンス testdb にテーブル testtbl 作成。
[admin@localhost ~]$ psql testdb
psql (8.4.20)
Type "help" for help.

testdb=# create table testtbl ( no int,name text );
CREATE TABLE

testdb=# \d
        List of relations
 Schema |  Name   | Type  | Owner
--------+---------+-------+-------
 public | testtbl | table | admin
(1 row)

testdb=# \d testtbl
    Table "public.testtbl"
 Column |  Type   | Modifiers
--------+---------+-----------
 no     | integer |
 name   | text    |
PostgreSQL 固有の主ななコマンド。
\l	インスタンス一覧
\d	テーブル一覧
\du	ユーザー一覧
\z	アクセス権限確認
\c	インスタンス接続
●テーブル testtbl へ1レコード追加。
testdb=# INSERT INTO testtbl (no,name) values (1,'taro');
INSERT 0 1
●psql から抜ける。
testdb-# \q
●PHP から PostgreSQL を利用するため php-pgsql をインストール
[admin@localhost ~]$ sudo yum install php-pgsql
●apache 再起動。
[admin@localhost ~]$ sudo service httpd restart
●phpプログラムサンプル。
[admin@localhost ~]$ vi postgres.php
<?php
$c = pg_connect( 'dbname=testdb user=admin' );
print_r( pg_fetch_all( pg_query( $c, 'SELECT * FROM testtbl' ) ) );
pg_close( $c );
●実行結果。
[admin@localhost ~]$ php -f postgres.php
Array
(
    [0] => Array
        (
            [no] => 1
            [name] => taro
        )

)
●host や password を指定した php プログラムサンプルの場合。
<?php
$c = pg_connect("host=localhost dbname=testdb user=admin password=admin");

print_r( pg_fetch_all( pg_query( $c, 'SELECT * FROM testtbl' ) ) );
pg_close( $c );
●postgreSQL の ユーザー admin にパスワード 'admin' を設定。
[admin@localhost ~]$ psql testdb
psql (8.4.20)
Type "help" for help.

testdb=# ALTER USER admin WITH PASSWORD 'admin';
ALTER ROLE
●接続認証の設定
[admin@localhost ~]$ sudo mv /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.org
[admin@localhost ~]$ sudo cp /var/lib/pgsql/data/pg_hba.conf.org /var/lib/pgsql/data/pg_hba.conf
[admin@localhost ~]$ sudo chown postgres:postgres /var/lib/pgsql/data/pg_hba.conf
[admin@localhost ~]$ sudo vi /var/lib/pgsql/data/pg_hba.conf
変更点。
[admin@localhost ~]$ sudo diff /var/lib/pgsql/data/pg_hba.conf.org /var/lib/pgsql/data/pg_hba.conf
pg_hba.conf
74c74
< host    all         all         ::1/128               ident
---
> host    all         all         ::1/128               password
●設定を反映。
[admin@localhost ~]$ sudo service postgresql reload

トラックバック

このエントリーのトラックバックURL:
http://www.remix.gr.jp/cgi/mt/mt-tb.cgi/7487

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)