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
手順は...▼
●前提環境
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