●前提環境
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 initdbphp.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